有时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秒启不是梦,起飞吧,朋友.
离线
非常实用,感觉有USB的sunxifei之后uboot没啥大用。需要时可以sunxifei加载uboot
离线
uboot也可以优化的呀,uboot可以优化到100ms跑完,只是拷贝要花几百ms,kernel启动也是很快的,启动信息不是实时打印的。
离线
启动时间大多耗在内核解压和运行,uboot的影响太小了。这就像刮了腿毛就可以拿短跑冠军了。
离线
好东西!
离线
试了一下,内存驱动不理想,读写没有uboot启动的快,
离线
支持折腾
楼上说的 内存驱动没完善
在优化优化就完美了
离线
要优化内存,估计是开MMU CACHE就好了,支持LZ的工作,主要我是想用SPI-NAND引导,uboot里面的坏块处理不理想,索性自己写一个,也不复杂,还跳过uboot直接启动Linux,速度也快
离线
想知道如何用iar的代码如何引导到cpu,奈何积分
离线
有源码吧
离线
can you share it in github?
离线
mark,
R11的SPL,无需uboot SPI DMA直接启动kernel
离线