Bootloader在AT91RM9200系统中的实现
给出了Flash中的段的信息。在函数flash_identification(flash_info_t * info)中修改打印的信息,flash_init(void)和 flash_print_info(flash_info_t * info)中的变量要相应的修改,最后 flash_erase()中的身份判断部分相应的修改(如果只支持一种Flash芯片的话可以去掉)。
按照本系统硬件情况,关键是Flash的驱动部分的修改。由于Bootloader是为了引导操作系统,如本文的第2部分分析完成最基本的硬件的初始化即可,所以在实际移植中经常需要做的一般如上文所述。
接下来在Linux下进行编译,设置环境变量PATH为交叉编译器的路径所在目录,如:
PATH=$PATH:/usr/local/arm/2.95/bin
在代码的顶层目录下执行以下命令:
make distclean
make at91rm9200dk_config
make
编译成功可以得到得到三个文件:u-boot,u-boot.bin,u-boot.srec。其中boot包含有很多调试信息,可以被很多调试程序读,开发者也可以用readelf、objdump等命令来查看里面包含的段地址等信息。u-boot.bin文件是ARM可以直接执行的二进制的文件。u-boot.srec是 MotololarMT srec格式的文件。
按照1.2中介绍的方法烧写U-boot到Flash芯片,设置跳线,使BMS引脚为低电平,CPU从外部启动,从超级终端显示U-boot的启动信息。
3.3 调试
调试过程中遇到的问题可能是移植的问题,也有可能是硬件的问题,需要开发者做出判断。仔细的阅读U-boot的源代码,对于了解硬件环境,进行调试有很大好处。同时代码有一些用于调试的条件编译,用dbg ()、debug()等函数输出调试信息,开发者可以通过这些调试信息输出函数得到编译以得到相关部分的调试信息。
编译通过之后将u-boot.bin载入SDRAM中运行,分别试验erase,cp,printenv,saveenv等命令检测对Flash的操作,使用tftp命令以检测网口下载功能,然后装载操作系统内核,完成以上的任务则移植成功。经过以上步骤移植的U-Boot已经在本人开发的ARM板上顺利的引导Linux操作系统。
4 总结
本文是笔者结合AT91RM9200的开发经验,首先介绍了该处理器的特点,探讨了利用GNU开发bootloader的一般方法和步骤,最后详细地分析了U-boot在嵌入式系统上的移植。基于其他的CPU的嵌入式平台上的Bootloader的移植与此相似,希望本文能对嵌入式开发人员有借鉴意义。 AT91RM9200是适合于工业控制、汽车电子、医疗器械等领域的一款基于ARM920T核的高性能芯片,属于当前比较高端的RISC处理器。文章首先分析了AT91RM9200芯片引导的特点,然后在基于AT91RM9200的嵌入式系统上实现Bootloader(操作系统的引导装载程序)的方法,特别是通过对移植U-boot的方法和常见问题的详细介绍。
本文作者创新点:阐明了在基于RISC芯片(ARM、MIPS,PPC等)的系统开发中实现bootloader的方法,为广大的嵌入式开发人员提供了一个参考。
参考文献:
[1] 朱义君 杨育红 赵凯 段志英,AT91系列ARM微控制器体系结构与开发实例[M],北京航空航天大学出版社,2005
[2] Atmel Corporation, ARM920TTM Based Microcontroller AT91RM9200,2004
[3] Wookey, Chris Rutter, Jeff Sutherl, Paul Webb, The GNU Toolchain for ARM Targets HOWTO.
[4] The DENX U-BOOT and Linux Guide (DULG), http://www.denx.de/twiki/bim/view/DULG/Mannual
[5] 万永波 张根宝 田泽 杨峰,基于ARM的嵌入式系统Bootloader启动流程分析, 微计算机信息, 2005年,第21卷11-2期,90页
bootloader U-boot AT91RM9200 相关文章:
- WinCE系统下BootLoader的开发(04-10)
- 嵌入式linux启动信息完全注释(04-24)
- PIC18单片机的一种新颖的Bootloader设计(03-28)
- 基于WinCE的嵌入式图像采集系统设计(04-20)
- BLOB启动流程分析及引导程序可移植性研究(07-25)
- ARM处理器的位置无关程序设计(09-19)