编辑: 捷安特680 | 2013-04-12 |
⑦ 较为丰富的开发调试文档与强大的网络技术支持;
2 U-Boot主要目录结构 - board 目标板相关文件,主要包含SDRAM、FLASH驱动;
- common 独立于处理器体系结构的通用代码,如内存大小探测与故障检测;
- cpu 与处理器相关的文件.如mpc8xx子目录下含串口、网口、LCD驱动及中断初始化等 文件;
- driver 通用设备驱动,如CFI FLASH驱动(目前对INTEL FLASH支持较好) - doc U-Boot的说明文档;
- examples可在U-Boot下运行的示例程序;
如hello_world.c,timer.c;
- include U-Boot头文件;
尤其configs子目录下与目标板相关的配置头文件是移植过程 中经常要修改的文件;
- lib_xxx 处理器体系相关的文件,如lib_ppc, lib_arm目录分别包含与PowerPC、ARM体 系结构相关的文件;
- net 与网络功能相关的文件目录,如bootp,nfs,tftp;
- post 上电自检文件目录.尚有待于进一步完善;
- rtc RTC驱动程序;
- tools 用于创建U-Boot S-RECORD和BIN镜像文件的工具;
3 U-Boot支持的主要功能 U-Boot可支持的主要功能列表 系统引导 支持NFS挂载、RAMDISK(压缩或非压缩)形式的根文件系统 支持NFS挂载、从FLASH中引导压缩或非压缩系统内核;
基本辅助功能 强大的操作系统接口功能;
可灵活设置、传递多个关键参数给操作系统, 适合系统在不同开发阶段的调试要求与产品发布,尤对Linux支持最为强劲;
支持目标板环境参数多种存储方式,如FLASH、NVRAM、EEPROM;
CRC32校验,可校验FLASH中内核、RAMDISK镜像文件是否完好;
设备驱动 串口、SDRAM、FLASH、以太网、LCD、NVRAM、EEPROM、键盘、USB、PCMCIA、PC I、RTC等驱动支持;
上电自检功能 SDRAM、FLASH大小自动检测;
SDRAM故障检测;
CPU型号;
特殊功能 XIP内核引导;
4 移植前的准备 推荐01/10 ペ`ジ u-boot 移植步骤详解--EmbedTheWorld 2007/12/19 http://www.mcublog.com/blog/user1/6385/archives/2006/12029.html 密码: 记住密码 ?用户注册?忘记密码 登录 友情连接Shark'
s Design Notes MCU博客-中国电子工程师博客网 博客信息详细信息 站内订阅(0) 加为好友 发送短信 日志:27 评论:33 留言:0 访问:17172 (1)、首先读读uboot自带的readme文件,了解了一个大概. (2)、看看common.h,这个文件定义了一些基本的东西,并包含了一些必要的头文件. 再看看flash.h,这个文件里面定义了flash_info_t为一个struct.包含了flash的一些属 性定义.并且定义了所有的flash的属性,其中,AMD的有:AMD_ID_LV320B,定义为 #de fine AMD_ID_LV320B 0x22F922F9 . (3)、对于 ./borad/at91rm9200dk/flash.c 的修改,有以下的方面: void flash_identification(flash_info_t *info) 这个函数的目的是确认flash的型 号.注意的是,这个函数里面有一些宏定义,直接读写了flash.并获得ID号. (4)、修改: ./board/at91rm9200dk/config.mk 为TEXT_BASE=0x21f80000 为TEXT_BASE=0x21f00000 (当然,你应该根据自己的板子来修 改,和一级boot的定义的一致即可). (5)、再修改 ./include/configs/at91rm9200dk.h 为 修改flash和SDRAM的大小. (6)、另外一个要修改的文件是: ./borad/at91rm9200dk/flash.c.这个文件修改的部分比较的多. ?????? a. 首先是OrgDef的定义,加上目前的flash. ?????? b. 接下来,修改 #define FLASH_BANK_SIZE 0x200000 为自己flash的? 容量 ?????? c. 在修改函数flash_identification(flash_info_t * info)里面的打印信息, 这部分将在u-boot启动的时候显示. ?????? d. 然后修改函数flash_init(void)里面对一些变量的赋值. ?????? e. 最后修改的是函数flash_print_info(flash_info_t * info)里面实际打印的 函数信息. ?????? f. 还有一个函数需要修改,就是: flash_erase ,这个函数要检测先前知道 的flash类型是否匹配,否则,直接就返回了.把这里给注释掉. (7)、接下来看看SDRAM的修改. 这个里面对于 SIZE 的定义都是基于字节计算的. 只要修改 ./include/configs/at91rm9200dk.h 里面的 #define PHYS_SDRAM_SIZE 0X200000 就可以了.注意,SIZE是以字节为单位的. (8)、还有一个地方要注意 就是按照目前的设定,一级boot把u_boot加载到了SDRAM的空间为:21F00000 ->