Forum: Mikrocontroller und Digitale Elektronik SPS Runtime für µC


von Wolfgang G. (bitfix)


Lesenswert?

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

von Frank N. (betafrank)


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

von Wolfgang G. (bitfix)


Lesenswert?

Hallo Frank,

vielen Dank für deinen kompetenten ausführlichen Beitrag

Gruß

Wolfgang

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.