现在的位置: 首页 > 综合 > 正文

嵌入式Linux之Bootloader调试技术

2017年10月30日 ⁄ 综合 ⁄ 共 1115字 ⁄ 字号 评论关闭

嵌入式系统搭建过程中,对于系统平台搭建工程师最初的一步通常是移植Bootloader,当然移植有几个级别,通常最常见的是参考的EVM
的硬件有了修改(如更改了FLASH ,更改了SDRAM
DDRSDRAM 等),并且是初次调试硬件,更大的困难是公司为节省成本不打算买上万的EVM
开发板,或者EVM 开发板需要license
才能购买,这时移植Bootloader 是比较难做的,不过也不是没有方法,最有效的有两个--点灯和串口打印。(作者通过这种方法调试成功过IXP2400(Xscale)
Redboot EP9307(ARM9)
U-boot Bootloader

Bootloader
调试技术-
点灯
,当烧写好Bootloader,启动Bootloader
,肯定是从一个固定的地址开始执行程序,最初的程序是从FLASH 中读取执行的,有些处理器是直接使用FLASH
地址,有些会影射到FLASH 地址,此时SDRAM
可以认为没用到,如何确认程序有没有直接执行,通常用点灯来验证,在Bootloader 入口代码段尽量靠前初添加点灯代码(使用GPIO
控制),跟踪代码的执行,如果确认点灯代码没问题,程序没执行,那可能是启动地址没有指向FLASH
地址,硬件晶振没起振,硬件IC 电源供电问题,硬件IC 引脚接地问题,CPU
配置字问题(如启动模式),CPLD 时序调节问题等等,这需要硬件和软件工程师联合调试(这需要团队精神)。当然如果移植Bootloader
的工程师做过硬件那是再好不过的。所有的问题排查和解决之后,点灯成功是种必然。

Bootloader
调试技术-
串口打印
,点灯成功之后就可以对重要的配置参数跟踪调试,比较重要的是程序跳转到SDRAM
执行( 重点是SDRAM 时序参数和clk
配置正确) ,而后就需要打通串口,打通串口需要对UART
参数进行正确配置,测试用输出字符函数(这里可没printf() 函数可用),通常点灯成功之后打通串口相对容易,这里重点是使用串口调试程序,在printf()
函数可用之前使用低级别的串口输出函数实现程序的跟踪调试(通常是调试汇编代码),在printf()
函数可用之后使用printf() 调试代码。

如上是Bootloader
调试过程中最重要的两个调试技术,灵活使用将带来工作效率的提升,不管是U-boot Redboot
还是厂商专有的Bootloader( rrload
vivi ) ,两个调试技术都有效。

       (作者 冯青华
信庭嵌入式工作室
(www.xteda.com)- CEO
Blog:http://blog.csdn.net/fqheda )

                         <转载请注名来路>

抱歉!评论已关闭.