hallo, ich hab nun schon seit längerem das Problem, dass ich meinen Controller nicht mehr flashen kann. Im RAM funktioniert alles super. Runterspielen und debuggen; alles kein Problem. Ich arbeite mit ubuntu, eclipse, openocd, openocd-usb, gcc, usw. Das Problem hab ich auch schon vor längerer Zeit im openocd-forum gepostet, jedoch ohne resonanz. http://forum.sparkfun.com/viewtopic.php?t=13895 Ich hoffe, dass mir hier jemand weiterhelfen kann. Ich weiß absolt nicht, wo ich da zum Fehlersuchen beginnen soll. Die toolchain hab ich mir bis auf eclipse selber compiliert. lg, Karl
hallo, lt. eclipse output versucht der debugger einen software breakpoint auf eine adresse im flash zu setzen, was mit openocd aber sicher nicht funktioniert. ich habe zwar keine ahnung von einer linux-umgebung aber das das debuggen vor der linux-neuinstallation funktioniert hat kann ich mir nicht vorstellen. da hast du an den einstellungen des gdb etwas geändert (oder das passiert bei einer linux-neuinstallation?)? gruss gerhard
>... > http://forum.sparkfun.com/viewtopic.php?t=13895 >... Warning am Anfang der Ausgabe deutet darauf hin, daß gdb nicht mit XML support zusammengebaut wurde. Damit funktioniert die recht praktische Funktion gdb_memory_map nicht, mit der der Speicherbereich für Flash und RAM und somit die Notwendigkeit für SW und HW-Breakpoints zwischen OpenOCD und Client ausgetauscht wird. Weiteres dann Folgefehler/-probleme. Man kann irgendwie OpenOCD auch manuell vorgeben, ob HW oder SB BP erzwungen werden sollen, habe diese Funktion aber nicht mehr genutzt, seit gdb_memory_map existiert. > Die toolchain hab ich mir bis auf eclipse selber compiliert. Nur Vorschlag: gdb configure nochmal neu laufen lassen (vorher aufräumen), Ausgabe genau anschauen, falls expat-Library (libexpat.a o.ä., nicht genau in der Erinnerung) nicht automatisch gefunden wird, nachsehen ob diese überhaupt installiert ist, gegf. installieren, dann noch evtl. bei configure mit --with-libexpat-prefix Hinweis auf Ablageort geben. Zum eigentlichen Problem: Ob die Einstellungen für Flash-Setup und Working-Area überhaupt stimmen, kann man wegen fehlender Angaben nicht beurteilen. Zum SAM7A3 müßte aber ohnehin jemand anderes Hinweise aus erster Hand geben, selbst nur mit S und SE etwas gemacht.
Vielen Dank euch beiden erstmal. @Gerhard: Das debuggen im Flash hat vorher wunderbar funktioniert! Ganz ehrlich! @Thomas: gdb configure schau ich mir gleich nochmal an. Die Einstellungen an sich sollten ja passen. Also Reset-Skript und config-Skript für openOCD. "Memory-Map"-file sollte ja auch passen. Ist direkt von ATMEL und hat ja alles schon mal prima funktioniert. Du hast gemeint, dir fehlen Angaben. Was musst du denn wissen, um mehr sagen zu können? Ich muss ehrlich gestehen, dass ich da noch nicht so den Durchblick habe, was da alles genau passiert. Wo ist zB der Unterschied zwischen HW und SW Breakpoints? Seltsamerweise wird ja nichteinmal das aktuelle Programm im Flash überschrieben! D.h. das Programm das jetzt im Flash ist, läuft selbst nach dem "flashen" als ob nie was gewesen wäre. Ich bin echt froh, dass sich endlich einmal ein paar "Profis" meinem Problem widmen. Vielen Dank! Ich hoffe, wir werden das gemeinsam hinbringen!
Hab nun probiert, den gdb neu zu kompilieren und installieren. Leider funktioniert da etwas mit der libexpat nicht. libexpat1 war schon am system installiert (standardmäßig) und libexpat1-dev hab ich sicherheitshalber mal nachinstalliert (mit dem Paketmanager). ich habe nun im wesentlichen folgendes ausgeführt: $ sudo make clean $ sudo ./configure --target=arm-elf --prefix=/usr/local/arm7/ --with-expat=yes $ sudo make all install hier kommt nun eine Fehlermeldung: ... checking whether to use expat... yes checking for ld used by GCC... (cached) ld checking if the linker (ld) is GNU ld... (cached) yes checking for shared library run path origin... (cached) done checking for libexpat... (cached) no configure: error: expat is missing or unusable make[1]: *** [configure-gdb] Error 1 make[1]: Leaving directory `/home/karl/Projektseminar/GNU_ARM_Toolchain/linux/build-gdb' make: *** [all] Error 2 Mit dieser Fehlermeldung konnte ich leider nichts anfangen. Auch google bracht mir keine direkten Hinweise. Ich bin auch leicht verwirrt, weil der Paketname einen '1'er angehängt hat. also libexpat1. kann das möglicherweise stören? Beim installieren hab ich mich zum großteil an die Anleitung von Adam Pierce gehalten. Hier meine Installationsanleitung:
1 | Installieren der gnu-arm toolchain auf ubuntu 8.04.1 LTS |
2 | |
3 | Inhalt: |
4 | 1) binutils |
5 | 2-4) gcc |
6 | 5) newlib |
7 | 6) gdb |
8 | 7) eclipse cdt |
9 | 8) zylin embedded cdt plugin |
10 | 9) openocd |
11 | |
12 | |
13 | Dazu benötigen wir die Sorucen von www.gnuarm.com für |
14 | binutils-2.17, gcc-4.1.1 und newlib-1.14.0 |
15 | Von http://ftp.gnu.org/gnu/gdb/ laden wir uns die Sourcen für den GNU Debugger (gdb-6.8) herunter. |
16 | |
17 | |
18 | packages installieren: |
19 | ------------------------ |
20 | $ sudo apt-get install libc6-dev |
21 | wird benötigt, um den configure befehl ausführen zu können. |
22 | |
23 | |
24 | 1) binutils compilieren und installieren |
25 | $ tar jxvf binutils-2.17.tar.bz2 |
26 | $ mkdir build-binutils |
27 | $ cd build-binutils |
28 | $ ../binutils-2.17/configure --target=arm-elf --prefix=/usr/local/arm7 |
29 | $ sudo make all install |
30 | |
31 | 2*) ubuntu im recovery mode starten und als root arbeiten |
32 | Muss deswegen gemacht werden, da mit dem sudo Befehl die binaries nicht direkt verwendet werden können. |
33 | Ist ein bekanntes Problem (siehe Internet). |
34 | |
35 | 3) die im Punkt 1 installierten binaries im PATH eintragen |
36 | $ export PATH=$PATH:/usr/local/arm7/bin |
37 | |
38 | 4) gcc kopilieren und installieren |
39 | In das Verzeichnis wechseln, in dem die Sourcecode Tarballs liegen. |
40 | $ tar jxvf gcc-4.1.1.tar.bz2 |
41 | $ mkdir build-gcc |
42 | $ cd build-gcc |
43 | $ ../gcc-4.1.1/configure --target=arm-elf --prefix=/usr/local/arm7 --enable-languages=c --with-newlib |
44 | $ sudo make all-gcc install-gcc |
45 | |
46 | *) Statt Punkt 2) und können wir auch folgendes machen: |
47 | In die datei ~/.bashrc wird ganz unten folgendes hinzugefügt: |
48 | PATH=$PATH:/usr/local/arm7/bin |
49 | alias sudo='sudo env PATH=$PATH' |
50 | Somit ist der PATH auch unter sudo bekannt, sonst würde der securepath verwendet werden. Siehe dazu |
51 | https://bugs.launchpad.net/ubuntu/+source/sudo/+bug/50797 |
52 | Neustart der Konsole nicht vergessen! |
53 | |
54 | 5) newlib kompilieren und installieren (standard c Bibliothek) |
55 | Unter Ubuntu 8.04 müssen wir einen Patch auf die configure datei anwenden: |
56 | |
57 | Dieser Patch ist downloadbar unter: |
58 | http://kriewitz.eu/projects/gnuarm/newlib-1.14.0-missing-makeinfo.patch |
59 | Dieser Patch wird auch im Verzeichnis mit den Tarballs abgelegt. |
60 | |
61 | |
62 | Wir gehen also wie folgt vor: |
63 | |
64 | $ sudo apt-get install texinfo |
65 | $ sudo apt-get install patch |
66 | |
67 | $ tar xzvf newlib-1.14.0.tar.gz |
68 | $ cd newlib-1.14.0 |
69 | $ patch configure ../newlib-1.14.0-missing-makeinfo.patch |
70 | |
71 | $ cd .. |
72 | $ mkdir build-newlib |
73 | $ cd build-newlib |
74 | $ ../newlib-1.14.0/configure --target=arm-elf --prefix=/usr/local/arm7 |
75 | $ sudo make all install info |
76 | |
77 | 6) GNU Debugger kompilieren und installieren |
78 | |
79 | $ sudo apt-get install ncurses-dev |
80 | |
81 | $ tar xzvf gdb-6.8.tar.gz |
82 | $ mkdir build-gdb |
83 | $ cd build-gdb |
84 | $ ../gdb-6.8/configure --target=arm-elf --prefix=/usr/local/arm7 |
85 | $ sudo make all install |
86 | |
87 | 7) Eclipse CDT Genymade installieren: |
88 | http://flurdy.com/docs/eclipse/install.html |
89 | |
90 | 8) Zylin Embedded CDT Plugin installieren: |
91 | Eclipse Starten und auf Help->Software Updates gehen. |
92 | Available Software -> Add Site: |
93 | http://www.zylin.com/zylincdt |
94 | Install! |
95 | |
96 | 9) openOCD installieren |
97 | $ sudo apt-get install libftdi0 |
98 | $ sudo apt-get install subversion |
99 | $ sudo apt-get install autoconf |
100 | $ sudo apt-get install automake |
101 | Bin mir nicht sicher ob folgendes Package notwendig ist: |
102 | $ sudo apt-get install libftdi-dev |
103 | |
104 | Check out SVN 977: |
105 | ($ svn co http://svn.berlios.de/svnroot/repos/openocd) |
106 | Für neuere Versionen sind wieder Änderungen in dem Config-File notwendig. |
107 | Derzeit liegt keine Notwendigkeit für eine Neuere Version vor. Die 977er funktioniert sehr gut. |
108 | |
109 | $ cd openocd/trunk |
110 | $ ./bootstrap |
111 | $ ./configure --enable-parport --enable-ft2232-libftdi |
112 | $ make |
113 | $ sudo make install |
114 | $ make clean |
115 | |
116 | OpenOCD kann nun mit dem openOCD-USB (embedded-projects.net) gestartet werden: |
117 | /GNU_ARM_Toolchain$ sudo openocd -f openocd-usb.cfg |
118 | Immer mit sudo starten!! |
119 | |
120 | |
121 | 10) Als terminal empfielt sich GTK-Term |
122 | |
123 | |
124 | |
125 | |
126 | Referenzen: |
127 | http://www.doctort.org/adam/index.php?s=arm-elf-gcc |
128 | http://www.doctort.org/adam/nerd-notes/arm-helloworld.html |
129 | http://shop.embedded-projects.net/product_info.php?info=p75_OpenOCD-USB-Adapter.html |
130 | http://www.atmel.com |
131 | http://developer.berlios.de/projects/openocd/ |
132 | http://www.ubuntu.com |
Sollte ich vielleich nochmals die komplette Iinstallation neu machen? lg, Karl
>...Was musst du denn wissen, um mehr sagen zu können? Alle Angaben, die OpenOCD gegeben werden (per -f, -c und evtl. implizit, also openocd.cfg). >...Wo ist zB der Unterschied zwischen HW und SW Breakpoints? HW-BP notwendig für Anwendung im Flash-Speicher, gibt nur wenig davon. Ist eine Besonderheit des Cores. Die ARM-Techn.-Library sowie beherztes googlen sollten ausreichend Information dazu liefern. >...Seltsamerweise wird ja nichteinmal das aktuelle Programm im Flash >überschrieben! Evtl. wird gar nicht geflasht. Im Zweifel erstmal per Telnet-Interface OpenOCD ausprobieren (erase, write, verify). Vgl. OpenOCD Dokumentation. Damit wäre dann auch getestet, ob flashen auf SAM7A3 unterstützt wird. >...checking for libexpat... (cached) no gibt es eine Datei libexpat.a oder libexpat.la im System? Wenn ja per o.g. Option (...prefix...) beim configure den Pfad angeben. Im Moment grade keinen Zugriff auf meine Toolchain-Zusammenbau-Rechner, kann also nicht nachschauen, würde aber ohnehin nicht helfen da mingw/msys/WinXP. >...Check out SVN 977 Ist ziemlich alt. Es gibt inzwischen auch eine "offizelle" Version 0.1.0. Unterstützung von den wirklichen OpenOCD-Profis (=OpenOCD ML) wird wahrscheinlich für Fragen zur alten Version eher spärlich ausfallen.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.