Mizar32/emBLOD
外观
< Mizar32
通常,引导顺序是
- 位于
0x8000000-80001FFF
(8KB)的USB DFU引导加载程序,它会检查用户按钮是否被按下,如果未按下,则运行 - 位于
0x80002000
的eLua解释器
emBLOD是一个嵌入式引导加载程序,它取代了位于0x80002000的eLua,并将eLua解释器代码的修改版本从FAT格式的SD卡上的文件加载到32MB SDRAM的开头,然后在那里执行它。它启动速度很快(不到一秒钟)并且绕过了Mizar32型号C的120KB代码大小限制。
缺点是,当加载到SDRAM而不是Flash中时,eLua解释器运行速度降低了六分之一。但是,如果您需要Mizar32型号C上的浮点或以太网支持,这是唯一的方法。
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.elf
和bin/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发出的消息。
您应该已经熟悉编译Alcor6L。
使用eLua 0.9,添加
bootloader=emblod
到scons
编译命令中。这将创建一个ELF文件,您应该使用以下命令将其转换为BIN文件
avr32-objcopy -O binary *.elf autorun.bin
并将autorun.bin
复制到Mizar32的FAT格式的微型SD卡的根目录。