Ich habe ein selbst erstelltes LPC1768 Board (ARM Cortex-M3) mit einer JTAG-Schnittstellte. Dafür habe ich mir den ARM-USB-TINY-H Adapter von Olimex zugelegt. Zuerst habe ich es mit Eclipse, Yagarto und OpenOCD versucht, was nach einiger Zeit dann auch klappte (Flashen & Debuggen). Ich habe nun gesehen, dass es aber auch viel einfacher mit der IDE von CooCox geht. Dort gibt es alles vorkonfiguriert für meinen uC. Ich habe alles nach der anleitung auf olimex.com (https://www.olimex.com/Products/ARM/JTAG/_resources/How_to_run_CooCox_with_Olimex_JTAGs_v2.pdf) eingerichtet. Nur das CoIDE nun in der Version 1.6.2 vorliegt. Leider funktioniert es nicht. Wenn ich entweder mit CoIDE versuchen will du debuggen/flashen/löschen kommt die Fehlermeldung "Can NOT stop MCU!!". Wenn ich dann CoFlash verwende, kommt exakt der gleiche Fehler. Daraufhin habe ich mit den Resetmoden und mit der Geschwindigkeit rumgespielt. Bei 100KHz hat es aufeinmal bei "erase" geklappt. Danach wieder nicht. Es klappt anscheinend nur seeeeeehr selten :( Hat jemand Erfahrung und Ratschläge für mich? Im Anhang ist noch der Schaltplan meiner JTAG Schnittstelle. Dahinter ist noch ein Adapter (selbstgemacht) von 10-20 polig. Wie gesagt, mit Eclipse klappt alles. Wahrscheinlich, weil ich dort im Script noch folgendes eingetragen habe: # project file for firmware flash source [find target/lpc1768.cfg] reset_config srst_only adapter_khz 500 init sleep 200 reset halt wait_halt mww 0x400FC040 0x01 sleep 200 flash write_image erase main.bin #verify_image main.bin reset run shutdown Nachtrag: ich habe es mal an einem Hitex LPC1768 Stick versucht. Litze direkt an Chip gelötet. Erstmal das gleiche Problem. Danach mehrmals Reset Taste gedrückt. In Eclipse ein anderes Programm eingespielt -> und was passiert. In CoFlash kann ich aufeinmal löschen usw. Wenn ich aber einmal die Spannungsversorge des uC kappe und wieder verbinde, muss ich wieder hin und her probieren bis es mal wieder klappt und er den uC anhalten kann. Es geht anscheinend auch nur mit 100KHz. Ich denk mal es liegt an wait Befehle oder so. Wo kann man diese einfügen? Nachtrag2: Es "scheint" wohl an der Leitungslänge zw. JTAG Adapter und JTAG Schnittstelle zu liegen. Wenn ich die Leitungen verkürze und meinen selbstgebastelten 10 auf 20 pol Adapter überspringe gehts schon etwas besser und er schafft es öfters zu flashen/erasen.... Nachtrag + Lösung (Quick&Dirty) - englisch: I've found a solution for my problem, maybe the CoCoox could integrate this method into Coflash/IDE for LPC1768/Olimex: 1. Power on the lpc1768 Board (own design), jtag cable already plugged in (discovered: length doesnt matter!!!) 2. Hold down the Reset button 3. press a action button (erase/verify/ ...) and wait until error message "can not stop mcu" appears 4. release reset button and press action button again -> works! 5. after this, everything works, until the board is unpowered -> do the method again
> adapter_khz 500
Try something much lower like 50 or 10.
You "reset button foddeling" seems to indicate incorrect reset line
handling. Check these connections, e.g. with the OpenOCD command
1 | jtag_reset 0 1 |
Works best when you program lights up a LED - it should go dark when in reset. Auf Deutsch: Reset prüfen. Obiges Kommando soll den den SRST low ziehen. Bei längeren JTAG Leitungen kann es passieren, dass man die Frequenz deutlich verringern muss. Achtung: Wie viele andere Cortex M3 können LPC17xx nicht im Deep Sleep oder Power down debuggt werden.
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.