海思3516dv300如何使用tftp烧录uboot、内核、文件系统

    科技2024-11-14  13

    海思3516dv300如何使用tftp烧录uboot、内核、文件系统

    准备工作

    1、win10电脑、开发板、网线、串口2、secureCRT(连接串口)、tftpd32.exe软件。

    以 128M SPI NAND Flash 为例

    1. 地址空间说明

    1M4M123Mbootkernelrootfs

    以下的操作均基于图示的地址空间分配,您也可以根据实际情况进行调整。

    2、配置tftp服务器

    tftp服务器的作用就是将烧录用到的uboot等相关文件拷贝到从tftp服务器目录下下载到板子上。 打开tftpd32.exe软件,如下图所示,tftfp32既然是个ftfp服务器,那么首先就要选择文件的路径,点击Browse,选择要传输文件的路径:

    接下来选择你要给某个设备传输文件的IP(比如开发板,路由器等),这个ip一定不能选错哦。同时还要保证这个IP和windows下的IP在同一个网段下。注意,如果没有目标ip可以选择,通常是因为目标没有上电。

    选择好路径和IP后,可以用目标机ping windows的IP,能ping通就表示可用。

    3、 修改bootargs、bootcmd和serverip参数

    进入uboot命令行后,你可以输入“print”命令,打印查看现在的环境变量,接下来就是修改几个重要的环境变量:bootargs、bootcmd和serverip。输入如下命令做修改

    setenv bootargs '' setenv bootcmd '' setenv serverip 'your computer IP' saveenv

    注意: ip那里得修改成你电脑的ip。 将这两个信息做屏蔽,这样系统上电后只会停留在uboot模式,方便调试uboot(这里其实就可以用HiTool.exe软件进行uboot、kernel和rootfs等进行烧写了)。

    参数解释

    bootargs:用于配置启动内核参数、系统分区等; bootcmd:用于启动uboot后,内核自启动相关的参数。 serverip:确保开发板与电脑同一个网段,该参数是电脑的IP

    如果出现 *** ERROR: `ipaddr’ not set 则再输入如下命令:

    setenv ipaddr 192.168.1.102

    4. 烧写 u-boot

    在secureCRT软件hisi3516dv300板子的串口终端依次输入如下命令:

    mw.b 0x82000000 0xff 0x100000 tftp 0x82000000 u-boot-hi3516dv300.bin nand probe 0;nand erase 0x0 0x100000;nand write 0x82000000 0x0 0x100000

    含义说明:

    mw.b 0x82000000 0xff 0x100000 :对内存进行初始化,其中0x82000000为flash内存地址**tftp 0x82000000 u-boot-hi3516dv300.bin ** :U-boot下载到内存nand probe 0:探测并初始化nand flashnand erase 0x0 0x100000:擦除1M大小nand write 0x82000000 0x0 0x100000 :从内存写入nand flash

    5. 烧写内核

    mw.b 0x82000000 0xff 0x400000 tftp 0x82000000 uImage_hi3516dv300 nand erase 0x100000 0x400000;nand write 0x82000000 0x100000 0x400000

    6.烧写文件系统

    yaffs2文件系统的选型要根据自己板子的flash来,我的flash是nand 128KB\128M的,选择的是2k_24bit。

    mw.b 0x82000000 0xff 0x7b00000; tftp 0x82000000 rootfs_hi3516dv300_2k_24bit.yaffs2; nand erase 0x500000 0x7b00000; nand write.yaffs 0x82000000 0x500000 9C1F00

    还要注意下面的写到内存的大小,需要计算yaffs2文件系统的大小,是文件系统镜像的十进制转换成的十六进制大小。

    7. 设置启动参数

    (注意 linux-4.9.y kernel 默认文件系统只读,需要在 bootargs 中加入rw 选项,文件系统才可读写)

    setenv bootargs 'mem=128M console=ttyAMA0,115200 coherent_pool=2M root=/dev/mtdblock2 rootfstype=jffs2 rw mtdparts=hinand:1M(boot),4M(kernel),123M(rootfs)' setenv bootcmd 'nand read 0x82000000 0x100000 0x400000;bootm 0x82000000' saveenv

    8. 重启系统

    reset

    烧写成功,如下图 注意:当有uboot时,可以不用重新烧写uboot,只需要重新烧写内核和文件系统即可。

    翟羽嚄 认证博客专家 算法 机器学习 图像处理 我经常会分享一些智能驾驶、自动驾驶、图像识别、嵌入式linux、嵌入式音视频开发等知识,有兴趣的朋友可以关注我的头条号——翟羽镬,ID:1661013377414159,这里会分享一些整理好的且有一定价值的文章和源码。
    Processed: 0.094, SQL: 8