移植u-boot-2012.04----修改默认参数、烧写yaffs文件

来源:互联网 发布:不成问题的问题 知乎 编辑:程序博客网 时间:2024/05/19 14:02

环境参数的设置:

串口打印信息
* Warning - bad CRC, using default environment
搜索 using default environment
找到默认参数的数组定义:

const uchar default_environment[] = {#ifdef  CONFIG_BOOTARGS    "bootargs=" CONFIG_BOOTARGS         "\0"#endif#ifdef  CONFIG_BOOTCOMMAND    "bootcmd="  CONFIG_BOOTCOMMAND      "\0"#endif#if defined(CONFIG_BOOTDELAY) && (CONFIG_BOOTDELAY >= 0)    "bootdelay="    MK_STR(CONFIG_BOOTDELAY)    "\0"#endif

smdk2440.h配置中添加:

#define   CONFIG_BOOTARGS   "console=ttySAC0  root=/dev/mtdblock3" //串口打印,根文件#define   CONFIG_BOOTCOMMAND  "nand read 30000000  kernel;bootm 30000000"  //启动内核

修改smdk2440.h默认参数

#define CONFIG_NETMASK      255.255.255.0 //子网掩码#define CONFIG_IPADDR       10.0.0.110  //开发板ip#define CONFIG_SERVERIP     10.0.0.1  //服务器ip

#define CONFIG_NETMASK      255.255.255.0#define CONFIG_IPADDR         192.168.1.7#define CONFIG_SERVERIP     192.168.1.100#define CONFIG_ETHADDR     00:0c:29:6f:17:35 

然后对u-boot做一些裁剪,在smdk2440.h中注销不需要的定义即可。

save命令环境设置

下载一个移植好的内核,看一下分区分区信息print
这里写图片描述
一直没有使用save,可能会破坏flash内容。因为save到哪里和配置有关
这里写图片描述

修改smdk2440.h

#define CONFIG_ENV_ADDR         (CONFIG_SYS_FLASH_BASE + 0x070000)#define CONFIG_ENV_IS_IN_FLASH#define CONFIG_ENV_SIZE         0x10000/* allow to overwrite serial and ethaddr */#define CONFIG_ENV_OVERWRITE

修改为:

#if 0#define CONFIG_ENV_ADDR         (CONFIG_SYS_FLASH_BASE + 0x070000)#define CONFIG_ENV_IS_IN_FLASH#define CONFIG_ENV_SIZE         0x10000/* allow to overwrite serial and ethaddr */#define CONFIG_ENV_OVERWRITE#endif  #define  CONFIG_ENV_IS_IN_NAND#define  CONFIG_ENV_OFFSET   0x00040000#define  CONFIG_ENV_SIZE     0x20000#define  CONFIG_ENV_RANGE    CONFIG_ENV_SIZE 

修改好的smdk2440.h移动到linux编译生成u-boot.bin烧写。
set ipaddr 192.168.1.7
set ethaddr 00:0c:29:6f:17:35 //linux下 ifconfig查看
set serverip 192.168.1.100
save

启动tftp 从新烧写新的u-boot
tftp 30000000 u-boot.bin
protect off all
erase 0 3ffff
cp.b 30000000 0 40000
reset

烧写:内核
tftp 30000000 uImage
nand erase 60000 200000
nand write 30000000 60000 200000
bootm 30000000

uboot分区设置

ource insight 搜 mtdparts
linux下
vi common/Makefile
/parts
找到
COBJS-$(CONFIG_CMD_MTDPARTS) += cmd_mtdparts.o

修改smdk2440.h添加宏定义

#define  CONFIG_CMD_MTDPARTS  

分区设置方法:
cmd_mtdparts.c
int mtdparts_init(void)

grep “mtdpart” * -nR
结果:

include/configs/TQM866M.h:275:#define MTDPARTS_DEFAULT  "mtdparts=TQM8xxM-0:512k(u-boot),"  \

添加TQM866M.h到source insight,看看里面怎样设置分区

#define MTDIDS_DEFAULT      "nor0=TQM8xxM-0"#define MTDPARTS_DEFAULT    "mtdparts=TQM8xxM-0:512k(u-boot),"  \                        "128k(dtb),"        \                        "1920k(kernel),"    \                        "5632(rootfs),"     \                        "4m(data)"

修改如下:

#define MTDIDS_DEFAULT      "nand0=jz2440-0"  /*设备名*/#define MTDPARTS_DEFAULT    "mtdparts=jz2440-0:256k(u-boot),"   \                        "128k(params),"     \                        "2m(kernel),"   \                        "5632(rootfs),"     \

“5632(rootfs),” 的修改
grep “MTDPARTS_DEFAULT” * -nR
结果:

include/configs/omap3_beagle.h:156:#define MTDPARTS_DEFAULT     "mtdparts=nand:512k(x-loader),"\

修改为:”-(rootfs)”

错误修改:
这里写图片描述

这里写图片描述
vi drivers/mtd/Makefile
/core
结果:

 COBJS-$(CONFIG_MTD_DEVICE) += mtdcore.o

所以还要定义 CONFIG_MTD_DEVICE
在smdk2440.h 添加:

 #define   CONFIG_MTD_DEVICE

u-boot分区设置总的修改

#define  CONFIG_CMD_MTDPARTS #define   CONFIG_MTD_DEVICE#define MTDIDS_DEFAULT      "nand0=jz2440-0"  /*设备名*/#define MTDPARTS_DEFAULT    "mtdparts=jz2440-0:256k(u-boot),"   \                        "128k(params),"\                        "2m(kernel),"   \                        "-(rootfs)"     \   

修改添加:board.c(arch/asm/arm/lib)
//mtdparts_init();
run_command (“mtdparts default”,0);

重新烧写内核:
tftp 30000000 uImage
nand erase.part kernel
nand write 30000000 kernel

烧写JFFS2、YAFFS2文件

烧写JFFS2
tftp 30000000 fs_mini_mdev.jffs2
nand erase.part rootfs
nand write.jffs2 30000000 0x00260000 jffs2文件大小

set bootargs console=ttySAC0 root=/dev/mtdblock3 rootfstype=jffs2
boot

烧写YAFFS
tftp 30000000 fs_mini_mdev.yaffs2
nand erase.part rootfs
nand write.yaffs 30000000 260000 yaffs2文件大小

错误
这里写图片描述
修改
这里写图片描述
smdk2440.h中添加定义

#define CONFIG_CMD_NAND_YAFFS

烧写YAFFS
错误
这里写图片描述
修改:
这里写图片描述

这里写图片描述

图:
这里写图片描述
三条下载命令:
tftp 30000000 u-boot.bin; protect off all; erase 0 3ffff; cp.b 30000000 0 40000

tftp 30000000 uImage; nand erase.part kernel; nand write 30000000 kernel

tftp 30000000 fs_mini_mdev.yaffs2;nand erase.part rootfs;nand write.yaffs 30000000 260000 791340

阅读全文
0 0
原创粉丝点击