Hallo Zusammen, ich arbeite an einer SPS-Runtime für µC, weiß jemand ob und wie es möglich ist z. B. auf einem atmega128 durch ein bootladeränliches Programm Hex-Code nachzuladen und zu verwenden ? viele Grüße Wolfgang
Beim Uploaden wird dem AVR-Bootloader ja die Zieladresse aus dem Hexfile mitgeteilt. So sollten also Teile des Flashes, welche natürlich nicht durch festen Programmcode (SPS-Anwendung bzw. Bootloader) belegt sein dürfen, für SPS-Anweisungen mit einem gewöhnlichen Bootloader nachladbar sein. Denk an die pageweise Aufteilung im AVR-Flash. Der Adressoffset für die SPS-Anweisungen muss also ein Vielfaches der Pagegröße sein. Deine SPS-Anweisungen schreibst als HEX-File mit dem nötigen Adressoffset. Oder Du schreibst erstmal in ein Binärfile, welches Du mit einem BIN2HEX-Tool HEXelst. Da geht z.B. http://www.keil.com/download/docs/113.asp Der Aufruf mit einem Offset von 0x2800 wäre dann: bin2hex.exe /O0x2800 input.bin im C-File dann: #include <avr/pgmspace.h> void mySpsFunc(void){ PGM_P SpsAdr = (PGM_P)0x2800; uint8_t SpsDta; while(1){ SpsDta = pgm_read_byte(SpsAdr++); /* ... Weiterer Code ... */ } } Gruß Frank
Hallo Frank, vielen Dank für deinen kompetenten ausführlichen Beitrag Gruß Wolfgang
Antwort schreiben
Bitte melde dich an, um einen Beitrag zu schreiben.