Hempl/刷写固件
有几种方法可以将新的固件镜像写入 Mizar32。
Mizar32 闪存的前 8KB 预编程了 Atmel 的 USB DFU 引导加载程序,它能够写入闪存的其余部分。为了与它通信,您可以使用 Atmel 的闭源“flip”和“batchisp3”工具,它们都很糟糕,或者使用免费的开源“dfu-programmer”,它还可以。
dfu-programmer
是一个开源程序,用于与 USB DFU 引导加载程序通信。它包含在 Debian 和 Ubuntu 中,安装步骤(作为 root)为:
sudo apt-get install dfu-programmer
获取固件
wget http://simplemachines.it/files/mizar32-firmware-latest.tgz tar xfz mizar32-firmware-*.tgz cd mizar32-firmware-*
现在
- 使用 USB 线将 Mizar32 连接到您的 PC
- 在按下用户按钮(SW2)的同时,打开 Mizar32 的电源(或按下它的复位按钮)
- 在 PC 上,输入以下命令
如果您有 Mizar32 型号 A
dfu-programmer at32uc3a0512 erase dfu-programmer at32uc3a0512 flash hempl_at32uc3a0512.hex dfu-programmer at32uc3a0512 start
对于 Mizar32 型号 B
dfu-programmer at32uc3a0256 erase dfu-programmer at32uc3a0256 flash hempl_at32uc3a0256.hex dfu-programmer at32uc3a0256 start
对于 Mizar32 型号 C
dfu-programmer at32uc3a0128 erase dfu-programmer at32uc3a0128 flash hempl_at32uc3a0128.hex dfu-programmer at32uc3a0128 start
如果它显示 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 中存在一个错误,该错误偶尔会错误地编程闪存。症状是
$ dfu-programmer at32uc3a0256 flash hempl_at32uc3a0256.hex Validating... Image did not validate.
该错误已在 dfu-programmer-0.5.2 及更高版本中修复。
好像还不够,Mizar32A 携带了 AT32UC3A 芯片的汽车级超稳固版本,该版本具有 512KB 的闪存,擦除其闪存所需的时间比dfu-programmer期望的时间要长几秒钟(大约 14 秒而不是 10 秒)。
该错误已在 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 Programmer 项目
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 连接到您的 PC
- 在按下用户按钮(SW2)的同时,打开 Mizar32 的电源(或按下它的复位按钮)。
- 在 PC 上,输入以下命令
batchisp3 -hardware usb -device at32uc3a0128 -operation erase f memory flash blankcheck loadbuffer $PWD/hempl_at32uc3a0128.elf program verify start reset 0
请注意,您必须明确提供固件文件的完整路径(这里的 $PWD/
技巧)。否则,它会在 /usr/local/flip.3.2.1/bin/
中查找固件文件。
进一步阅读
- Atmel USB DFU 引导加载程序数据手册
- Atmel FLIP 主页
- 从 Atmel 的网站下载适用于 Windows 的最新版本 Flip(
BATCHISP.EXE
位于 Flip 安装程序中),并按照安装说明进行操作。目前,只有 Batchisp 支持 AT32UC3A 微处理器,而 Flip 尚未支持,因此您必须安装 Flip 但无法使用它。
- 激活 DFU 引导加载程序:使用 USB 线将 Mizar32 连接到您的 PC,连接电源线,在按下用户按钮(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 固件的完整 PATH。elua_lualong_at32uc3aXXXX.elf
是固件版本。
例如,您可以使用以下命令行刷写 Mizar32 B(256Kb 版本)
batchisp -device at32uc3a0256 -hardware usb -operation erase f memory flash blankcheck loadbuffer C:\Users\Simplemachines\Desktop\project\hempl_firmware\0256\hempl_at32uc3a0256.elf program verify start reset 0
如果 batchisp 由于“缺少 MSVCR71.dll”而无法运行
- 将文件 msvcr71.dll 下载到您的
Flip\bin
目录中(在此 PC 上为c:\Program Files (x86)\Atmel\Flip 3.4.3\bin\
) - 重新输入上面的 batchisp 命令以更新 Mizar32 固件。
进一步阅读
- Atmel USB DFU 引导加载程序数据手册
- Atmel FLIP 主页
请将有关此过程的任何反馈或建议报告给 [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 连接到您的 PC,连接电源线,在按下用户按钮(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\hempl_at32uc3aXXXX.elf program verify start reset 0
其中
at32uc3aXXXX
是您的 Atmel 设备,可以是:at32uc3a0128、at32uc3a0256、at32uc3a0512。\Mizar32_firmware_directory\
是存储 Mizar32 固件的完整 PATH。hempl_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\hempl_at32uc3a0256.elf program verify start reset 0
进一步阅读
- Atmel USB DFU 引导加载程序数据手册
- The FLIP 主页
JTAG 编程器是一种设备,它允许您执行比 USB DFU 引导加载程序更多的操作,包括更新 USB DFU 引导加载程序本身,并且需要您的 PC 上的特殊软件来驱动它。
如果您需要执行此操作,请联系 [email protected]