Bootloader-Test; großes Hex-File erzeugen

OP #4827388
Lesenswert?

Hallo,

ich habe für ein Projekt den Atmel-Bootloader,
Link:
www.atmel.com/images/Atmel-8242-XMEGA-Boot-Loader-Quick-Start-Guide_Appl 
icationNote_AVR1605.pdf

angepasst und eine eigene PC-Software zum Flashen geschrieben. Um das 
ganze für Controller mit Flash > 64k zu testen muss ich irgendwie ein 
Hex-File erzeugen, das etwas Sinnvolles macht (UART-Ausgabe, Blinken 
oder was auch immer) und das auch noch groß genug ist, damit im Hex-File 
ein Record mit Typ 2 auftaucht, also mehr als 64k Programmspeicher 
belegt. Gibt es ein probates Mittel, mit wenig Aufwand viel Speicher zu 
verbrauchen, ohne tausend mal

1
uart_puts(PSTR("kjhkjhkjhkhkjh"));

zuschreiben?

Grüße, Alex
Gast #4827420
Lesenswert?

Hallo,

schau dir doch mal http://srecord.sourceforge.net an. Damit solltest du 
hoffentlich erreichen können, was du willst.

Ich würde vorschlagen mit -random-fill Daten nach den eigentlich 
Instruktionen erzeugen und mit deinem Bootloader hochladen. 
Anschliessend kannst du den Speicher wieder über den Programmer auslesen 
und miteinander vergleichen.

CU,
Jay
Gast #4827434
Lesenswert?

Einfach ein großes Array anlegen:
1
#include <stdio.h>
2

3
#define A B B B B B B B B B B B B B B B
4
#define B C C C C C C C C C C C C C C C
5
#define C D D D D D D D D D D D D D D D
6
#define D E E E E E E E E E E E E E E E
7
#define E F F F F F F F F F F F F F F F
8
#define F G G G G G G G G G G G G G G G
9
#define G 0xabcd,
10

11
int main()
12
{
13
    int foo[] = {A 0};
14
    /* ... */
15
}
Gast #4827574
Lesenswert?

Alexander H. schrieb:
> danke für den Hinweis. Allerdings hab ich das noch nie eingebunden.
> Kannst Du mit einen Tipp bzw. Link nennen, wie das funktioniert?

Unter Linux oder Cygwin gibt es dafür das Tool "xxd". Mit xxd -i kann 
man C-include-Files aus Binärdaten erzeugen, die man einfach mit 
#include in den Source einbindet.

Damit kann man außerdem (konstante) Dateien einbinden, ohne ein 
Dateisystem zu brauchen. Die spricht man ganz einfach als char-Array an. 
xxd legt außerdem eine weitere Variable mit der Länge des Arrays an, so 
daß man die Datei auch aktualisieren kann (zur Compilierzeit), ohne daß 
man den Rest des Sourcecodes ändern muß, wenn man die Arraylänge über 
diese Variable abfragt.

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