跳轉到內容

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 韌體。

進一步閱讀

請將有關此過程的任何反饋或建議報告給 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 連線到您的 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 上的特殊軟體來驅動它。

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

華夏公益教科書