Hi3516DV300三天入门之---(二)固件烧录以及驱动修改

Hi3516DV300三天入门之---(二)固件烧录以及驱动修改 你会了没 2023-12-27 15:48:08 1940

一、 固件烧录:

固件烧录这里可以直接参考易佰纳的快速入门手册
1、准备工作:准备好Hi_Tools烧录工具:
![](http://ebaina.oss-cn-hangzhou.aliyuncs.com/res/images/202312/27/new_20231227-151457-351.png)![](http://ebaina.oss-cn-hangzhou.aliyuncs.com/res/images/202312/27/new_20231227-150537-397.png)![](http://ebaina.oss-cn-hangzhou.aliyuncs.com/res/images/202312/27/new_20231227-150531-648.png)
需要烧录的固件(Uimage、uboot、文件系统)

参考HiTool工具平台使用指南:

2、首先,在芯片选择项中选择对应芯片型号:Hi3516DV300

3、传输方式选择串口,开发板连接电脑,点击刷新,选择对应串口号COMx。(需要安装CH340(341)的串口驱动)
也可以使用网线烧录,网线烧录方式参考使用指南,这里介绍串口下载.

4、点击下面窗口的按分区烧写,接着按右边绿色加号添加两行,点击文件栏位置,可以看到出现了一个文件夹的图标,点击进去,选择需要烧录的固件。

5、如图从上到下依次为uboot文件、Uimage、文件系统。器件类型选择spi nor,地址我按照易佰纳的来分配的,文件系统不是很大的可以自行修改。
接着左边勾选上三个文件,如图:点击烧写,接着按一下开发板的PWR按键重新上电,就可以看到控制台下面显示已经在下载了。

烧录之前建议先点擦除全器件,先将Flash擦除干净。

6、烧写成功后、点击终端,调出终端窗口(在下面),选择串口连接,参数默认,连上之后按回车就可以看到已经进入boot界面了,接下来就是要配置boot启动。

7、分别输入以下三条命令:

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

如图:

8、接着输入reset命令,回车,重启。出现以下界面,说明启动成功,

二、驱动修改

上一篇文章说到使用原厂SDK编译的固件在加载sys_config.ko之后会与网口冲突导致网线无法使用,原因是182开发板使用的网口引脚与海思原厂的不一样,
1、先看看海思原厂SDK对应DEMO板的网口部分原理图:(原厂DEMO板我资料上传了)

2、而182开发板的原理图使用的引脚为:

3、驱动初始化如图:

4、现象:虽然引脚不一样,但是易佰纳提供的配置表(就是资料里哪个.xlsm表格)是已经改好了,所以在前面一键编译的固件中是可以通过网线通讯的,但是加载了ko驱动就不行了。
5、原因:
原因就是原理图中E18、E19、F18、F19、G18这几个引脚,在内核中初始化为网口了,但是加载ko驱动的时候。Ko给他初始化成SPI1接口了,所以加载KO驱动后网口就用不了了。也是因为海思提供的DEMO板就是初始化为SPI的,人家的网口没用这几个引脚。

6、解决办法:
进入SDK目录下Hi3516CV500_SDK_V2.0.2.0/interdrv/sysconfig/ 到这里可以看到里面有个sys_config.c的文件,里面就是3516启动的时候初始化的内容了。
打开这个文件,在550-650行之间可以看到一个函数,名字为void spi1_pin_mux(void)的函数,这个就是SPI1引脚的复用初始化程序,将里面四个寄存器地址与资料ReleaseDOC/00.hardware/chip/Hi3516DV300/Hi3516DV300_PINOUT_CN.xlsx,这个表格里面进行对比就可以看到确实是SPI1对应的引脚。
知道了原因,解决方法就是把SPI1引脚复用的初始化程序屏蔽掉不让他初始化就可以了,这样的话SPI1以后都用不了了,目前暂时只能这样解决了。
7、首先在900多行这个位置有调用SPI1的初始化函数,屏蔽掉就行。

8、还有就是后面void sensor_bus_pin_mux(int index, bus_type bus_type, const char name)这个函数里面,有一个if判断使用哪个SPI,就像IIC一样,后面如果使用SPI的设备,并且设备号设置为1的话也会调用SPI1的初始化函数,所以这里要把它也屏蔽掉,如果确实SPI0不够用的话可以把这里改成SPI2,因为182的SPI2是空闲的,引出了IO。

*9、
上面两处屏蔽之后就可以了,回到 Hi3516CV500_SDK_V2.0.2.0/interdrv/sysconfig/或者上面两处屏蔽之后就可以了,回到Hi3516CV500_SDK_V2.0.2.0/interdrv/目录下执行make,然后就可以看到Hi3516CV500_SDK_V2.0.2.0/interdrv/sysconfig/下的sys_config.ko文件更新了。把这个ko拷贝到板端替换原来的ko,重新加载启动就好了。

因为目前我使用的SDK为2.0.3.0的版本,前面两个教程写的是2.0.2.0的,不过都大差不差了,只是里面文件的框架不太一样,后面的我就直接使用3.0的SDK了,可能文件目录与前面的文章有所出入,到时候仔细找找就可以了。

到这里环境还不能算是搭建完成,因为现在使用的固件为make all一键编译出来的,使用的是精简的配置,最主要的是没有Telnet服务,因此接下来就需要添加telnetd服务了。

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

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

举报反馈

举报类型

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

详细说明

审核成功

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

审核失败

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

小包子的红包

恭喜发财,大吉大利

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

    易百纳技术社区