跳轉至內容

Mizar32/刷寫韌體

來自華夏公益教科書

刷寫韌體映象

[編輯 | 編輯原始碼]

有幾種方法可以將新的韌體映象寫入 Mizar32。

== 使用 USB DFU 引導載入程式 ==

Mizar32 快閃記憶體的前 8KB 預先程式設計了 Atmel 的 USB DFU 引導載入程式,它能夠寫入快閃記憶體的其餘部分。要與它通訊,可以使用 Atmel 的閉源 'flip' 和 'batchisp3' 工具,它們很糟糕,或者可以使用開源 'dfu-programmer',它還算可以。

使用 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 舊版本的 Bug

[編輯 | 編輯原始碼]

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

進一步閱讀

[編輯 | 編輯原始碼]

使用 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 連線到您的電腦
  • 給 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 USB DFU 引導載入程式資料手冊 連結
  • FLIP 主頁 連結

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

[編輯 | 編輯原始碼]
  • 從 Atmel 的網站下載適用於 Windows 的最新版本的 FlipBATCHISP.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 裝置,可以是:at32uc3a0128at32uc3a0256at32uc3a0512
  • \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 韌體。

進一步閱讀

  • Atmel USB DFU 引導載入程式資料手冊 連結
  • FLIP 主頁 連結

請將有關此過程的任何反饋或建議報告給 support@simplemachines.it

在 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 連線到您的電腦,連線電源插頭,然後按住復位按鈕並按住使用者按鈕 (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 程式設計器

[編輯 | 編輯原始碼]

JTAG 程式設計器是一個裝置,它允許您執行比 USB DFU 引導載入程式更多操作,包括更新 USB DFU 引導載入程式本身,並且需要您 PC 上的專用軟體來驅動它。

如果您需要執行此操作,請聯絡 support@simplemachines.it

華夏公益教科書