跳轉到內容

Mizar32/emBLOD

來自華夏公益教科書

通常,引導順序是

  • 位於0x8000000-80001FFF(8KB)的USB DFU引導載入程式,它會檢查使用者按鈕是否被按下,如果未按下,則執行
  • 位於0x80002000的eLua直譯器

emBLOD是一個嵌入式引導載入程式,它取代了位於0x80002000的eLua,並將eLua直譯器程式碼的修改版本從FAT格式的SD卡上的檔案載入到32MB SDRAM的開頭,然後在那裡執行它。它啟動速度很快(不到一秒鐘)並且繞過了Mizar32型號C的120KB程式碼大小限制。

缺點是,當載入到SDRAM而不是Flash中時,eLua直譯器執行速度降低了六分之一。但是,如果您需要Mizar32型號C上的浮點或乙太網支援,這是唯一的方法。

從原始碼編譯emBLOD

[編輯 | 編輯原始碼]

emBLOD是一個開原始碼專案,託管在http://github.com/cmp1084/emBLOD

要在Ubuntu上獲取並構建原始碼,您需要安裝

apt-get install git dfu-programmer 

以及avr32 GCC交叉編譯器,該編譯器的說明位於編譯Alcor6L頁面的開頭。

引導載入程式可以從原始碼構建如下

git clone https://github.com/cmp1084/emBLOD
cd emBLOD
make

這將建立相同目標檔案的兩個版本:emblod.elfbin/emblod.bin。但是,dfu-programmer需要一個.hex檔案,因此將其轉換為

avr32-objcopy -O ihex emblod.elf emblod.hex

然後透過USB將Mizar32連線到您的PC,在按下SW2的同時重置或開機板,並在PC上發出以下命令

dfu-programmer at32uc3a0128 erase
dfu-programmer at32uc3a0128 flash emblod.hex
dfu-programmer at32uc3a0128 start

如果您以115200-8-N-1連線了序列埠,您將看到emBLOD發出的訊息。

為emBLOD編譯Alcor6L

[編輯 | 編輯原始碼]

您應該已經熟悉編譯Alcor6L

使用eLua 0.9,新增

bootloader=emblod

scons編譯命令中。這將建立一個ELF檔案,您應該使用以下命令將其轉換為BIN檔案

avr32-objcopy -O binary *.elf autorun.bin

並將autorun.bin複製到Mizar32的FAT格式的微型SD卡的根目錄。

華夏公益教科書