最近在海思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内核和文件系统的下载

    内核:

    文件系统:

    请进入我的资料 进行下载