Hallo,
zur Fehlerausgabe habe ich mir eine "assert"-Funktion geschrieben, die
im Fehlerfall aufgerufen wird. Dieser Funktion wird die Funktionsadresse
und weitere Parameter übergeben, welche diese Informationen dann über
die RS232 verschickt.
Hier ein Codeausschnitt, der sich auf das wesentliche beschränkt:
1 | void assert(uint16_t u16_adress)
|
2 | {
|
3 | uart0_putlong((Uint32) u16_adress);
|
4 | }
|
5 |
|
6 | void test1(void)
|
7 | {
|
8 | ...
|
9 | //Fehler
|
10 | assert((uint16_t) test1);
|
11 | }
|
Hier ein Ausschnitt aus einem Map-File:
1 | .text 0x000005dc 0xeec ./fat.o
|
2 | 0x0000086c fat_loadSector
|
3 | 0x000013ba fat_loadFileDataFromDir
|
4 | 0x00000648 fat_loadRowOfSector
|
5 | 0x000006b0 fat_loadFatData
|
6 | 0x000005dc fat_clustToSec
|
Die Ausgabe erfolgt, aber die Funktions-Adresse passt nicht mit den
Angaben der Map-File (*.map) überein.
Seht ihr, was ich falsch mache?
(Ich verwende ATmega128, Eclipse, Win7.)
Gruß
Ben