Chinaunix首页 | 论坛 | 博客
  • 博客访问: 317393
  • 博文数量: 51
  • 博客积分: 1975
  • 博客等级: 上尉
  • 技术积分: 645
  • 用 户 组: 普通用户
  • 注册时间: 2009-12-17 19:07
文章分类

全部博文(51)

文章存档

2011年(8)

2010年(43)

分类: LINUX

2010-03-22 16:11:05

一、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
 
 
阅读(1709) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~