跳转到内容

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

华夏公益教科书