一、u-boot移植
#tar jxvf u-boot.tar.bz2
#cd u-boot
1. 创建自己的开发板(一般是找一相近的开发板)
#cd board
#cp -a smdk2410 fs2410
#cd fs2410
#mv smdk2410.c fs2410.c
修改开发板目录(fs2410)下的Makfile文件
#vim Makefile (将smdk2410改为fs2410)
回u-boot根目录
#cd include/configs
#cp smdk2410.h fs2410.h
退回u-boot根目录
#vim Makefile
增加
fs2410_config: unconfig
@$(MKCONFIG) $(@:_config=) arm arm920t fs2410 NULL s3c24x0
更改
ifeq ($(ARCH),arm)
CROSS_COMPILE = arm-softfloat-linux-gnu-
2. 编译:
#make fs2410_config
#make
编译生成u-boot.bin文件。
注:以上未涉及具体开发板相关文件的修改!
二、u-boot基本常用命令
1. 基本环境设置
setenv serverip 192.168.1.104
setenv ipaddr 192.168.1.205
setenv gatewayip 192.168.1.1
setenv ethaddr 11:22:33:44:55:66
#setenv bootargs root=/dev/mtdblock2 rootfstype=yaffs init=/linuxrc mem=64M console=ttySAC0,115200
//内核中Nand的分区情况,u-boot属于mtdblock0,kernel属于mtdblock1,root就属于mtdblock2,所以这里要设置成root=/dev/mtdblock2,否则文件系统无法启动成功,会出现一些什么I/O之类的误 #saveenv
2. 烧写Boot
tftp 30008000 u-boot.bin
nand erase 0 30000
nand write 30008000 0 30000
3. 加载内核
tftp 30008000 zImage
go 30008000 //手动加载内核
或
tftp 310000 uImage
bootm
4. 烧写rootfs
tftp 30008000 rootfs.yaffs //用tftp将yaffs2文件系统下载到内存的0x30008000位置
nand erase 240000 200000 //擦除Nand的文件系统分区
nand write.yaffs 30008000 240000 $(filesize) //将内存中的yaffs2文件系统写入Nand的文件系统分区,注意这里的$(filesize)
如nand write.yaffs 0x30008000 0x00240000 0x4baf20是yaffs文件系统的实际大小(可以在tftp传送完后可以看到),要写正确,否则会形成假
坏块
5. 烧写内核(内核,驱动文件系统都完全配置好了之后才烧入flash中,前面都是在让内核在内存中跑来测试,避免反复烧写flash!)
tftp 30008000 zImage
nand erase 40000 200000
nand write 30008000 40000 200000
setenv bootcmd nand read 30008000 40000 200000 \; go 30008000 //让u-boot自动启动内核
saveenv
6. erase appfs分区
nand erase 1240000 2DC0000
补充:在完成以下操作后进行上面的操作
1.修改nand flash分区:
arch/arm/plat-s3c24xx/common-smdk.c
/* NAND parititon from 2.4.18-swl5 */
static struct mtd_partition smdk_default_nand_part[] = {
[0] = {
.name = "BootLoader",
.size = 0x00040000, /* 256KB */
.offset = 0,
},
[1] = {
.name = "Kernel",
.size = 0x00200000, /* 2MB */
.offset = 0x00040000,
},
[2] = {
.name = "Rootfs",
.size = 0x01000000, /* 16MB */
.offset = 0x00240000,
},
[3] = {
.name = "Appfs",
.size = 0x02DC0000, /* 44MB + 792KB */
.offset = 0x01240000,
}
};
2. 在u-boot终端:
//Erase Kernel Partition
nand erase 40000 200000
//Erase Rootfs Partition
nand erase 240000 1000000
//Erase Appfs Partition
nand erase 1240000 2DC0000
3. yaffs2补丁(给配置内核#make menuconfig加入yaffs文件系统支持):
./patch-ker.sh c ../linux-2.6.29
阅读(1703) | 评论(0) | 转发(0) |