完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
|
|
相关推荐
2个回答
|
|
方法1:上电前连续敲击键盘,看能不能进入u-boot。
方法2:如果方法1不行,则需要修改u-boot里面的代码,修改成强制进入u-boot模式,这需要对u-boot代码架构有一定的了解。然后通过JTAG或其他工具重烧u-boot进flash中。强制进入u-boot后,其他就好办了。 |
|
|
|
在我们的实际项目中都希望uboot尽量能够快速启动,这就涉及到uboot的裁剪工作,由于裁剪的工作量和内容比较多,这里暂不描述。但是uboot有个启动延时bootdelay,在我们进入linux内核之前会有个短暂的倒计时,可能是1秒也可能是2秒。这个延时用于在uboot启动之后避免直接进入linux内核,在进入内核之前按下Enter键可以进入uboot菜单,在这个管理界面中我们可以执行很多的操作,根据命令行我们可以设计环境变量等参数,其中有一项便是“bootdelay”。一般我们会在产品量产之前会把bootdelay设置为0,以便快速进入linux系统,但是我们处于开发调试阶段经常需要在uboot的菜单界面下进行操作,首次烧写uboot我们可以在此文件夹下修改uboot的bootdelay“uboot/include/configs/xxxx.h”,其中xxxx代表你单板名称,就是你make的时候后面携带的单板名称,比如“make sun8iw5p1”,那我对应的文件就是“sun8iw5p1.h”。这个文件下有一行代码如下:
“1”表示uboot启动延时为1s,“首次”烧写uboot你可以根据这个值来进行修改启动时间,一旦烧写进单板后,以后uboot都是按这个 1 秒来延时,你可以通过以下的uboot命令来进行修改,如下:
这样设置后这个2就会被读入uboot的环境变量区保存起来。但我们可能会遇到一个问题,如果设置为“0”后呢,如下:
这样设置后uboot环境变量区的bootdelay就是0,也就是没有启动延时了,我们也没办法再进去uboot菜单管理界面了,此时你可能会去修改我刚才说的“uboot/include/configs/xxxx.h”这个文件夹里面的“CONFIG_BOOTDELAY”然后重新烧写uboot。但是实测告诉你那是不行的,因为uboot每次启动他都先去读取了flash里面的环境变量,除非里面没任何数据才会来取这个宏的定义,但是我们之前已经把“0”写入环境变量区了,那还有救嘛,当然有!只要不让uboot从环境变量里面取不就行了吗!经过查看uboot源码,发现在源码文件“uboot/common/main.c”中做了如下的判断:
先去取了环境变量的值做判断,有就直接用,那直接把这个判断去掉并改为每次都取“CONFIG_BOOTDELAY”的值不就行了,如下:
这样我们再去修改“uboot/include/configs/xxxx.h”下的 CONFIG_BOOTDELAY 这个宏就可以了,把他改为 1 就是延时 1 秒,改为 0 就每次启动都没有延时,这样也符合我们的产品需求。但一般是最后阶段我们才做这个修改,因为这里一旦修改后你通过uboot命令行就无法通过“seten bootdelay”来修改启动延时了,因为它每次都取的是你源码中设置的值。 ———————————————— 版权声明:本文为CSDN博主「itdo_just」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。 原文链接:https://blog.csdn.net/itdo_just/article/details/78361519 |
|
|
|
只有小组成员才能发言,加入小组>>
197个成员聚集在这个小组
加入小组为什么点亮LED的例子放在NORFlash上跑会出现奇怪的现象?
2195 浏览 6 评论
1994 浏览 5 评论
韦东山老师推出的《玩转ARM裸机实战》课程将帮你以上问题一扫而光!
4549 浏览 1 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-29 12:05 , Processed in 0.735906 second(s), Total 80, Slave 61 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号