Mizar32/JTAG
JTAG 是一種技術,允許您透過在板子上的晶片執行時進入晶片內部來讀取和更改其內容,從而除錯數字硬體。
您可以使用它擦除和重新程式設計整個 AVR32UC3A 的快閃記憶體,包括位於前 8KB 的 USB DFU 引導載入程式。
當 AVR32 執行時,您可以使用它來停止程式、檢查 CPU 暫存器和記憶體的內容,以及設定程式再次執行,以及設定硬體斷點等。
每個 Mizar32 主機板都有一個 10 針 JTAG 聯結器。要使用它,您需要一個外部 JTAG 模擬器,例如 Atmel 的 AVR32 JTAG ICE MKII。
要透過 JTAG 轉換器與 Mizar32 交談,您還需要安裝一些程式。
Atmel 現在只在您使用其圖形開發環境 AVR32 Studio 6 時才支援 JTAG。
命令列工具 avr32program 和/或 avr32gdbproxy 現在很難找到。
古老的 Atmel AVR32 GNU 工具鏈版本 2.4.2 包含一些在後續版本中遺漏的額外工具。它們不再公開發布,但您可能仍然可以從以下地址下載:
- Ubuntu 的 Debian 軟體包 9.10 (64 位) / 9.10 / 9.04 / 8.04
- Suse Core 的 RPM 11.1 / 11.0
- RPM 的 RedHat Enterprise 5
- RPM 的 Fedora Core 12 (64 位) / 12 / 11 / 10
要能夠使用 JTAG 程式設計裝置,您需要安裝 avr32program 命令。它曾經包含在 Atmel GNU 工具鏈中,直到版本 2.4.2,但出於某種原因,它被從後續版本中省略了。在這裡,我們展示如何從 Atmel 的 Ubuntu 9.04 包中在現代 32 位版本的 Debian 或 Ubuntu 上安裝它。
mkdir tmp; cd tmp wget http://www.atmel.com/Images/avr32_gnu_toolchain_2.4.2_ubuntu_904.zip unzip avr32_gnu_toolchain_2.4.2_ubuntu_904.zip
這會建立 15 個 *.deb 軟體包檔案,其中大多數不是很有用。安裝必要的軟體包
sudo dpkg -i avr32program* libavr32ocd* avr32parts* libavrtools*
如果它抱怨
dpkg: dependency problems prevent configuration of libavrtools: libavrtools depends on libboost-filesystem1.34.1 (>= 1.34.1-8); however: Package libboost-filesystem1.34.1 is not installed. libavrtools depends on libboost-thread1.34.1 (>= 1.34.1-8); however: Package libboost-thread1.34.1 is not installed. ... avr32program depends on libavr32ocd (>= 4.1.0); however: Package libavr32ocd is not configured yet.
獲取並安裝它所需的古代庫
wget http://archive.debian.org/debian/pool/main/b/boost/libboost-filesystem1.34.1_1.34.1-14_i386.deb wget http://archive.debian.org/debian/pool/main/b/boost/libboost-thread1.34.1_1.34.1-14_i386.deb wget http://archive.debian.org/debian/pool/main/x/xerces-c2/libxerces-c28_2.8.0-3+lenny1_i386.deb wget http://archive.debian.org/debian/pool/main/i/icu/libicu38_3.8.1-3+lenny3_i386.deb sudo dpkg -i libboost* libxerxes* libicu*
並完成安裝
apt-get -f install
Atmel 的 Ubuntu 9.10 軟體包包含與 9.04 相同的軟體,但依賴於過時的庫版本,這些版本更難找到。
如果您有一個 64 位的 Ubuntu 安裝,您的生活會更加困難,因為
- Atmel 僅為 Ubuntu 9.10 分發了 64 位版本的軟體
avr32program和avr32gdbproxy需要您安裝libboost-thread1.38- Debian 從未釋出 libboost-1.38,而 Ubuntu 的 boost1.38 存檔 神秘地為空。
這為您留下兩個選擇:
- 找到程式所需的 boost-1.38 軟體包
- 安裝來自 9.04 的 32 位軟體包以及所有所需庫的 32 位版本。
祝您好運!請告訴我結果如何……
另一個程式 avr32gdbproxy 可與 AVR32 JTAGICE Mk.II JTAG 程式設計裝置一起使用來除錯在板上執行的 C 程式碼。它需要與 avr32program 相似的魔法
dpkg -k avr32gdbproxy* libavr32sim* libelfdwarfparser*
並且,如果它抱怨 libboost-date-time 和 libmpfr1ldbl 丟失,請執行
wget http://archive.debian.org/debian/pool/main/b/boost/libboost-date-time1.34.1_1.34.1-14_i386.deb wget http://archive.debian.org/debian/pool/main/m/mpfr/libmpfr1ldbl_2.3.1.dfsg.1-2_i386.deb dpkg -i libboost-date-time*.deb libmpfr*.deb
最後
apt-get -f install
這應該會獲取並安裝 libgmp3c2(如果它尚未安裝)。
如今,我們通常使用 USB DFU 引導載入程式來重新程式設計 Mizar32。包含 JTAG 程式設計命令和二進位制檔案的最後一個 SimpleMachines 韌體版本是 Mizar32 韌體版本 20110320,適用於 128K 型號,但您可以將該版本的指令碼和檔案與來自較新版本的 eLua 二進位制檔案一起重用。
擦除和重新程式設計整個裝置的命令序列相當複雜,因此請下載上述版本並檢查 program-mizar32-jtag.sh
您需要將 AVR32 JTAG ICE MKII 程式設計器透過其 USB 介面連線到您的 PC,並透過 10 針 JTAG 介面連線到 Mizar32。為兩者供電。
安裝 avr32program 程式(見上文),然後獲取並程式設計韌體
wget http://mizar32.googlecode.com/files/mizar32-firmware-20110320.tgz tar xfz mizar32-firmware-20110320.tgz cd mizar32-firmware-20110320 sh program-mizar32-jtag.sh
這將重新程式設計快閃記憶體的整個內容:USB DFU 引導載入程式、ISP 配置字、通用保險絲位和 eLua 直譯器。然後它將啟動板子執行。
您將需要
avr32-gdb,包含在 Atmel 的 GNU 工具鏈版本中avr32gdbproxy- 見上文- 您 PC 上的
.elf,與您程式設計到 Mizar32 上的相同 - 一個 JTAG 程式設計器裝置(USB 到 JTAG 轉換器)
並且,在一切連線並開啟並執行的情況下,在 PC 上說
$ avr32gdbproxy & # Start the proxy daemon, listening on port 4711 $ avr32-gdb *.elf # Whichever .elf file you programmed to the Mizar32 gdb> target extended-remote localhost:4711 gdb> run
祝您好運!
- 2007 年邊界掃描教程,來自 ASSET InterTech
- 關於重新整理韌體的章節,介紹了其他重新程式設計快閃記憶體的方法