启动过程:
uboot-with-spl --> kernel --> os
其实主要是uboot-with-spl这一块,根据OLinuXino的说法,uboot分为两类,sunxi uboot;mainline uboot,分别是全志和uboot官网的2个版本。在文档里只说了支持的内存不同,sunxi uboot 适用于现代内存,主线支持三星和现代两种。
从OLinuXino的文档来看,直接编译Uboot就出一个uboot-with-spl可以了,但有的文档说是编译出2个文件来(spl uboot).
烧录到tf卡方法:
sudo dd if=u-boot-sunxi-with-spl.bin of=/dev/sdX bs=1024 seek=8
应该是A13 SOC片上的ROM启动过程会尝试读取tf卡的最开始部分扇区来获取启动设备,当然如果把uboot当成用户自定义程序也是可以的,SOC片上48k RAM应该也能干点事,只不过有DDR3,能跑Linux更好。
Uboot 通过下面命令配置一个boot.scr文件,用于配置加载内核和内核参数(script.bin)文件。
Now you have to create a new boot.cmd file with the following contain
setenv bootm_boot_mode sec
setenv bootargs console=ttyS0,115200 root=/dev/mmcblk0p2 rootwait panic=10
load mmc 0:1 0x43000000 script.bin || load mmc 0:1 0x43000000 boot/script.bin
load mmc 0:1 0x42000000 uImage || load mmc 0:1 0x42000000 boot/uImage
bootm 0x42000000
convert boot.cmd in boot.scr with the next command
# mkimage -C none -A arm -T script -d boot.cmd boot.scr
The result should be a new boot.scr file that you have to copy to the first SD card partitition(where uImage and script.bin file are located)
实际内核只需要存在tf卡的第一个分区(FAT32)就可以了。有了内核,后续的就好办了。
先准备uboot部分吧,等周末看板子能打出来不,DDR3走线感觉未必能正常初始化得了,但很难说。如果初始化DDR3过了,那以后做板子就好玩多了。
2022.07.03
DDR3初始化过了,一次性搞定,看来只要注意等长以及阻抗稍微做控制,MCU和DDR芯片预留的裕量还是很足的,我自己单端走线算出来阻抗59欧,而且还有不少过孔换层到背面走线的,背面参考的可是电源层,不是GND。确实是裕量很足。
DDR3过了,但是按照老文档编译uboot和内核起来要跑飞的,因为参考的olimex板子固件是256MB内存,我自己换的512MB颗粒。直接去下了512MB的模块对应的新版本镜像dd到tf卡就正常了。
Index of /release/a13http://images.olimex.com/release/a13/