Forum: Compiler & IDEs LUT für AVR erzeugen und im Flash ablegen


von Moritz G. (mbydq2)


Lesenswert?

In einem AVR ATmega328 möchte ich eine CRC-10 Korrektur durchführen.
Für die Korrektur benötige ich die Zuordnung der Syndrome zu den 
wahrscheinlichsten Fehlern, dies geht wohl nur per Tabelle im 
Flashspeicher.
Ich habe eine C-Funktion geschrieben um den Array zu erstellen, aber wie 
bekomme ich den Compiler dazu diese zu interpretieren und dann nur das 
Ergebnis in das Programm zu speichern?
Der Optimierer löscht doch Code der schon vor der run-time ausgeführt 
werden kann.
for(n von 1 bis 3) array[n-1] = n;
ist wie:
array = {1,2,3};
Kann man das nutzen?
Im Moment sehe ich nur die Möglichkeit die Funktion von einem 
Kommandozeilenprogramm auf einem PC ausführen zu lassen und dieses eine 
Textdatei mit den Ergebnissen erstellen zu lassen.

[ generieren PROGMEM makro präprozessor preprocessor Lookup-Table ]

von Wolfgang H. (Gast)


Lesenswert?

Hi, Moritz,

habe ich richtig verstanden: Nach dem Brennen des Anwendungsprogramms 
soll dies anlaufen, die Daten des LUT erzeugen, der Bootloader soll noch 
mal anspringen und diese Daten in den Flash des Anwenungsprogramms 
brennen?

Das halte ich für so wenig ausgeschlossen, wie eine Application Note von 
Atmel die Nutzung des Programm-Flash als Datenspeicher beschreibt.

Aber was hindert Dich, die Berechnung der Konstanten "out zu sourcen" an 
PC mit Excel und dann ein #include-Datei mit den Konstanten zu erzeugen, 
die der Compiler mit Leichtigkeit einbindet?

Bisher hatte ich nur so kleine Datenmengen, dass Copy-n-Paste aus Exel 
in den c-Editor einfacher schien als die Entwicklung eines Programms 
dafür.

Ciao
Wolfgang Horn

von Moritz G. (mbydq2)


Lesenswert?

> habe ich richtig verstanden: Nach dem Brennen des Anwendungsprogramms
> soll dies anlaufen, die Daten des LUT erzeugen, der Bootloader soll noch
> mal anspringen und diese Daten in den Flash des Anwenungsprogramms
> brennen?

Nein, nicht der µC soll die Tabelle erzeugen sondern der compilierende 
PC.

> Aber was hindert Dich, die Berechnung der Konstanten "out zu sourcen" an
> PC mit Excel und dann ein #include-Datei mit den Konstanten zu erzeugen,
> die der Compiler mit Leichtigkeit einbindet?

Mich hindert, dass ich nicht weiß wie ich es mit einem 
Tabellenverarbeitungsprogramm hin bekommen soll, ich aber einen Teil des 
Algorithmus [Modulo im GF(2)] schon für das Programm geschrieben habe.

> Bisher hatte ich nur so kleine Datenmengen, dass Copy-n-Paste aus Exel
> in den c-Editor einfacher schien als die Entwicklung eines Programms
> dafür.

Es ist im Grunde auch nicht viel. Es ist ein CRC-10 mit 1586 Syndromen 
mal zwei Byte für die Fehlerpositionen.

von Johann L. (gjlayde) Benutzerseite


Lesenswert?

Moritz G. schrieb:

> Mich hindert, dass ich nicht weiß wie ich es mit einem
> Tabellenverarbeitungsprogramm hin bekommen soll, ich aber einen Teil des
> Algorithmus [Modulo im GF(2)] schon für das Programm geschrieben habe.

Wenn du es für ein C-Programm machst und also C beherrschst, schreib 
doch einfach ein kleines C-Programm auf dem PC und fertig.

Wozu der Overkill mit einem Tabellenverarbeitungsprogramm und dem ganzen 
Umformatierungs-Krampf?

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.