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 韌體。
進一步閱讀
請將有關此過程的任何反饋或建議報告給 support@simplemachines.it
- 從 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 上的專用軟體來驅動它。
如果您需要執行此操作,請聯絡 support@simplemachines.it