3516板卡文件烧写(手拉手教你搞懂烧写)

3516板卡文件烧写(手拉手教你搞懂烧写) 圈圈 2023-11-11 16:09:00 1727

目录

一:烧写uboot

二:烧写内核

三:烧写文件系统并设置启动参数

四:查看我们的boot信息及内存说明

五:执行挂载,进行应用程序开发


拿到板卡后我们一般都会上电看到串口打印的信息,这个表示我们的板子里面已经有了boot文件,内核文件,操作系统文件,那么如何烧写我们的呢?下面手拉手带你一探究竟。

一:烧写uboot

拿到裸机芯片的第一次如果没有uboot那么就要使用hitools这个工具来烧写uboot了(hitools是海思提供的比较实用的工具,如果其他的板卡可能就要使用仿真器来完成烧写啦),我们的板子已经有了boot,我们直接使用网口tftp工具完成烧写即可,板子启动过程中点击任意键进入uboot命令模式:进入如下界面后:

易百纳社区

执行下面指令:

mw.b 0x82000000 0xff 0x100000

tftp 0x82000000 u-boot-hi3516dv300.bin

sf probe 0;sf erase 0x0 0x100000;sf write 0x82000000 0x0 0x100000

这里一个小插曲:因为我选错了uboot文件导致系统烧写失败,烧写失败是下面这个样子(一直上返00):

易百纳社区

那么接下来不好意思我就得使用hitools来烧写啦使用工具烧写时也有三种方式烧写

1、  按分区烧写,烧写时选用好相关文件器件类型写spi nor 文件系统none 开始地址写0文件长度选1M,开始烧写断电上电

2、  按地址烧写flash类型选spi nor 地址写0长度随便填读取文件后会相应变化选择相关文件点击开始烧写,断电上电

3、  烧写fastboot方式烧写,选择器件spinor选择相关文件,断电上电,烧写成功

重新烧写uboot成功后,以前的uboot就没用啦,这里就需要重新设置板卡的ip和服务器的ip

setenv serverip 192.168.2.102

setenv ipaddr 192.168.2.100

uboot启动成功是下面样子:

易百纳社区

笔记:这里来一个经验讲解:我第一次操作的时候在这里犯了错误,主要原因是自己太菜哈,这里设置服务器ip的时候很多开发者大佬都会说他们都是设置的主机ip地址,他们说这个的原因是他们一般都会把烧写文件放在window系统下打开一个tftp工具,然后将烧写文件放在这个工具目录下然后被tftp服务器找到,其实我们这里也可以把服务器ip设置为我们的虚拟机ip的,然后把我们的烧写文件放在tftpboot文件夹下,这是两个方法都可行哈,一定要注意把烧写文件放在对应文件夹下,不然传输错误是下面这样的(然后我一直认为传输正确):

易百纳社区

其实传输正确是这个样子的,会显示数据大小

易百纳社区

二:烧写内核

ping下主机地址或者虚拟机地址第一次ping是alive就好,烧写内核,使用如下指令:

mw.b 0x82000000 0xff 0x400000

tftp 0x82000000 uImage_hi3516dv300

sf probe 0;sf erase 0x100000 0x400000;sf write 0x82000000 0x100000 0x400000

烧写成功后如下样子:

易百纳社区

三:烧写文件系统并设置启动参数

烧写内核时执行如下指令:

mw.b 0x82000000 0xff 0x1b00000

tftp 0x82000000 rootfs_hi3516dv300_64k.jffs2

sf probe 0;sf erase 0x500000 0x1b00000;sf write 0x82000000 0x500000 0x1b00000

烧写完成后保证我们板卡启动,此时需要设置启动参数,(设置两点:boot向内核传递的启动参数,boot启动的命令)

setenv bootargs 'mem=128M console=ttyAMA0,115200 coherent_pool=2M root=/dev/mtdblock2 rootfstype=jffs2 rw mtdparts=hi_sfc:1M(boot),4M(kernel),27M(rootfs)'

setenv bootcmd 'sf probe 0;sf read 0x82000000 0x100000 0x400000;bootm 0x82000000'

saveenv

然后输入reset启动,启动完成后如下:

易百纳社区

四:查看我们的boot信息及内存说明

启动完成后使用printenv指令查看启动信息如下:

易百纳社区

这里的内存地址简单说一下,一般来说我们芯片直接交互的是内存数据哈,还是没有片上内存所以这里的都是DDR内存地址,所以一般来说拿到板子后我们应该查看我们的flash存储类型及大小,DDR的存储及大小,上面的烧写无非都是将数据传输到DDR地址然后再讲数据从ddr地址写到外部flash地址,经常搞电子的一般都会看得懂的,还是回到说存储吧,先说我们的flash,现在我们的flash用的是32M的,大家也可以用64M,128M的随便,我们的32M是留了1M给boot(sf erase 0x0 0x100000)这里擦除1M空间,我们的内核是给了4M的(sferase 0x100000 0x400000)我们剩余的的27M是给了文件系统的(sf erase 0x500000 0x1b00000),我们为什么要使用0x82000000这个地址,这个地址是ddr的地址,在这里可以看做是我们的内存地址。板卡一般的SDRAM是64M或者是256M的这些都懂的,说64M吧整体地址是80000000-83FFFFFF,这里一部分使用了为linux内存(系统使用的80000000-81ffffff)另一部分呢就是MMZ内存,我们是不占用系统使用的那一部分内存的,所以就从82000000开始啦

五:执行挂载,进行应用程序开发

当我们的板卡正常启动后此时ping我们的服务器(linux端)

ping 192.168.2.11

然后执行挂载命令:

mount -t nfs 192.168.2.11:/home/dream/ipc /mnt-o nolock

成功如下:

易百纳社区


声明:本文内容由易百纳平台入驻作者撰写,文章观点仅代表作者本人,不代表易百纳立场。如有内容侵权或者其他问题,请联系本站进行删除。
圈圈
红包 点赞 收藏 评论 打赏
评论
0个
内容存在敏感词
手气红包
    易百纳技术社区暂无数据
相关专栏
置顶时间设置
结束时间
删除原因
  • 广告/SPAM
  • 恶意灌水
  • 违规内容
  • 文不对题
  • 重复发帖
打赏作者
易百纳技术社区
圈圈
您的支持将鼓励我继续创作!
打赏金额:
¥1易百纳技术社区
¥5易百纳技术社区
¥10易百纳技术社区
¥50易百纳技术社区
¥100易百纳技术社区
支付方式:
微信支付
支付宝支付
易百纳技术社区微信支付
易百纳技术社区
打赏成功!

感谢您的打赏,如若您也想被打赏,可前往 发表专栏 哦~

举报反馈

举报类型

  • 内容涉黄/赌/毒
  • 内容侵权/抄袭
  • 政治相关
  • 涉嫌广告
  • 侮辱谩骂
  • 其他

详细说明

审核成功

发布时间设置
发布时间:
是否关联周任务-专栏模块

审核失败

失败原因
备注
拼手气红包 红包规则
祝福语
恭喜发财,大吉大利!
红包金额
红包最小金额不能低于5元
红包数量
红包数量范围10~50个
余额支付
当前余额:
可前往问答、专栏板块获取收益 去获取
取 消 确 定

小包子的红包

恭喜发财,大吉大利

已领取20/40,共1.6元 红包规则

    易百纳技术社区