Hi3516DV300三天入门之---(二)固件烧录以及驱动修改
一、 固件烧录:
固件烧录这里可以直接参考易佰纳的快速入门手册
1、准备工作:准备好Hi_Tools烧录工具:
需要烧录的固件(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服务了。
- 分享
- 举报
-
浏览量:907次2023-12-28 14:24:27
-
浏览量:715次2023-12-28 17:04:03
-
浏览量:1133次2023-12-28 14:35:34
-
浏览量:2489次2023-06-28 15:57:28
-
浏览量:1313次2023-12-05 15:31:55
-
浏览量:2801次2022-10-14 10:34:46
-
浏览量:1504次2023-06-12 14:18:20
-
浏览量:850次2023-06-21 10:04:00
-
浏览量:1319次2023-06-20 16:09:54
-
浏览量:4864次2022-10-17 20:51:39
-
浏览量:8342次2022-06-01 10:01:04
-
浏览量:5119次2023-03-20 13:32:44
-
浏览量:2280次2023-07-12 15:22:31
-
浏览量:3608次2022-10-13 17:29:06
-
浏览量:1136次2024-06-06 09:47:33
-
浏览量:2683次2020-07-28 17:54:29
-
浏览量:15606次2020-09-12 15:07:52
-
浏览量:8640次2022-10-17 20:30:19
-
浏览量:1729次2023-06-12 14:34:37
-
广告/SPAM
-
恶意灌水
-
违规内容
-
文不对题
-
重复发帖
你会了没
感谢您的打赏,如若您也想被打赏,可前往 发表专栏 哦~
举报类型
- 内容涉黄/赌/毒
- 内容侵权/抄袭
- 政治相关
- 涉嫌广告
- 侮辱谩骂
- 其他
详细说明