跳转到内容

Hempl/刷写固件

来自维基教科书,开放世界中的开放书籍

刷写固件镜像

[编辑 | 编辑源代码]

有几种方法可以将新的固件镜像写入 Mizar32。

使用 USB DFU 引导加载程序

[编辑 | 编辑源代码]

Mizar32 闪存的前 8KB 预编程了 Atmel 的 USB DFU 引导加载程序,它能够写入闪存的其余部分。为了与它通信,您可以使用 Atmel 的闭源“flip”和“batchisp3”工具,它们都很糟糕,或者使用免费的开源“dfu-programmer”,它还可以。

使用 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 旧版本中的错误

[编辑 | 编辑源代码]

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

进一步阅读

[编辑 | 编辑源代码]

使用 batchisp3

[编辑 | 编辑源代码]

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/ 中查找固件文件。

进一步阅读

在 Windows Vista/7 32 位系统下使用 Batchisp

[编辑 | 编辑源代码]
  • 从 Atmel 的网站下载适用于 Windows 的最新版本 FlipBATCHISP.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 设备,可能是:at32uc3a0128at32uc3a0256at32uc3a0512
  • \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 固件。

进一步阅读

请将有关此过程的任何反馈或建议报告给 [email protected]

在 Windows Vista/7 64 位系统下使用 Batchisp

[编辑 | 编辑源代码]
  • 从 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

进一步阅读

使用 JTAG 编程器

[编辑 | 编辑源代码]

JTAG 编程器是一种设备,它允许您执行比 USB DFU 引导加载程序更多的操作,包括更新 USB DFU 引导加载程序本身,并且需要您的 PC 上的特殊软件来驱动它。

如果您需要执行此操作,请联系 [email protected]

华夏公益教科书