Mizar32/刷写固件
有几种方法可以将新的固件镜像写入 Mizar32。
== 使用 USB DFU 引导加载程序 ==
Mizar32 闪存的前 8KB 预先编程了 Atmel 的 USB DFU 引导加载程序,它能够写入闪存的其余部分。要与它通信,可以使用 Atmel 的闭源 'flip' 和 'batchisp3' 工具,它们很糟糕,或者可以使用开源 'dfu-programmer',它还算可以。
dfu-programmer
是一个开源程序,用于与 USB DFU 引导加载程序通信。它包含在 Debian 和 Ubuntu 中,安装步骤如下(以 root 身份):
apt-get install dfu-programmer
获取固件
wget http://simplemachines.it/files/mizar32-firmware-latest.tgz tar xfz mizar32-firmware-*.tgz cd mizar32-firmware-*
现在
- 使用 USB 线将 Mizar32 连接到您的电脑
- 在按住用户按钮 (SW2) 的情况下,给 Mizar32 通电(或按下它的复位按钮)
- 在电脑上,发出以下命令
sh program-128.sh # If you have the Mizar32 model C
或
sh program-256.sh # For Mizar32 model A of B for the integer firmware
或
sh program-256fp.sh # For Mizar32 model A of B for floating point firmware
如果它显示 dfu-programmer: no device present.
,请尝试以 root 身份运行它。如果是这样,并且您希望任何人都能够运行它,您可以以 root 身份执行以下操作
chown root $(which dfu-programmer) chmod 4755 $(which dfu-programmer)
但这会打开一个安全漏洞,因此,如果您的系统中可能存在恶意用户登录,最好将自己添加到 /etc/group
中的 "admin
" 组中,然后执行以下操作
chown root:admin $(which dfu-programmer) chmod 4750 $(which dfu-programmer)
请注意,Debian/Ubuntu 程序 "dfutool"(包含在 "bluez" 包中)是完全不同的东西。
dfu-programmer v0.5.1 中存在一个 bug,它偶尔会错误地编程闪存。症状是
$ dfu-programmer at32uc3a0256 flash elua_lualong_at32uc3a0256.hex Validating... Image did not validate.
该 bug 在 dfu-programmer-0.5.2 及更高版本中已修复。
好像还不够,Mizar32A 采用了具有 512KB 闪存的汽车级超强 AT32UC3A 芯片,它比dfu-programmer预期的擦除闪存时间要长几秒(约 14 秒而不是 10 秒)。这使得program-256.sh固件分发中的脚本失败,因为它尝试在擦除完成之前开始编程芯片。解决方法是在 program-256.sh
脚本中添加一行
echo Erasing... dfu-programmer at32uc3a0256 erase + sleep 5 echo Programming... dfu-programmer at32uc3a0256 flash elua_lualong_at32uc3a0256.hex
这在 dfu-programmer-0.5.5 及更高版本中已修复,但 Debian 和 Ubuntu 仍然是 0.5.4。您可以通过以下方式检查已安装 dfu-programmer
的版本
dfu-programmer --version 2>&1 | head -1
您可以通过从源代码编译来安装更新版本
apt-get install libusb-dev build-essential # Visit http://sourceforge.net/projects/dfu-programmer/files/latest/download # and save the file it gives to your browser tar xfz dfu-programmer-*.tar.gz cd dfu-programmer-* ./configure make sudo make install # Installs under /usr/local sudo apt-get purge dfu-programmer # Remove the old version
- sourceforge 上的 Atmel USB DFU 编程器项目
Atmel 发布了与 USB DFU 引导加载程序通信的闭源程序:图形化的 "flip" 和命令行的 "batchisp3"。它们质量都很差,目前只有第二个工具适用于 AT32UC3 部件。
请注意,Debian/Ubuntu 包 "flip" 是完全不同的东西。
在 Ubuntu 上的安装(以 root 身份)如下(改编自 eLua 的 AVR32 平台信息)
apt-get install openjdk-6-jre cd /usr/local wget http://www.atmel.com/dyn/resources/prod_documents/flip_linux_3-2-1.tgz tar xfz flip_linux_3-2-1.tgz rm flip_linux_3-2-1.tgz cat > bin/batchisp3 << \EOF #! /bin/sh FLIP_HOME=/usr/local/flip.3.2.1/bin JAVA_HOME=/usr/lib/jvm/java-6-openjdk/jre USB_DEVFS_PATH=/dev/bus/usb export FLIP_HOME JAVA_HOME USB_DEVFS_PATH exec /usr/local/flip.3.2.1/bin/batchisp3.sh "$@" EOF chmod 755 bin/batchisp3
(在 Red Hat 系统上,USB_DEVFS_PATH
运行应该省略)。
要使 flip
正常工作,首先必须 cd /usr/local/flip.3.2.1/bin
,并且它还不支持 AT32UC3 部件,因此我们只能使用命令行 batchisp3
程序
- 使用 USB 线将 Mizar32 连接到您的电脑
- 给 Mizar32 通电(或按下它的复位按钮)时,按住用户按钮 (SW2)。
- 在电脑上,发出以下命令
batchisp3 -hardware usb -device at32uc3a0128 -operation erase f memory flash blankcheck loadbuffer $PWD/elua_lualong_at32uc3a0128.elf program verify start reset 0
请注意,您必须显式提供固件文件的完整路径名(这里使用 $PWD/
技巧)。否则,它会在 /usr/local/flip.3.2.1/bin/
中查找固件文件。
进一步阅读
- 从 Atmel 的网站下载适用于 Windows 的最新版本的 Flip(
BATCHISP.EXE
包含在 Flip 安装程序中),并按照安装说明进行操作。目前,只有 Batchisp 支持 AT32UC3A 微处理器,而 Flip 尚未支持,因此您必须安装 Flip,但不能使用它。
- 激活 DFU 引导加载程序:使用 USB 线将 Mizar32 连接到您的电脑,连接电源插头,然后按住复位按钮并按住用户按钮 (SW2),然后释放复位按钮,最后释放用户按钮。
- 转到 Windows 控制面板,右键单击“计算机” → “属性” → “设备管理器” → 右键单击 'AT32UC3A DFU' → “更新驱动程序软件” → “浏览我的电脑以查找驱动程序软件”,然后选择 Flip\usb 路径(这里为
c:\Program Files (x86)\Atmel\Flip 3.4.3\usb\
),然后单击“确定”。现在 Windows 会告诉您“Windows 无法验证此驱动程序软件的发布者”,单击“无论如何安装此软件”。现在您已安装了 Mizar32 的 Batchisp 驱动程序。
- 打开 Windows 命令提示符:开始 → 在“搜索命令和文件”中键入 'cmd' → 右键单击 cmd.exe → 以管理员身份运行。键入 'PATH',然后键入您 Batchisp.exe 目录的完整路径;在我们的机器上,该命令是
PATH c:\Program File (x86)\Atmel\Flip 3.4.3\bin
- 重新启动 Windows。现在 Windows 能够找到
Batchisp.exe
程序
- 下载 [1] 并将此文件解压缩到某个目录中。运行您的 Windows 命令提示符:开始 → 在“搜索命令和文件”中键入 'cmd' → 右键单击 cmd.exe → 以管理员身份运行。键入以下命令(此命令区分大小写)
batchisp -device at32uc3aXXXX -hardware usb -operation erase f memory flash blankcheck loadbuffer \Mizar32_firmware_directory\elua_lualong_at32uc3aXXXX.elf program verify start reset 0
其中
at32uc3aXXXX
是您的 Atmel 设备,可以是:at32uc3a0128
、at32uc3a0256
或at32uc3a0512
。\Mizar32_firmware_directory\
是存储 Mizar32 固件的完整路径。elua_lualong_at32uc3aXXXX.elf
是固件版本。
例如,您可以使用以下命令行刷写 Mizar32 B(256Kb 版本)
batchisp -device at32uc3a0256 -hardware usb -operation erase f memory flash blankcheck loadbuffer C:\Users\Simplemachines\Desktop\project\elua_firmware\0256\elua_lualong_at32uc3a0256.elf program verify start reset 0
如果 batchisp 无法运行,因为“缺少 MSVCR71.dll”
- 将文件 msvcr71.dll 下载到您的
Flip\bin
目录(在此电脑上为c:\Program Files (x86)\Atmel\Flip 3.4.3\bin\
) - 重新键入上面的 batchisp 命令以更新 Mizar32 固件。
进一步阅读
请将有关此过程的任何反馈或建议报告给 [email protected]
- 从 Atmel 网站下载适用于 Windows 的最新版本的 Flip(Batchisp.exe 包含在 Flip 安装程序中)。按照视频安装说明进行操作。目前,只有 Batchisp 支持 AT32UC3A 微处理器;Flip 尚未支持,因此您必须安装 Flip,但不能使用它。
- 下载并解压缩此 USB 驱动程序,因为 Atmel 的原始驱动程序未签名,Windows Vista/7 64 位不允许您安装未签名的驱动程序。将下载的 .zip 文件解压缩到
Flip\usb
文件夹中;在我们的机器上,该文件夹为
c:\Program Files (x86)\Atmel\Flip 3.4.3\usb
- 激活 DFU 引导加载程序:使用 USB 线将 Mizar32 连接到您的电脑,连接电源插头,然后按住复位按钮并按住用户按钮 (SW2),然后释放复位按钮,最后释放用户按钮。
- 使用以下方法转到 Windows 控制面板:右键单击“计算机” → “属性” → “设备管理器” → 右键单击 'AT32UC3A DFU' → “更新驱动程序软件” → “浏览我的电脑以查找驱动程序软件”,然后选择您复制新签名 USB 驱动程序的路径(在此机器上为
c:\Program Files (x86)\Atmel\Flip 3.4.3\usb\atmel-flip-3.4.2-signed-driver
),然后单击“确定”。现在您已安装了 Mizar32 的 Batchisp 驱动程序。
- 打开您的 Windows 命令提示符:开始 → 在“搜索命令和文件”中键入 'cmd' → 右键单击 cmd.exe → 以管理员身份运行。键入 'Path',然后键入您
Batchisp.exe
目录的完整路径;在我们的机器上,该命令是
Path c:\Program File (x86)\Atmel\Flip 3.4.3\bin
- 重启 Windows。现在 Windows 能够找到
Batchisp.exe
程序。
- 下载 [2] 并解压该文件,然后运行 Windows 命令行:开始 --> 在“搜索命令和文件”中输入“cmd” --> 右键单击 cmd.exe --> 以管理员身份运行,然后输入以下命令(该命令区分大小写)
batchisp -device at32uc3aXXXX -hardware usb -operation erase f memory flash blankcheck loadbuffer \Mizar32_firmware_directory\elua_lualong_at32uc3aXXXX.elf program verify start reset 0
其中
at32uc3aXXXX
是您的 Atmel 设备,可以是:at32uc3a0128、at32uc3a0256、at32uc3a0512。\Mizar32_firmware_directory\
是存储 Mizar32 固件的完整路径。elua_lualong_at32uc3aXXXX.elf
是固件文件版本。
我们使用以下命令行将 Mizar32 B(256KB 版本)刷写到设备上
batchisp -device at32uc3a0256 -hardware usb -operation erase f memory flash blankcheck loadbuffer C:Users\Simplemachines\Desktop\project\elua_firmware\0256\elua_lualong_at32uc3a0256.elf program verify start reset 0
进一步阅读
'粗体文本文本
JTAG 编程器是一个设备,它允许您执行比 USB DFU 引导加载程序更多操作,包括更新 USB DFU 引导加载程序本身,并且需要您 PC 上的专用软件来驱动它。
如果您需要执行此操作,请联系 [email protected]