希望能秒启动linux,所以从uboot开始优化。
1.启动顺序是否可配置
2.这个bad crc是什么情况
3.SF: Detected w25q128bv with page size 256 Bytes, erase size 4 KiB, total 16 MiB 这条log后具体做了什么,足足停顿了3~4s
U-Boot SPL 2018.01-05676-g0018878-dirty (Dec 25 2019 - 03:05:37)
DRAM: 64 MiB
Trying to boot from MMC1
Card did not respond to voltage select!
mmc_init: -95, time 22
spl: mmc init failed with error: -95
Trying to boot from sunxi SPI
U-Boot 2018.01-05676-g0018878-dirty (Dec 25 2019 - 03:05:37 +0000) Allwinner Technology
CPU: Allwinner F Series (SUNIV)
Model: Lichee Pi Nano
DRAM: 64 MiB
MMC: SUNXI SD/MMC: 0
SF: Detected w25q128bv with page size 256 Bytes, erase size 4 KiB, total 16 MiB
*** Warning - bad CRC, using default environment
In: serial@1c25000
Out: serial@1c25000
Err: serial@1c25000
Net: No ethernet found.
starting USB...
No controllers found
Hit any key to stop autoboot: 0
SF: Detected w25q128bv with page size 256 Bytes, erase size 4 KiB, total 16 MiB
device 0 offset 0x70000, size 0x10000
SF: 65536 bytes @ 0x70000 Read: OK
device 0 offset 0x80000, size 0x400000
SF: 4194304 bytes @ 0x80000 Read: OK
=>
离线
2. 头文件里面有一个宏,保存ENV环境变量参数存储的基地址和大小, u-boot启动首先去读flash中这个ENV,
我记得最后几个字节是CRC32(???)校验的, 如果校验不通过就用默认的参数.3. bootcmd 里面的 sf read 比较耗时。
对这个env环境变量不太懂,看log,make menuconfig设置的参数已经设置成功,那make menuconfig设置的是默认参数?
把头文件的这个宏注释掉,就不会有警告了吧
离线
ENV 就是 u-boot 控制台用 printenv 打印出来的那些参数, 比如 bootcmd, bootargs 那些。
如果有 env 存在, u-boot会把 env 的参数覆盖默认的参数,
默认参数有些存在 menuconfig, 有些 存在 include/configs/sun**.h 里面.
离线
ENV 就是 u-boot 控制台用 printenv 打印出来的那些参数, 比如 bootcmd, bootargs 那些。
如果有 env 存在, u-boot会把 env 的参数覆盖默认的参数,
默认参数有些存在 menuconfig, 有些 存在 include/configs/sun**.h 里面.
log已经打印出make menuconfig中的bootcmd,说明bootcmd修改了默认参数,那么这个env参数是在哪里修改呢?make menuconfig中能修改env吗?
离线
https://whycan.cn/files/members/3/2019-12-25_152909.png
这里修改 bootcmd/bootargs 默认参数, 早期版本的u-boot不能用make menconfig 修改这两个参数。
是修改的这里,这个bad crc应该不影响启动时间,也不影响引导系统。这里uboot启动时间大部分都花在了sf probe 0 60000000; sf read 0x80c00000 0x70000 0x10000; sf read 0x80008000 0x80000 0x400000; bootz 0x80008000 - 0x80c00000
这个read应该是把spiflash中的内容读到dram里的过程,这里需要优化,方法是:减小内核和文件系统体积,我先试试内核1m,文件系统1m时的情况
离线
全志用UBOOT+LINUX,很难优化到秒启动的
因为全志的读写SPI FLASH速度非常慢,不支持QUAD SPI模式,基本没有优化空间
离线
是修改的这里,这个bad crc应该不影响启动时间,也不影响引导系统。这里uboot启动时间大部分都花在了sf probe 0 60000000; sf read 0x80c00000 0x70000 0x10000; sf read 0x80008000 0x80000 0x400000; bootz 0x80008000 - 0x80c00000
这个read应该是把spiflash中的内容读到dram里的过程,这里需要优化,方法是:减小内核和文件系统体积,我先试试内核1m,文件系统1m时的情况
对,crc错误那里不会产生影响,设置可以设置宏屏蔽env的相关代码,
这个地方还没有加载根文件系统。
内核启动之后才会加载, jffs2会扫描整个mtd分区, 这个地方对启动时间有影响。
离线
这个比较有难度,我当时试过,极限在5秒左右
离线
@橘子 说,f1c100s 2.3秒
是spi吗?
离线
那就从头文件开始吧,把不需要的统统砍掉
离线
@橘子 说,f1c100s 2.3秒
剪裁到极限应该能做到,我的5-6秒,已经到了登录界面,应用程序运行起来了。
离线
我用SDNAND,uboot没优化;kernel本身只需要1.6秒到shell
离线
我用SDNAND,uboot没优化;kernel本身只需要1.6秒到shell
kernel是在ram中运行,速度没得说,把没用的驱动去掉应该更快
离线
kernel是在ram中运行,速度没得说,把没用的驱动去掉应该更快
有用的也可用模块的方式加载,这样zImage比较小。
离线
秒启动到LOGO
离线
楼主,UBOOT的启动时间最后是通过裁剪UBOOT和内核大小提高的吗?最后提高到了多少秒?
离线
楼主,问题解决了吗?怎么解决的?
离线
把等待键盘输入的时间设成0,关闭不必要的外设驱动的加载,关闭不必要的串口打印信息
离线