u-boot-2012.04.01流程以及移植说明
编译烧写测试,设置ipaddr,ethaddr参数,设置完成以后ping,但此时设置参数不要保存,因为参数的保存地址没有设置,测试可以用TFTP工具来下载内核
14、易用性修改/裁剪系统:
搜索u-boot启动信息中的CRC报警:“using default environment”即可找到在common/Env_common.c中有默认环境变量数组:default_environment[],其中bootargs=CONFIG_BOOTARGS、bootcmd=CONFIG_BOOTCOMMAND为传给内核的启动参数,要手动在在配置文件:/include/configs/smdk2440.h文件中定义一下:
#define CONFIG_BOOTARGS "console=ttySAC0 root=/dev/mtdblock3"
#define CONFIG_BOOTCOMMAND "nand read 30000000 kernel;bootm 30000000" //规划好分区,知道内核存在nand flash哪里之后才可以设置,u-boot根据这条命令启动内核
bootdelay:倒数计时时间长度。
ethaddr:可以在这设置
ipaddr:可以在这设置
#define CONFIG_ETHADDR 00:0c:29:4d:e4:f4
裁剪:
修改配置文件:/include/configs/smdk2440.h
从头看那些是不需要的。
屏蔽:CONFIG_USB_OHCI-----CONFIG_DOS_PARTITION
CONFIG_CMD_DATE
CONFIG_CMD_DHCP
CONFIG_RTC...
BOOTP
CONFIG_CMD_USB
file system都不要
编译u-boot文件变成200k,从新划分区,可以参照来的u-boot的分区,老的分区可以启动内核查看内核启动信息或则:
mtd
想知道需要定义哪些宏可以搜索"saveenv",知道在/common/Env_nand.c中可以查看其Makefile就知道要定义哪个宏了。
#if 0
//nor flash环境变量设置
#define CONFIG_ENV_ADDR (CONFIG_SYS_FLASH_BASE + 0x070000)
#define CONFIG_ENV_IS_IN_FLASH
#define CONFIG_ENV_SIZE 0x10000
#define CONFIG_ENV_OVERWRITE
#else
//nand flash环境变量设置
#define CONFIG_ENV_IS_IN_NAND
#define CONFIG_ENV_OFFSET
#define CONFIG_ENV_SIZE
#define CONFIG_ENV_RANGE
#endif
增加mtd命令:
搜索“mtdparts”,参考示例定义下面的宏分区
cmd_mtdparts.c里,可以根据common的Makefile判断需要定义哪个宏开关,同时要手工添加执行mtdparts_init,如下:
#define CONFIG_CMD_MTDPARTS
#define CONFIG_MTD_DEVICE
#define MTDIDS_DEFAULT
#define MTDPARTS_DEFAULT
在board.c里面:
main_loop前面初始化:run_command("mtdparts default", 0);
15、烧写JFFS2:
16、烧写YAFFS:
烧写后发现出错(nand write.yaffs 30000000 260000 889bc0):
NAND write: device 0 offset 0x260000, size 0x889bc0
Unknown nand command suffix .yaffs.
由于nand命令对应cmd_nand.c文件,可知出错语句处宏CONFIG_CMD_NAND_YAFFS没有定义
修改配置文件:/include/configs/smdk2440.h增加:
再烧写u-boot.bin来启动内核发现启动不起来,提示:
VFS: Mounted root (yaffs2 filesystem).
Freeing init memory: 140K
Warning: unable to open an initial console.
Kernel panic - not syncing: No init found.
挂载成功但是缺少文件,可以用:
指令查看烧写数据,和fs_mini_mdev.yaffs2里的二进制文件作比较,看看源文件和烧写地址数据是否一致。
修改:drivers/mtd/nand/Nand_util.c
nand_write_skip_bad函数:
a、
u-boot流程移植说 相关文章:
- Windows CE 进程、线程和内存管理(11-09)
- RedHatLinux新手入门教程(5)(11-12)
- uClinux介绍(11-09)
- openwebmailV1.60安装教学(11-12)
- Linux嵌入式系统开发平台选型探讨(11-09)
- Windows CE 进程、线程和内存管理(二)(11-09)