1、裁剪内核
(1)查看内核大小
(2)裁剪(通过make menuconfig去掉不需要的项)
把一些单板文件去掉
看.config文件,看一下有哪些东西,如单板:搜索mini2440的单板,
如单板AT2440EVB没见过可以在搜索栏中搜索并去掉(输入斜杠进入搜索界面)
搜索结果如下,到相应位置去掉不必要项
把一些不需要的文件系统去掉
前面带M的是作为模块的不用管,只需理会前面带*的,因为是要编译进内核的。
(3)看输出信息,看一下有哪些我们不需要
,因为我们没有PS/2接口
再看一下临时生成的文件系统,看一下不需要的文件系统
2、重新制作u-boot,因为之前有一个bug
(1)先清除掉生成的目标文件
(2)重命名改好的u-boot,解压原版的u-boot,从而制作补丁
3、mkyaffs2image工具
(1)解压文件
(2)解压后是Development_util_ok\yaffs2\utils目录下
(3)在utils目录下执行make 命令可以生成mkyaffs2image工具
我们用git命令下载的yaffs里面有这个工具,但是不完整,编译时有问题的
4、ECC简介
(1)介绍
(2)我们制作出来的yaffs映像,mkyaffs2image工具生成的映像文件既包含一页数据,也包含OOB 数据
(3)OOB里面的数据如何排放(看Mkyaffs2image.c)
useecc表示使用ecc,eccpos表示ecc的位置,OOB是64字节,
校验码是每256个字节生成3字节的ECC码,ECC码总共24字节
obbfree表示oob除了一部分放ECC,其他可以让你使用,这里2是表示从哪个字节开始,总共有38个字节(39-2+1),yaffs把它用作yaffs_tag
第0位表示是否坏块,0XFF表示为好,0表示是坏的。
5、实验
制作了u-boot_new.bin, uImage_new, fs_mini_mdev_new.yaffs
重烧整个系统:
使用jtag工具烧u-boot_new.bin
或使用uboot来更新自己: tftp 30000000 u-boot_new.bin; nand erase.part u-boot; nand write 30000000 u-boot
启动uboot,用它来烧写内核、FS
tftp 30000000 uImage_new; nand erase.part kernel; nand write 30000000 kernel
tftp 30000000 fs_mini_mdev_new.yaffs2; nand erase.part rootfs; nand write.yaffs 30000000 260000 $filesize
设置参数
set 'nand read 30000000 kernel;bootm 30000000'
set bootargs console=ttySAC0,115200 root=/dev/mtdblock3
set machid 16a
save
6、制作内核补丁
(1)制作补丁前把.config拷贝为config_ok,保存内核的配置
(2)清除生成的目标文件
(3)更改修改后的内核的名字,解压原版内核,diff命令生成补丁文件
(4)给内核打补丁,然后cp config_ok .config,然后进行make uImage编译内核