跳转到内容

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 卡的根目录。

华夏公益教科书