SPS Runtime für µC

#1617936
Lesenswert?

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

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren