有时uboot的功能用不上,uboot启动kernel需要二级跳转,sunxi uboot spi为CPU polling,等等问题导致启动慢,强迫症受不了.
参考论坛各位大神代码,撸了一个自己的SPL,一直索取,现来分享.
不开cache mmu不开代码优化粗略测试4M+的kernel+DTB大概700ms-800ms即可完成读取启动.
IAR7 环境,先编译好,V3S R11进入FEL后直接双击Debug\exe\dl_flash.bat即可自动加校验下载.用的是串口2,可能需要大家自行适板修改一下.
有两点需要注意,不然无法直接启动kernel.
由于这个SPL不设置Kernel command line,所以需要内核make menuconfig时内置默认的Kernel command line
Boot options ---> (X) Use bootloader kernel arguments if available
并且设置Default kernel command string
第二是DTS必须要有内存的描述,不然无法启动
memory_DDR0@40000000 {
device_type = "memory";
reg = <0x40000000 0x4000000>;
};
因为上面两件事uboot做了,现在抛弃了它就要自己手动做了.
kernel自解压大概300ms,按下复位键起1秒即出现Booting Linux on physical CPU 0x0
另外
[ 0.143010] 1c28800.serial: ttyS2 at MMIO 0x1c28800 (irq = 31, base_baud = 1500000) is a 16550A
[ 0.719051] console [ttyS2] enabled
此处花了600ms傻等,无奈跟代码无果,直接波特率921600有惊喜.
配合这个SPL秒启不是梦,起飞吧,朋友.
离线