嵌入式BootLoader移植实验三文档格式.doc
《嵌入式BootLoader移植实验三文档格式.doc》由会员分享,可在线阅读,更多相关《嵌入式BootLoader移植实验三文档格式.doc(17页珍藏版)》请在冰豆网上搜索。
![嵌入式BootLoader移植实验三文档格式.doc](https://file1.bdocx.com/fileroot1/2022-10/7/a90cde48-7ad0-4dc8-b3fc-81c6e5e3783a/a90cde48-7ad0-4dc8-b3fc-81c6e5e3783a1.gif)
2014年4月制
一、实验目的
1、熟悉Bootloader工作原理。
2、了解U-Boot的代码结构。
3、掌握U-Boot移植过程。
二、实验内容
本实验熟悉Bootloader工作原理,了解U-Boot源码结构,基于S3C2440处理器,完成U-Boot移植,并在目标开发板上测试通过。
三、移植环境
u-boot版本:
u-boot-2011-03
Linux平台:
Fedora14
交叉编译工具:
arm-linux-gcc-4.3.3
arm开发板:
micro2440
CPU:
S3C2440
SDRAM:
64M1
NorFlash:
2M
NandFlash:
256M
网卡:
DM9000EP
四、实验过程
1、建立Micro2440配置
(1)按下图所示命令解压u-boot-2011.03-micro2440.tar压缩包
(2)输入命令:
geditboards.cfg打开boards.cfg文件。
在boards.cfg中添加一行:
micro2440armarm920t-samsungs3c24x0语句。
(3)创建板级支持文件
输入命令:
cp-rboard/samsung/smdk2410board/samsung/micro2440
cdboard/samsung/micro2440/
mvsmdk2410.cmicro2440.c
geditMakefile
将COBJS:
=smdk2410.oflash.o改为COBJS:
=micro2440.oflash.o
cd../../..
cpinclude/configs/smdk2410.hinclude/configs/micro2440.h
geditinclude/configs/micro2440.h
修改内容一:
#defineCONFIG_SYS_PROMPT"
[Micro2440]#"
/*MonitorCommandPrompt*/
修改内容二:
#defineCONFIG_SYS_SDRAM_BASEPHYS_SDRAM_1
#defineCONFIG_SYS_INIT_SP_ADDR(CONFIG_SYS_SDRAM_BASE+0x1000-GENERATED_GBL_DATA_SIZE)
(4)测试编译环境
输入命令:
makemicro2440_config
出现:
Configuringformicro2440board...
输入命令:
make
Generatinginclude/autoconf.mk
Generatinginclude/autoconf.mk.dep
......
arm-linux-objcopy-Osrecu-bootu-boot.srec
arm-linux-objcopy--gap-fill=0xff-Obinaryu-bootu-boot.bin
2、在RAM中运行
(1)在根目录下进入include/configs文件夹
输入命令:
geditmicro2440.h,打开micro2440.h文件。
(2)在micro2440.h中
删除:
#defineCONFIG_S3C24101/*specificallyaSAMSUNGS3C2410SoC*/
#defineCONFIG_SMDK24101/*onaSAMSUNGSMDK2410Board*/
添加:
#defineCONFIG_S3C24401/*specificallyaSAMSUNGS3C2440SoC*/
#defineCONFIG_MICRO2440
#defineCONFIG_SKIP_LOWLEVEL_INIT
(3)在根目录下进入arch/arm/cpu/arm920t文件夹
geditstart.S
按下图所示进行修改部分内容:
(4)在根目录board/samsung/micro2440下中输入geditmicro2440.c命令
(5)测试
在根目录下输入命令:
make
编译完成后将u-boot.bin下载到SDRAM的0x33f80000地址处,u-boot已经能在RAM中运行。
3、支持DM900
(1)在根目录下打开include/configs文件夹,执行geditmicro2440.h命令
删除:
#defineCONFIG_CS8900/*wehaveaCS8900on-board*/
#defineCONFIG_NETMASK255.255.255.0
#defineCONFIG_IPADDR10.0.0.110
#defineCONFIG_SERVERIP10.0.0.1
#defineCONFIG_CMD_NET
#defineCONFIG_DRIVER_DM90001
#defineCONFIG_DM9000_NO_SROM1
#defineCONFIG_DM9000_BASE0x20000300
#defineDM9000_IOCONFIG_DM9000_BASE
#defineDM9000_DATA(CONFIG_DM9000_BASE+4)
#defineCONFIG_CMD_PING
#defineCONFIG_ETHADDR08:
00:
3e:
26:
0a:
5b//开发板MAC地址
#defineCONFIG_NETMASK255.255.255.0
#defineCONFIG_IPADDR192.168.10.126//开发板IP地址
#defineCONFIG_SERVERIP192.168.10.124//主机IP地址
(2)在根目录下进入board/samsung/micro2440文件夹执行geditmicro2440.c命令
(3)在根目录下进入arch/arm/lib文件夹执行gediteabi_compat.c命令
(4)在根目录下进入drivers/net文件夹执行geditdm9000x.c命令
在修改staticintdm9000_init(structeth_device*dev,bd_t*bd)函数中内容,如下图所示:
(5)测试
在根目录下输入命令:
编译完成后将u-boot.bin下载到SDRAM的0x33f80000地址处,u-boot已经能在RAM中运行。
测试结果如下图所示:
4、支持内核启动
(1)在根目录下进入include/configs文件夹执行geditmicro2440.h命令
#defineCONFIG_SETUP_MEMORY_TAGS1//如果没有定义这个参数,则uboot参数必须加入men=内存大小
(2)在根目录下进入arch/arm/lib文件夹执行geditbootm.c命令
在staticvoidannounce_and_cleanup(void)函数中添加:
#ifndefCONFIG_MICRO2440
cleanup_before_linux();
#endif
(3)自动启动内核
如果要自动启动内核,需要include/conskfigs/micro2440.h定义CONFIG_BOOTCOMMAND,类似如下内容:
#defineCONFIG_BOOTCOMMAND"
nandread0x300080000x600000x300000;
bootm0x30008000"
(4)测试
编译完成后将u-boot.bin下载到SDRAM的0x33f80000地址处,u-boot已经能在RAM中运行。
5、支持NandFlash
(1)添加s3c2440_nand.c文件
在根目录下输入touchdrivers/mtd/nand/s3c2440_nand.c指令进行文件的创建,
在根目录下输入geditdrivers/mtd/nand/s3c2440_nand.c命令打开文件。
在DEBUGN("
board_nand_init()/n"
);
下面修改如图所示的三句内容:
(2)在根目录下进入drivers/mtd/nand文件夹中执行geditMakefile命令
#COBJS-$(CONFIG_NAND_S3C2440)+=s3c2440_nand.o如下图所示:
(3)在根目录下进入include/conskfigs文件夹打开micro2440.h文件
#defineCONFIG_MTD_DEVICE
#defineCONFIG_NAND_S3C2440
#defineCONFIG_CMD_NAND