当前位置:  技术问答>linux和unix

bootloader高手请进,急啊!!!!!

    来源: 互联网  发布时间:2017-03-04

    本文导语:  正在改u-boot的代码,发现了奇怪的问题 1,步骤:我在代码中加入几条printf语句后,编译并烧写到板子上后,重启进入boot的命令行   现象:在命令行下任意输入某个命令后板子就挂掉了,串口上没有任何显示  ...

正在改u-boot的代码,发现了奇怪的问题
1,步骤:我在代码中加入几条printf语句后,编译并烧写到板子上后,重启进入boot的命令行
  现象:在命令行下任意输入某个命令后板子就挂掉了,串口上没有任何显示
  修改:如果将新加入的这几行printf语句注释掉后,就恢复正常了

2,步骤:在函数内调用某个函数后,此函数中也有新加入的printf语句,编译并烧写到板子上后,重启进入boot的命令行
  现象:同上
  修改:将该函数注释掉后,恢复正常

排除硬件问题,因为已经试过几块板子,都有这问题;会不会是堆栈或内存之类的问题呢?
总结:推断应该是板子出现异常,但是在挂掉板子前,底层没有打印任意信息,在加上手头上也没有仿真器,不能对问题进行定位,现在很是纠结。



希望有遇到过类似问题的朋友多多指教,弄了两天了,没什么头绪啊!

|
应该是内存越界了,也就是缓冲区溢出。
你可以做这样的测试:
将原来printf语句改成其他没用的语句,例如:n=1;i++之类的。
看看板子是否会挂掉。

如果同样会挂掉,则可能的问题如下:
1、代码的其他部分有内存溢出之类的Bug,你添加了这些指令后,使得某处内存正好溢出。(这样的问题比较难排查。)排除的方法比较简单:在程序其他任意地方(最好是不同的函数层次中)加入这样的没用的语句,如果每次加入哪怕一条语句都会挂掉的话,就可以基本排除是内存溢出。
2、硬件设计可能有bug(指内存模块的设计,也许地址线什么的连错了)。

如果不会挂掉,则很可能是你使用printf有问题,要么使用了空指针之类的东西,要么打印的目标内存地址不对,造成了系统的崩溃。

|
是否只要有printf调用,你的uboot都会死掉?
如果是,可能是printf相关的串口设置有问题。

|
以上情况,可能有几种可能的原因。第一:你的printf代码放在了串口初始化之前,应该还在之后;第二:没有初始化串口,printf在哪都不行。

|
楼上正解,printf最终通过串口打印出来的

|
有可能存在地址越界或者野指针,改写了代码段或者某个关键位置。加了printf可能刚好避开了这个修改。
如果把你加的造成问题的printf 换成别的代码会怎么样?

|


这个应该不是问题, 我的 uboot 因为增加启动画面等,都达到 500k 了, 没有问题。
你试试检查  printf 中但变量参数, 参数里是否有指针, 指针是否有效?
uboot 不同于内核, 是没有 oops 信息打印出来的。

|
因为base是uint型的指针。
它每次加1相当于char型指针加4

    
 
 
 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 关于启动时Bootloader载入到Steppingstone的疑问
  • 关于烧录bootloader的问题,急!!!
  • LINUX中BOOTLOADER的问题,急!!!!!!!!!
  • 求一个vivi bootloader
  • 请问如何查看bootloader的nand分区?
  • bootloader 不能启动
  • 编译bootload出错
  • BSP和BOOTLOADER什么区别
  • 请问linux能把bootloader,kernel,fs打包在一起吗
  • bootloader 向kernel传送参数问题
  • bootloader的源代码怎样查看
  • --------------------- 关于 bootloader 的问题
  • 这段bootloader中的代码读不懂,请帮我看看吧
  • 请问:BootLoader初始化硬件时,会对PLL和时钟初始化,这个PLL是什么啊,怎么初始化它啊?
  • 不要纠结于 bootloader了。
  • bootloader里面的一条代码看不懂
  • 太奇怪了,正在开发bootloader,gcc难道有内置的string的处理函数链接到我的程序中了?我根本没有链接C库啊。


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3