您的位置:首页 > 其它

arm下如何烧写指定分区大小的内核和文件系统

2014-11-29 23:51 393 查看
最近在海思3518e平台下烧写内核和文件系统,由于项目需要,需要运行海思SDK中的测试软件HiIspTool,不能使用精简后的文件系统,需要刷一个比较大的文件系统,但在此过程中由于各种原因,弄坏了一个板子,烧坏了一个uboot,由于要卸下SPI NOR FLASH,重新烧写实在太过麻烦,放弃了该板子。在此过程中走了些弯路,在此记录下主要过程和注意事项,希望能够提醒自己和刚如何这方面的新手,共勉!

1.板子上电时按住ctrl+c进入uboot模式
2.设置UBOOT模式的板子的IP和PC服务端的IP,使用Tftpd进行内核和文件系统的下载,比较快,如果使用串口下载的话,需要使用超级终端软件,非常慢。
setenv ipaddr 192.168.1.106 设置本板子的IP
setenv serverip 192.168.1.100 你的宿主机的IP,即开Tftpd的ip
设置后ping下确保网络通着。

3、内核烧写
mw.b 82000000 ff 140000; 在内存0x82000000后填充140000个11111111
tftp 0x82000000 uImage_hi3518e_mini; 下载内核文件
sf probe 0; 选在当前Flash
sf erase 40000 140000; 擦除将要写入内核的1.4M空间
sf write 82000000 40000 140000; 将刚下载的内核写入到40000内存开始处,大小为1.4M,最后一个参数为偏移地址
我使用的内核大小为1.2M,给其分配了1.4M的空间,注意内核的大小不能大于给内核分配的空间大小,以上几条命令可以连在一起进行操作,中间以;分隔即可,这样效率比较高

4、文件系统烧写

mw.b 82000000 ff 620000;
tftp 0x82000000 rootfs_64k_mpp.jffs2;;
sf probe 0;
sf erase 180000 620000;
sf write 82000000 180000 620000;
给文件系统分配了6.2M的空间,在此没有分配其他的用户等等分区。

5、设置启动参数
setenv bootargs 'mem=28M console=ttyAMA0,115200 root=/dev/mtdblock2 rootfstype=jffs2 mtdparts=hi_sfc:256K(boot),1280K(kernel),6144K(rootfs)';
最重要的是mtdparts参数的设置,本人使用的内核支持mtd驱动,即内核通过mtdparts参数可以找到文件系统并创建MTD分区,在此boot、kernel、rootfs的大小必须是spi Block大小的整倍数,如本人使用的Block大小为64KB,另外还有128KB,256KB两种,注意三快分区的大小之和不要超过整个Flash的大小。
setenv bootcmd 'sf probe 0;sf read 0x82000000 0x40000 0x140000;bootm 0x82000000';
bootcmd在启动时执行的命令,0x40000 0x140000代表从0x40000开始处读取内核,大小为140000。

另:提供本人此次烧录的3518e内核和文件系统的下载
内核:
文件系统:
请进入我的资料 进行下载

本文出自 “大师兄” 博客,请务必保留此出处http://cto521.blog.51cto.com/9652841/1584602
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: