跳轉到內容

Hempl/emBLOD

來自華夏公益教科書

通常,引導序列為

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

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

缺點是,當載入到 SDRAM 而不是 Flash 時,Hempl 直譯器的執行速度只有原來的六分之一。但是,如果您需要 Mizar32 模型 C 上的外設支援,這是唯一的方法。

從原始碼編譯emBLOD

[編輯 | 編輯原始碼]

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

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

apt-get install git dfu-programmer 

以及 avr32 GCC 交叉編譯器,有關說明,請參閱 編譯 Hempl 頁面開頭的部分。

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

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編譯Hempl

[編輯 | 編輯原始碼]

您應該已經熟悉 編譯 Hempl

使用 Hempl,並新增

bootloader=emblod

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

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

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

華夏公益教科書