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
- 关于刷新固件的章节,介绍了其他重新编程闪存的方法