問 :將uImage 裁剪到小於2M.將uImage 燒錄到nandflash上 ?
A : 發現重新編譯的內核還是大於2M,把內核燒錄到jz2440看內核啓動的打印信息
---》dev/mouse ps/2 是多餘的可以去掉
---》cat /proc/filesystems 中romfs cramfs可以去掉
---》vi .configs 查看裏面那些配置爲"y"的可以去掉內核配置
如果實在改變不了 ,就要修改內核分區 >2M
裁剪成功小於2M
發現裁剪了很多,內核始終還有2.09M.最後用韋老師現成的config_ok配置內核
問 :製作uBoot的補丁?
[email protected]:/work/system/ tar xjf u-boot-2012.04.01.tar.bz2
[email protected]:/work/system/u-boot-2012.04.01$ make distclean
[email protected]:/work/system/ mv u-boot-2012.04.01 u-boot-2012.04.01_100ask
將修改了代碼的u-boot-2012.04.01 改名爲u-boot-2012.04.01_100ask
[email protected]:/work/system$ tar xjf u-boot-2012.04.01.tar.bz2
----》這裏面就是未經繡修改的原汁原味的u-boot
.100ask.org:/work/system$ diff -urN u-boot-2012.04.01 u-boot-2012.04.01_100ask > u-boot-2012.04.01_100ask.patch
--->生成了 u-boot-2012.04.01_100ask.patch 補丁文件
發現打patch沒有成功?????????????分析了半天沒有找到原因
暫且先用自己之前移植的u-boot_3.4.2_bo.bin 來燒錄吧!
問:如何燒錄新的uBOOT ?
使用uboot來更新自己的:
nfs 30000000 192.168.2.102:/work/nfs_root/u-boot_3.4.2_bo.bin
nand erase 0 40000; nand write 30000000 u-boot
將撥碼開關撥到nand啓動,可以成功啓動UBOOT,證明更新成功了
接下來就是燒錄uimage和yaffs2文件系統
nfs 30000000 192.168.2.102:/work/nfs_root/uImage_bo;nand erase.part kernel; nand write 30000000 kernel
nfs 30000000 192.168.2.102:/work/nfs_root/fs_mini_mdev_new.yaffs2;nand erase.part rootfs; nand write.yaffs 30000000 260000 $(filesize)
nand write.yaffs 30000000 260000 $(filesize) 看韋老師 直接寫成nand write.yaffs 30000000 260000 $filesize 是可以的
設置參數:
set 'nand read 30000000 kernel;bootm 30000000'
set machid 16a
save 後 reset 看下系統能否跑起來
爲什麼image 的地址自動變爲30108000,不是設置的啓動地址爲30000000嗎?
set 'nand read 30008040 kernel;bootm 30008040' 同樣也不行 ,分析在u-boot 下使用mtd
懷疑是不是kernel裏面的分區信息不匹配?
再回頭看看100ask韋老師的分區設置爲:
查看內核源碼
root@book-virtual-machine:/work/system/linux-3.4.2/arch/arm/mach-s3c24xx# vi common-smdk.c
將bootloader改爲512K,重新編譯燒錄新內核 uImage_bo_mtd (主要是因內核分區和uboot裏面的分區不匹配)
發現可以啓動內核了,
跑到這裏就不跑了,可以掛載文件系統,
仔細分析可能是因爲自己的內核uboot 分區改了,導致 uImage 和 rootfs 的燒錄位置不對,重新燒錄rootfs試試看
之前的 :nfs 30000000 192.168.2.102:/work/nfs_root/fs_mini_mdev_new.yaffs2;nand erase.part rootfs; nand write.yaffs 30000000 260000 $(filesize)
修改後:
SMDK2410 # set bootargs console=ttySAC0,115200 root=/dev/mtdblock3 rootfstype=yaffs2(之前uboot裏面默認的是jffs2)
nfs 30000000 192.168.2.102:/work/nfs_root/fs_mini_mdev_new.yaffs2;nand erase.part rootfs; nand write.yaffs 30000000 2a0000 $(filesize)
SMDK2410 # mtdpart
device nand0 <jz2440-0>, # parts = 4
#: name size offset mask_flags
0: u-boot 0x00080000 0x00000000 0
1: params 0x00020000 0x00080000 0
2: kernel 0x00200000 0x000a0000 0
3: rootfs 0x0fd60000 0x002a0000 0
還是不行
考慮是不是nand 燒錄rootfs的命令寫的不對?
試着改爲燒錄jffs2吧:
nand write.jffs2:向Nand Flash寫入jffs2鏡像到相應的分區。
nand write.yaffs:同理,實現yaffs文件系統鏡像的燒寫,這個命令不一定所有版本的u-boot支
哈哈哈 ,燒錄jffs2,reset後,燒錄完成就OK了!
總結:
root:u-boot_3.4.2_bo.bin
uimage:uImage_bo_mtd (分區正確)
uImage_net 分區正確又支持網卡 ok
rootfs: fs_mini_mdev_new.jffs2
nfs 30000000 192.168.2.102:/work/nfs_root/fs_mini_mdev_new.jffs2;nand erase.part rootfs; nand write.jffs2 30000000 2a0000 $filesize
set bootargs console=ttySAC0,115200 root=/dev/mtdblock3 rootfstype=jffs2
set machid 16a
save