简单说说U-boot的修改
2006-04-22 15:56
267 查看
uboot是一个通用的免费开放源码的boot程序,支持很多的处理器。以下是现在网上下载一个u-boot-1.1.1版本,用于at91rm9200系统的修改的例子。最后在redhat8.0上,用gcc2.95编译通过。
在网上下载了uboot-1.1.1版本。要用于自己的at91rm9200的系统,这个系统的情况是:
SDRAM: 32Mbytes NCS1
FLASH: 8Mbytes NCS0
涉及到的文件有四个:
common.h
flash.c
flash.h
”./board/at91rm9200dk/config.mk”
以下简单的说说。
一、首先读读uboot自带的readme文件,了解了一个大概。
二、看看common.h,这个文件定义了一些基本的东西,并包含了一些必要的头文件。再看看flash.h,这个文件里面定义了flash_info_t为一个struct。包含了flash的一些属性定义。并且定义了所有的flash的属性,其中,AMD的有:AMD_ID_LV320B,定义为“#define AMD_ID_LV320B 0x22F922F9”。
三、对于“./borad/at91rm9200dk/flash.c”的修改,有以下的方面:“void flash_identification(flash_info_t *info)”这个函数的目的是确认flash的型号。注意的是,这个函数里面有一些宏定义,直接读写了flash。并获得ID号。
四、修改:”./board/at91rm9200dk/config.mk”为TEXT_BASE=0x21f80000 为TEXT_BASE=0x21f00000 (当然,你应该根据自己的板子来修改,和一级boot的定义的一致即可)。
五、再修改”./include/configs/at91rm9200dk.h”为修改flash和SDRAM的大小。
六、另外一个要修改的文件是:./borad/at91rm9200dk/flash.c。这个文件修改的部分比较的多。
1. 首先是OrgDef的定义,加上目前的flash。
2. 接下来,修改”#define FLASH_BANK_SIZE 0x200000”为自己flash的容量
3. 在修改函数flash_identification(flash_info_t * info)里面的打印信息,这部分将在u-boot启动的时候显示。
4. 然后修改函数flash_init(void)里面对一些变量的赋值。
5. 最后修改的是函数flash_print_info(flash_info_t * info)里面实际打印的函数信息。
6. 还有一个函数需要修改,就是:“flash_erase”,这个函数要检测先前知道的flash类型是否匹配,否则,直接就返回了。把这里给注释掉。
七、接下来看看SDRAM的修改。这个里面对于“SIZE”的定义都是基于字节计算的。只要改”./include/configs/at91rm9200dk.h”里面的“#define PHYS_SDRAM_SIZE 0X200000”就可以了。注意,SIZE是以字节为单位的。
八、还有一个地方要注意,就是按照目前的设定,一级boot把u_boot加载到了SDRAM的空间为:21F00000 -> 21F16B10,这恰好是SDRAM的高端部分。另外,BSS为21F1AE34。
九、编译后,可以写入flash了。
1. 压缩这个u-boot.bin“gzip –c u-boot.bin > u-boot.gz”压缩后的文件大小为:43Kbytes
2. 接着把boot.bin和u-boot.gz烧到flash里面去。Boot.bin大约11kBytes,在flash的0x1000 0000 ~ 0x1000 3fff
在网上下载了uboot-1.1.1版本。要用于自己的at91rm9200的系统,这个系统的情况是:
SDRAM: 32Mbytes NCS1
FLASH: 8Mbytes NCS0
涉及到的文件有四个:
common.h
flash.c
flash.h
”./board/at91rm9200dk/config.mk”
以下简单的说说。
一、首先读读uboot自带的readme文件,了解了一个大概。
二、看看common.h,这个文件定义了一些基本的东西,并包含了一些必要的头文件。再看看flash.h,这个文件里面定义了flash_info_t为一个struct。包含了flash的一些属性定义。并且定义了所有的flash的属性,其中,AMD的有:AMD_ID_LV320B,定义为“#define AMD_ID_LV320B 0x22F922F9”。
三、对于“./borad/at91rm9200dk/flash.c”的修改,有以下的方面:“void flash_identification(flash_info_t *info)”这个函数的目的是确认flash的型号。注意的是,这个函数里面有一些宏定义,直接读写了flash。并获得ID号。
四、修改:”./board/at91rm9200dk/config.mk”为TEXT_BASE=0x21f80000 为TEXT_BASE=0x21f00000 (当然,你应该根据自己的板子来修改,和一级boot的定义的一致即可)。
五、再修改”./include/configs/at91rm9200dk.h”为修改flash和SDRAM的大小。
六、另外一个要修改的文件是:./borad/at91rm9200dk/flash.c。这个文件修改的部分比较的多。
1. 首先是OrgDef的定义,加上目前的flash。
2. 接下来,修改”#define FLASH_BANK_SIZE 0x200000”为自己flash的容量
3. 在修改函数flash_identification(flash_info_t * info)里面的打印信息,这部分将在u-boot启动的时候显示。
4. 然后修改函数flash_init(void)里面对一些变量的赋值。
5. 最后修改的是函数flash_print_info(flash_info_t * info)里面实际打印的函数信息。
6. 还有一个函数需要修改,就是:“flash_erase”,这个函数要检测先前知道的flash类型是否匹配,否则,直接就返回了。把这里给注释掉。
七、接下来看看SDRAM的修改。这个里面对于“SIZE”的定义都是基于字节计算的。只要改”./include/configs/at91rm9200dk.h”里面的“#define PHYS_SDRAM_SIZE 0X200000”就可以了。注意,SIZE是以字节为单位的。
八、还有一个地方要注意,就是按照目前的设定,一级boot把u_boot加载到了SDRAM的空间为:21F00000 -> 21F16B10,这恰好是SDRAM的高端部分。另外,BSS为21F1AE34。
九、编译后,可以写入flash了。
1. 压缩这个u-boot.bin“gzip –c u-boot.bin > u-boot.gz”压缩后的文件大小为:43Kbytes
2. 接着把boot.bin和u-boot.gz烧到flash里面去。Boot.bin大约11kBytes,在flash的0x1000 0000 ~ 0x1000 3fff
相关文章推荐
- 简单说说U-boot的修改
- 简单说说U-boot的修改
- 简单说说U-boot的修改
- 简单说说U-boot的修改
- uboot-2011.12移植到S3C2440(一)—— 简单修改使u-boot能够编译
- U-Boot 1.1.2 简单修改smdk2410.h
- u-boot-2013.07在mini2440上的移植(二):从简单修改入手
- ReadDirectoryChangesW 监控文件夹 (一个简单的监控示例程序)(文件被修改了,也可以探测到)
- ubuntu修改hosts立即生效的简单方法
- springboot 中使用websocket简单例子
- 简单查看和修改数据库的只读/读写属性
- 修改显示设置的简单封装类
- 简单修改JWplayer.html5.js 去除水印 和about 信息
- Ubuntu9.10硬盘安装(修改boot.ini写法)
- cmd设置环境变量的、查看、修改(覆盖与添加)简单说明。
- 【旧代码整理】分享带cookie的PHP Curl操作class,再简单说说curl配合socks5代理、IP变身
- js修改eWebEditor的内容,简单方法
- 第一个基于Spring-Boot框架的项目以及Java8新特新之stream流操作的简单细说
- 简单说说sharepoint虚机 -- 金大昊(jindahao)
- 简单说说PHP优化