uboot下 Nand flash 启动 内核与根文件系统
2014-11-28 10:11
369 查看
u-boot版本: u-boot-2010.03_tekkamanninja修改的u-boot
1、将uboot通过j-link烧写到norflash,启动后 saveenv 将参数保存到 nandflash的 0x60000位置。
2、由于uboot将param保存在0x60000位置,与内核不对应,需要修改内核的nand分区,修改内核文件arch/arm/mach-s3c2440/mach-mini2440.c
3、烧写uboot到nand flash
tftp 30008000 uboot.bin
nand erase 0 0x60000
nand write 30008000 0x0 60000
4、烧写kernel到nand flash
这里要看zImage.img是如何制作的
(1)若mkimage –n ‘linux-2.6.32.2’ –A arm –O linux –T kernel –C none –a 0x30008000 –e 0x30008000 –d zImage zImage.img
由此方法制作的烧写方法如下,否则出错
tftp 31000000 zImage.img (不能是0x30008000,否则会出错,启动内核时显示 data abort)
nand erase 0x80000 0x400000 (0x400000 不能是0x500000, 否则又会出错)
nand write 31000000 0x80000 400000
若使用0x30008000 会出错,错误如下:
============================================================
============================================================
(2)若mkimage –n ‘linux-2.6.32.2’ –A arm –O linux –T kernel –C none –a 0x30008000 –e 0x30008040 –d zImage zImage.img
由此方法既可以使用30008000地址来烧写
(3)设置bootcmd参数
setenv bootcmd ‘nand read 31000000 0x80000 400000; bootm 31000000’
5、烧写yaffs2文件系统的时候老是出错,应该把文件系统缩到64M以下再烧写,不知道行不行,待续…………………………
1、将uboot通过j-link烧写到norflash,启动后 saveenv 将参数保存到 nandflash的 0x60000位置。
2、由于uboot将param保存在0x60000位置,与内核不对应,需要修改内核的nand分区,修改内核文件arch/arm/mach-s3c2440/mach-mini2440.c
282 static struct mtd_partition friendly_arm_default_nand_part[] = { 283 [0] = { 284 .name = "supervivi", 285 .size = 0x00060000, 286 .offset = 0, 287 }, 288 [1] = { 289 .name = "param", 290 .offset = 0x00060000, 291 .size = 0x00020000, 292 }, 293 [2] = { 294 .name = "Kernel", 295 .offset = 0x00080000, 296 .size = 0x00500000, 297 }, 298 [3] = { 299 .name = "root", 300 .offset = 0x00580000, 301 .size = 1024 * 1024 * 1024, // 302 }, 303 [4] = { 304 .name = "nand", 305 .offset = 0x00000000, 306 .size = 1024 * 1024 * 1024, // 307 } 308 };
3、烧写uboot到nand flash
tftp 30008000 uboot.bin
nand erase 0 0x60000
nand write 30008000 0x0 60000
4、烧写kernel到nand flash
这里要看zImage.img是如何制作的
(1)若mkimage –n ‘linux-2.6.32.2’ –A arm –O linux –T kernel –C none –a 0x30008000 –e 0x30008000 –d zImage zImage.img
由此方法制作的烧写方法如下,否则出错
tftp 31000000 zImage.img (不能是0x30008000,否则会出错,启动内核时显示 data abort)
nand erase 0x80000 0x400000 (0x400000 不能是0x500000, 否则又会出错)
nand write 31000000 0x80000 400000
若使用0x30008000 会出错,错误如下:
============================================================
Verifying Checksum ... OK XIP Kernel Image ... OK OK Starting kernel ... data abort pc : [<30008008>] lr : [<33fa6500>] sp : 33f3dd24 ip : 00000000 fp : 30008000 r10: 33fc2f08 r9 : 000007cf r8 : 33f3ffe0 r7 : 33f3ffc4 r6 : 33f4131a r5 : 30000100 r4 : 00000000 r3 : 00000000 r2 : 30000100 r1 : 000007cf r0 : 00000000
============================================================
(2)若mkimage –n ‘linux-2.6.32.2’ –A arm –O linux –T kernel –C none –a 0x30008000 –e 0x30008040 –d zImage zImage.img
由此方法既可以使用30008000地址来烧写
(3)设置bootcmd参数
setenv bootcmd ‘nand read 31000000 0x80000 400000; bootm 31000000’
5、烧写yaffs2文件系统的时候老是出错,应该把文件系统缩到64M以下再烧写,不知道行不行,待续…………………………
相关文章推荐
- uboot环境变量设置好后烧写启动内核,文件系统出现的问题
- real6410移植linux2.6.39.4内核(2)-添加nand flash驱动及启动cramfs文件系统
- 移植u-boot-2011.03到S3C2440(utu2440)的方法与步骤###8. u-boot引导启动nand flash中内核和根文件系统cramfs和用户文件系统yaffs2支持
- Linux 内核启动挂载android根文件系统过程分析
- Android内核移植,以及从普通文件系统启动后手动挂载android文件系统
- mini6410基于linux2.6.36内核通过NFS启动根文件系统总结(四制作根文件系统及通过NFS挂载文件系统)
- 删除ubuntu10.04.中的不用内核版本文件 修改 默认启动系统或内核
- uboot启动ramdisk和nfs文件系统,Ubuntu 配置nfs .
- 通过u-boot把内核和文件系统烧录到Nand Flash
- 读出nand flash中的内核、bootloader、文件系统
- mini6410基于linux2.6.36内核通过NFS启动根文件系统总结(五 内核测试 三 通过bootargs设置根文件系统的启动位置)
- mini2440 linux2.6 内核制作-nfs启动根文件系统
- OK6410 tftp下载内核、文件系统以及nand flash地址相关整理、总结
- 嵌入式内核制作、根文件系统及内核启动流程
- imx53的nfs启动内核和文件系统
- uboot 下载内核和文件系统的步骤
- 构建Linux根文件系统一:内核init进程的启动分析
- 通过uboot给arm开发板烧写内核,文件系统
- uboot启动ramdisk和nfs文件系统,Ubuntu 配置nfs .
- 内核kernel、根文件系统rootfs如何映射到对应的nand flash