| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 嵌入式 -> HI3798MV200驱动移植 -> 正文阅读 |
|
[嵌入式]HI3798MV200驱动移植 |
1.UBOOT配置修改方法,需要对应版本的HITOOL,个人也是废了很大劲,开始版本不对,怎么调试都不对。首先打开界面之后附带各种工具,修改配置需要用到HIREGBIN(用xls的方法没学会,学会了再分享吧,感觉还是这个工具方便点)。 首先将芯片切换成HI3798MV200,点击HIREGBIN,弹出对话框,选择对应文件 source\boot\sysreg\hi3798mv200 hi3798mv200_reg_base_v1.5.9.bin 加载完成后选择从reg导入查看,浏览选择对应文件 根据个人理解,分享一些信息,有不对的请指正。HI3798M与之前HI3536的有些不同,HI3798M一次可以写入多个配置,通过V18管脚的AD采样数值才确定加载那一种文件。对应的加载关系在Source\boot\fastboot.mak中可以修改,在\config\hi3798mv200\hi3798mv2dmo_hi3798mv200_cfg.mak文件有名称定义。 Source\boot\fastboot.mak 此次应用采用1.925V采样,对应文件是 source\boot\sysreg\hi3798mv2dmc_hi3798mv200_DDR4-2133_2GB_16bitx2_4layers.reg 导入后即可修改DDR配置、管脚复用等信息 2.由EMMC启动改为SPI NAND FLASH 启动 系统允许一起来了,不过DEMO是EMMC,要改成SPI NAND FLASH启动。首先配置表里的SPI NAND配置管脚必须要选择正确。注意复用里有个启动方式选项,修改此处为SPI管脚复用会自动修改。注意此处只是修改管脚复用,不代表选SPI了就必须从SPI启动,如果SPI 和EMMC管脚复用都选择的话,根据硬件设置是可以切换的,不过对应的烧写文件有稍微的区别。 对应修改硬件的启动模式,将系统改成SPI NAND 启动。但是UBOOT烧写不成功…… 原因查了2天,最终通过打印发现SPI NAND 不识别的原因是 \config\hi3798mv2x.h中的CONFIG_SPI_NAND_SUPPORT未定义,导致 CONFIG_HIFMC100_SPI_NAND_SUPPORT未定义 #? ifdef CONFIG_SPI_NAND_SUPPORT #??? define CONFIG_HIFMC100_SPI_NAND_SUPPORT #? endif 最后导致 drivers/mtd/nand/hinfc_init.c:88:#ifdef CONFIG_HIFMC100_SPI_NAND_SUPPORT drivers/mtd/nand/nand.c:48:#ifdef CONFIG_HIFMC100_SPI_NAND_SUPPORT 中SPI NAND 程序未执行 解决方法:增加 #define CONFIG_SPI_NAND_SUPPORT???????? 1 3.网络调试 开始UBOOT下调试网络发现网络不通,测了一些信号发现PHY一直被复位,配置表格里选的是RGMII_RST。最后改成GPIO,手动增加复位了,复位在内核中添加了,后面再介绍 在这分享一下UBOOT PHY 初始化过程
4.UBOOT修改完了,开始移植内核,分享一些经验 在根目录执行make build的话要编译文件系统,时间比较长。执行完可以单独执行make hiboot 和make linux单独编译UBOOT和内核。 另外有时候make build编译内核时过不去,注意提示会有recipe for target 'prepare3' failed。在内核目录执行make mrproper,再回根目录执行make build即可 5.PHY复位 drivers/net/ethernet/hisilicon/higmac/higmac.c 引用 higmac_hw_phy_reset(priv); 此文件在drivers/net/ethernet/hisilicon/higmac/board.c中,执行软复位或者硬复位 对应是寄存器0xF8A2_20CC的第5位,PHY 软复位功能 设备树文件位置:linux-4.4.y/arch/arm/boot/dts /hi3798mv200.dts IO硬复位通过设备树中phy-gpio-base 体现,本设计采用GPIO7_1,将phy-gpio-base修改为GPIO7的地址,phy-gpio-bit修改为1 ??????? phy-gpio-base = <0xF8B27000>; ?????????????? phy-gpio-bit = <1>; 不过原函数为软复位,增加硬复位,增加HIGMAC_RESET_PHY_BY_GPIO。注意原程序中如果执行软复位的话就不执行硬复位了,修改一下判断关系即可。 6.内核起来网络不通,Ifconfig没有信息,输入如下信息,或者加入/etc/init.d/rcS中 ifconfig eth0 down ifconfig eth0 hw ether xxxx ifconfig eth0 xxx netmask xxx ifconfig eth0 up route add default gw xxxx 同样设置eth1即可 7.增加RTC 需要在内核中增加RTC,首先将menuconfig配置文件修改(新手一枚,方式有点笨), 在xxx/HiSTBLinuxV100R005C00SPC050/source/kernel/linux-4.4.y/目录下执行 Cp? /home/emo/hi3798/HiSTBLinuxV100R005C00SPC050/source/kernel/linux-4.4.y/arch/arm/configs/hi3798mv200_defconfig ?.config 将.config文件替换为当前配置文件 再执行make ARCH=arm CROSS_COMPILE=arm-histbv320-linux- menuconfig,执行 /RTC? 搜索。 进入device drivres------real time clock ,选中 再进入选中ds1307 保存退出,然后将系统配置文件更新 Cp? .config? xxx/kernel/linux-4.4.y/arch/arm/configs/hi3798mv200_defconfig 确认管脚复用没问题,在设备树的I2C中增加对应RTC信息,编译。 烧写后系统运行提示OPPS,查看说有空指针。最后定位在chips[id->driver_data]上。将rtc-ds_1307.c中chips[id->driver_data]改成ds_1307就好了(此处改动有些武断,也请高手指点) 8.PHY 灯ACT LINK 问题 此次采用RTL8211,网络灯配置需要修改,参见手册。 发现Higmac.c调用phy_register_fixups最终指向 drivers/net/ethernet/hisilicon/higmac/phy_fix.c中rtl8211f_phy_fix,在其中增加LED设置即可。 9.PHY link状态查询 drivers/net/phy/phy.c:94:????????????????? "Link is Up - %s/%s - flow control %s\n", RGMII TXDL 延时控制,这个寄存器应该是隐藏的,手册里并没有体现,此处只做记录。 enable TXDLY 10.ETH0 网络状态灯,因为自带的灯被RGMII占用了,无耐只能接其他GPIO模拟一下,写了一个测试程序,检测网络状态,控制LED,对linux还不太熟,仅作为测试使用。 附 链接: HI3798MV200 对应HItool 含配置表格修改工具HIREGBIN https://download.csdn.net/download/Emo_snaf/20720584?spm=1001.2014.3001.5501 HI3798MV200 手册,含芯片手册、HiRegBin 工具使用指南和linux开发环境用户指南 https://download.csdn.net/download/Emo_snaf/20720549?spm=1001.2014.3001.5501 HI3798M GPIO模拟网络灯控制 https://download.csdn.net/download/Emo_snaf/20720527?spm=1001.2014.3001.5501 |
|
嵌入式 最新文章 |
基于高精度单片机开发红外测温仪方案 |
89C51单片机与DAC0832 |
基于51单片机宠物自动投料喂食器控制系统仿 |
《痞子衡嵌入式半月刊》 第 68 期 |
多思计组实验实验七 简单模型机实验 |
CSC7720 |
启明智显分享| ESP32学习笔记参考--PWM(脉冲 |
STM32初探 |
STM32 总结 |
【STM32】CubeMX例程四---定时器中断(附工 |
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/25 18:38:44- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |