网络安全参考 | UNIX参考 | GPS参考 | 无线参考 | 在线手册 | OSBUG.ORG | SUNNY-NETWORK.COM
天线制作 GPS 地标
网站地图 RSS订阅
高级搜索 收藏本站
Home | 业界动态 | Open source | GNU | Linux | BSD | Solaris | AIX | HP-UX | IRIX | Mac OS X | Minix | Tru64 | SCO UNIX | Network | Security | X-Window | Database | 应用服务 | Programming | 经典著作 | 永远的纪念 | 杂项
 当前位置: Home > Linux > 嵌入式系统 > Boot loader > u-boot > 文章  
U-BOOT的启动流程及移植
文章来源: 文章作者: 发布时间: 2006-11-16   字体: [ ]  
 

  4 移植时的具体修改要点

  若预先编译没有错误就可以开始硬件相关代码的移植,首先必须要对移植的硬件有清楚地了解,如CPU、CPU的控制寄存器及启动各阶段程序在Flash SDRAM中的布局等。

  笔者在移植过程中先修改/include/config/my-board.h头文件中的大部分参数(大部分的宏定义都在这里设置) ,然后按照u-boot的启动流程逐步修改。修改时应熟悉ARM汇编语言和C语言,同时也应对u-boot启动流程代码有深入的了解。B2板的CPU频率为75MHz、Flash为4Mbit、SDRAM为16Mbit、串口波特率为115200bit/s、环境变量放在EEPROM中。根据两个开发板的不同,需要修改的有:CPU的频率、Flash和SDRAM容量的大小、环境变量的位置等。由于参考板已经有了大部分的代码,因此只需要针对myboard进行相应的修改就可以了。与之相关的文件有/include/config/myboard.h(大部分的宏定义都在这里设置) 、/board/myboard/flash.c Flash的驱动序、/board/myboard/myboard.c(SDRAM的驱动程序) 、/cpu/s3c44b0/serial.c(串口的驱动使能部分) 等。

  /include/config/myboard.h是全局宏定义的地方,主要的修改有:

  将#define CONFIG_S3C44B0_CLOCK_SPEED 75改为

  #define CONFIG_S3C44B0_CLOCK_SPEED 64

  将 #define PHYS_SDRAM_1_SIZE 0x01000000 /* 16 MB */ 改为

  #define PHYS_SDRAM_1_SIZE 0x00800000 /* 8 MB */;

  将 #define PHYS_FLASH_SIZE 0x00400000 /* 4 MB*改为

  #define PHYS_FLASH_SIZE 0x00200000 /* 2 MB */;

  将 #define CFG_MAX_FLASH_SECT 256 /* max number of sectors on one chip */改为

  #define CFG_MAX_FLASH_SECT 35 ;

  将 #define CFG_ENV_IS_IN_EEPROM 1 /* use EEPROM for environment vars*/改为

  #defineCFG_ENV_IS_IN_FLASH 1

  其它(如堆栈的大小等) 可根据需要修改。

  由于Flash、SDRAM的容量会发生变化,故应对启动阶段程序在Flash、SDRAM中的位置重新作出安排。笔者将Flash中的u-boot代码放在0x0开始的地方,而将复制到SDRAM中的u-boot代码安排在0xc700000开始的地方。

  Flash的修改不仅和容量有关,还和具体型号有关,Flash存储器的烧写和擦除一般不具有通用性,应查看厂家的使用说明书,针对不同型号的存储器作出相应的修改。修改过程中,需要了解Flash擦写特定寄存器的写入地址、数据命令以及扇区的大小和位置,以便进行正确的设置。

  SDRAM要修改的地方主要是初始化内存控制器部分,由start.s文件中的 cpuinit crit完成CPU cache的设置,并由board/myboard/memsetup.s中的memsetup完成初始化SDRAM。S3C44B0提供有SDRAM控制器,与一些CPU需要UPM表编程相比,它只需进行相关寄存器的设置修改即可,因而降低了开发的难度。

  串口波特率不需要修改(都是115200bit/s) ,直接用B2板的串口驱动即可。串口的设置主要包括初始化串口部分,值得注意的是:串口的波特率与时钟MCLK有很大关系,详见CPU用户手册。

  配置好以后,便可以重新编译u-boot代码。将得到的u-boot.bin通过JTAG口下载到目标板后,如果能从串口输出正确的启动信息,就表明移植基本成功。实际过程中会由于考虑不周而需要多次修改。移植成功后,也可以添加一些其它功能(如LCD驱动等) ,在此基础上添加功能相对比较容易。

  5 结束语

  u-boot是一个功能强大的bootloader开发软件,适用的CPU平台及支持的嵌入式操作系统很多。本文是笔者在实际开发过程中根据相关资料进行摸索,并在成功移植了u-boot的基础上总结出来的。对于不同的CPU和开发板,其基本的方法和步骤是相同的,希望能对相关嵌入式系统的设计人员有所帮助。

--
原文链接: http://www.21ic.com/news/n9546c63.aspx

 
推荐文章
 
 
共4页: 上一页 [1] [2] [3] 4 下一页
↑返回顶部   打印本页   关闭窗口↓  

Google
 
Web oldhand.org unixreference.net meshmea.org
相关分类
热点文章
·U-Boot简介
·U-Boot在S3C2410上的移
相关文章
·U-Boot简介
·U-Boot在S3C2410上的移
·ARM的嵌入式Linux移植体
更多...
 
 

Copyright(c) 2001-2009 OLDHAND ORGANIZATION, All Rights reserved.
Power by DedeCms 织梦内容管理系统