9260二次开发
如果你的板子还有uboot, 那就往下看吧,如果板子的uboot被擦除了,请到群上寻找其他资料,一下内容都是建立在具有uboot的基础上的。
如果你是想在这个板子上跑几个软件而已的,不涉及新的设备与驱动的话,请看我早些天在去上上传的“arm9.pdf”,其中讲的有,如何去掉root密码,进入板子原装系统。
如果你想将这块板子的的内核,文件系统等等完全自己定制的话,请看一下过程,在下面这些操作之后。你将可以将自己编译的内核文件烧写到板子的nandFlash中,并且自己启动,完全和原来一样,阅读此文章之前,希望你已经你已经具备Linux系统基础知识并且认真仔细阅读群上的共享文件“9260调试笔记”;
这里http://pan.baidu.com/s/1bnvUFT1我已经配置好的内核的源码,添加了UVC摄像头支持,无线网卡支持。Nandflash分区经过了调整,kernel分区调整到了3M,也就是说,只要你编译出来的内核小于3M,就可直接烧写在Flash上,无需U盘或SD卡作为中间加载项。当然,再阅读完了这些之后,nandflash的分区,你自己就可以随意定制了,这只是我这么设置的,不是唯一的。
这里是编译好的内核镜像http://pan.baidu.com/s/1uANRS
这里是制作好的cramfs文件系统http://pan.baidu.com/s/1o6OE6xk,可按照下文指出的方法的将这些文件烧写在flash上,完全可用。
1.下载源码完了之后,首先解压:
2.进入源码目录
3.编辑Makefile文件,修改成你的编译器,默认你已经具备这项能力,不再说了。
4.打开linux-2.6.38/arch/arm/mach-at91/board-sam9260ek.c这个文件,你会看到
“static struct mtd_partition __initdata ek_nand_partition”
此结构中包含以下内容:
/*
* NAND flash
*/
static struct mtd_partition __initdata ek_nand_partition[] = {
{
.name = "bootstrap",
.offset = 0,
.size = 0x20000,
},
{
.name = "u-boot",
.offset = 0x00020000,
.size = 0x00040000,
},
{
.name = "u-bootenv",
.offset = 0x00060000,
.size = 0x00020000,
},
{
.name = "kernel",
.offset = 0x00080000,
.size = 0x00300000,
},
{
.name = "rootfs",
.offset = 0x00380000,
.size = 0x00a00000,
},
{
.name = "home",
.offset = 0x00d80000,
.size = 0x01400000,
},
{
.name = "data0",
.offset = 0x02180000,
.size = 0x04200000,
},
{
.name = "data1",
.offset = 0x06380000,
.size =0x01c80000,
},
};
可以看到此结构支出了nandflash的分区信息,
重要的是,这里的分区信息必须要和uboot环境变量种的mtdpart种的参数一样,比如,我这里讲kernel增加到了3M,对应的也要改uboot中的变量,改成3M(kernel);
更改此项之后,配置内核,最好将nandflash 校验改成 “softCRC”
以防挂载文件系统时出错。
然后make uImage
将生成的 uImage拷贝的U盘中
板子上电,
空格进入uboot
假如kernel分区改成了3M,那就输入以下命令
<span style="font-size:18px;">Setenv mtdparts mtdparts=at91_nand:128k(bootstrap),256k(u-boot),128k(u-bootenv),3072k(kernel),10m(rootfs),20m(home),66m(data0),-(data1)</span>
然后输入
<span style="font-size:18px;">setenv bootargs console=ttyS0 root=1f04 rootfstype=cramfs mtdparts=at91_nand:128k(bootstrap),256k(u-boot),128k(u-bootenv),3072k(kernel),10m(rootfs),20m(home),66m(data0),-(data1) enable232 vlcd=0xa1</span>
最终输入 sav
前两个命令中的大小参数是最重要的
比如我把kernel分区设成了3M 对应其中的3072k(kernel)
你用计算器算下刚好等于3M。
然后就是烧写内核和文件系统了:
<span style="font-size:18px;">插入U盘 命令:usb start
fatload usb 0:1 20000000 uImage
nand erase kernel
nand write 20000000 kernel
fatload usb 0:1 20000000 root.cramfs
nand erase rootfs
nand write.e 20000000 rootfs</span>
写完了之后,reset,就会自动进入系统啦
明显看到,内核分区到了3M,编译了usb网卡驱动,插入成功,其他的您就自由发挥吧,我也用这个跑了下mjpg-streamer,还行。下一步就是给这个弄个ubifs文件系统。用起来能方便些。
实在是瞌睡,写的好像比较混乱,反正差不多就是这样,编译过内核的人,一看就会一目了然的,不用多说了。
634328658最后编辑于20141119
http://blog.csdn.net/coderwuqiang