Ich habe kürzlich eine Leiterplatte für einen Kunden entworfen, alles ist in Ordnung mit der Hardware und Software (die Anwendung funktioniert so, wie sie soll). Jetzt müssen wir das Programm im Mikrocontroller aktualisieren. Da diese Leiterplatten jedoch an verschiedenen Orten auf der Welt installiert sind, ist es ideal, einen Bootloader zu installieren und denselben UART zu verwenden, der von der Anwendung verwendet wird.
Board-Beschreibung
- AT32UC3L032
- Ein UART wurde bereits für die Kommunikation zwischen Karte und PC verwendet
- Ein paar I / Os für die Anwendung
- Einige Status-LEDs
Relevante PINS und Konfig
PA01 # Used for entering ISP with high level
PA20 # Used for application and ISP UART
PA21 # Used for application and ISP UART
#define COM_USART (&AVR32_USART2)
#define COM_USART_RX_PIN AVR32_USART2_RXD_0_0_PIN
#define COM_USART_RX_FUNCTION AVR32_USART2_RXD_0_0_FUNCTION
#define COM_USART_TX_PIN AVR32_USART2_TXD_0_0_PIN
#define COM_USART_TX_FUNCTION AVR32_USART2_TXD_0_0_FUNCTION
#define COM_USART_IRQ AVR32_USART2_IRQ
#define COM_USART_BAUDRATE 115200
Benutztes Werkzeug
- Windows XP
- Atmel Studio 6.1
- AVRONE-Programmierer
Nach vielen Stunden der Suche habe ich die in ASF 3.14.0.834 bereitgestellte DFU von Atmel Software Framework gefunden. Das sah vielversprechend aus, ich konnte es mit den mitgelieferten Tools auf meinem Board installieren:
- AVR32Studio 2.6.0
- program_at32uc3l-uart-isp-1.0.1.cmd (mitgeliefertes Skript mit ASF)
- Flip 3.4.7 (batchisp)
Zuerst habe ich ASF verwendet .bin
und .dat
bereitgestellt, das mithilfe des Skripts installiert wurde. Versuchen Sie nun, eine Anwendung mit dem Befehl batchisp hochzuladen:
batchisp.exe -device at32uc3l032 -hardware RS232 -port COM1 -baudrate 115200 -operation erase f memory flash blankcheck loadbuffer myapp.hex program verify
Aber immer bekommen:
Device selection.................... PASS
Hardware selection.................. PASS
Opening port........................ PASS
Synchronzing target................. FAIL Timeout error.
Ich habe mit Oszilloskop RX und TX von UART getestet, die Daten gehen an Bord, aber der PC empfängt eine 27-kHz-Rechteckwelle (es können keine Daten von UART sein, da es kein Stoppbit oder ähnliches gibt, auch die Frequenz ist wahrscheinlich nicht dieselbe für 115200bps).
Nach weiteren Recherchen habe ich konfiguriert Word1
und Word2
in Datei at32uc3l-uart-isp_cfg-1.0.1.dat
, um diese Werte zu erhalten:
- Word1: 0xE11E0024
- Word2: 0x494F81AA
PIN PA01
als Option zur Eingabe in den ISP verwenden.
Laden Sie auch die Quelle der DFU in Atmel Studio 6.1 und stellen Sie fest, dass sie nicht dieselbe Konfiguration für den seriellen Anschluss verwenden, und ändern Sie sie für dieselbe Anwendung. Es wurden auch einige LEDs hinzugefügt, die im Hauptbereich der DFU umschalten.
Nach dem Update des Bootloaders auf der Karte ändern sich keine LEDs, dieselbe Zeitüberschreitung, dieselbe Rechteckwelle.
Vermisse ich etwas?
quelle
Antworten:
Versuchen Sie es vielleicht mit einem AVR-Programmierer und der Arduino-IDE, wenn dies möglich ist. Ich weiß, dass es mit den Mikrocontrollern der AT-Serie gut funktioniert.
quelle
Die Verwendung von JTAG ohne korrekten Trampolin-Code überschreibt den vom ATMEL gelieferten BOOTLOADER. Nach der ersten Programmierung mit JTAG haben Sie den BOOTLOADER also höchstwahrscheinlich endgültig gelöscht.
Außerdem müssen die Sicherungen so eingestellt sein, dass der Bootloader funktioniert, was die Standardeinstellungen des JTAG-Programmiergeräts normalerweise vermasseln.
Um dies zu reparieren, müssen Sie den BOOTLOADER von JTAG in den Chip zurückprogrammieren und die Sicherungen richtig einstellen.
Ich habe die Verwendung von JTAG vor langer Zeit eingestellt, da BOOTLOADER + FLIP viel komfortabler und schneller ist. Stellen Sie sicher, dass Sie hex anstelle von bin / elf verwenden und die BOOTLOADER-Bedingung auch nach dem Ende der Rücksetzbedingung erfüllt ist.
So benutze ich FLIP auf RS232:
Wo
avr32-objcopy
ist von AVRStudio und bin OrdnerBatchisp
ist von FLIP. Sie müssen nur die Dateinamen und die AVR-Chip-ID und COM entsprechend Ihrem Projekt ändern.Falls Sie es brauchen, können Sie auch USB verwenden:
Das Trampolin muss im Linker (Projekteigenschaften) aktiviert sein. So sieht meine Konfiguration aus:
Ich benutze immer noch AVR32 Studio 2.7.0, da es sich bei den neueren Versionen um Horse Shit handelt und die Konfiguration in diesen Versionen möglicherweise anders ist.
[Edit1] Zusatzinfo
für UC3L0 das
AVR32_PIN_PA20
ist einige RC generic Uhr (sollte 32 kHz sein , aber es variiert von Chip zu Chip ziemlich viel ohne Kalibrierung mit Vorteiler) vom Chip bis zu seinem Zweck geändert wird GPIO anderes oder etwas so die ~ 27kHz Uhr hat nichts mit dem zu tun USART . Übrigens wird diese Uhr mit 3,3 V betrieben und erzeugt auch dann, wenn der 1,98 V-Chipkern für immer gebraten ist ....Die Bootloader-Bedingung wurde
AVR32_PIN_PA11
vor dem Zurücksetzen auf Null gesetzt (es sei denn, Sie implementieren Ihre eigenen DFU- Bedingungen / -Befehle in Ihre Firmware). Daher besteht eine Möglichkeit darin, eine RC in den Zustand LOW zu versetzen und zurückzusetzen, bevor sie wieder aufgeladen wird. oder benutze ein FLIP / FLOP Gate oder einen Jumper ...quelle