嵌入式系统 Boot Loader 技术内幕(4)
%A 移动通信
%A GSM
%A CDMA
%A 3G
%A 嵌入式开发
%A ARM
%A DSP
%A Symbian
%A WinCE
%A Linux
%A BREW
%A J2ME
%A 硬件研发
%A 硬件综合
%A 射频微波
%A EMI/EMC
%A RFID
%A ・文章搜索 SEARCH
%A
%A 标题 内容
%A
%A 首页 > 技术文章 > 手机研发 > 软件 > 正文
%A 嵌入式系统 Boot Loader 技术内幕(4)
%A www.52RD.com 2005年9月22日 我爱研发网 詹荣开
%A
%A 四. 关于串口终端
%A
%A
%A 在 boot loader 程序的设计与实现中,没有什么能够比从串口终端正确地收到打印信息能更令人激动了。此外,向串口终端打印信息也是一个非常重要而又有效的调试手段。但是,我们经常会碰到串口终端显示乱码或根本没有显示的问题。造成这个问题主要有两种原因:(1) boot loader 对串口的初始化设置不正确。(2) 运行在 host 端的终端仿真程序对串口的设置不正确,这包括:波特率、奇偶校验、数据位和停止位等方面的设置。
%A
%A 此外,有时也会碰到这样的问题,那就是:在 boot loader 的运行过程中我们可以正确地向串口终端输出信息,但当 boot loader 启动内核后却无法看到内核的启动输出信息。对这一问题的原因可以从以下几个方面来考虑:
%A
%A (1) 首先请确认你的内核在编译时配置了对串口终端的支持,并配置了正确的串口驱动程序。
%A
%A (2) 你的 boot loader 对串口的初始化设置可能会和内核对串口的初始化设置不一致。此外,对于诸如 s3c44b0x 这样的 CPU,CPU 时钟频率的设置也会影响串口,因此如果 boot loader 和内核对其 CPU 时钟频率的设置不一致,也会使串口终端无法正确显示信息。
%A
%A (3) 最后,还要确认 boot loader 所用的内核基地址必须和内核映像在编译时所用的运行基地址一致,尤其是对于 uClinux 而言。假设你的内核映像在编译时用的基地址是 0xc0008000,但你的 boot loader 却将它加载到 0xc0010000 处去执行,那么内核映像当然不能正确地执行了。
%A
%A 5. 结束语
%A Boot Loader 的设计与实现是一个非常复杂的过程。如果不能从串口收到那激动人心的"uncompressing linux.................. done, booting the kernel……"内核启动信息,恐怕谁也不能说:"嗨,我的 boot loader 已经成功地转起来了!"。
%A%A
%A
*博客内容为网友个人发布,仅代表博主个人观点,如有侵权请联系工作人员删除。