HI3798MV200驱动移植
目录
1.UBOOT配置修改方法
2.由EMMC启动改为SPI NAND FLASH 启动
3.网络调试
4.PHY复位
5.内核起来网络不通
6.增加RTC
7.PHY 灯ACT LINK 问题
8.PHY link状态查询
9.ETH0 网络状态灯修改
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 初始化过程
start_armboot |
arch\arm\lib\board.c |
eth_initialize |
net\eth.c |
board_eth_init |
board\hi3798mv2x:board.c |
higmac_initialize |
driver\net\higmacv300 |
parse_module_parameters |
driver\net\higmacv300 |
get_eth_phymdio |
board\hi3798mv2x:eth_cfg_setup.c |
4.PHY复位
UBOOT修改完了,开始移植内核,分享一些经验
在根目录执行make build的话要编译文件系统,时间比较长。执行完可以单独执行make hiboot 和make linux单独编译UBOOT和内核。
另外有时候make build编译内核时过不去,注意提示会有recipe for target 'prepare3' failed。在内核目录执行make mrproper,再回根目录执行make build即可
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。注意原程序中如果执行软复位的话就不执行硬复位了,修改一下判断关系即可。
5.内核起来网络不通
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即可
6.增加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就好了(此处改动有些武断,也请高手指点)
7.PHY 灯ACT LINK 问题
此次采用RTL8211,网络灯配置需要修改,参见手册。
发现Higmac.c调用phy_register_fixups最终指向
drivers/net/ethernet/hisilicon/higmac/phy_fix.c中rtl8211f_phy_fix,在其中增加LED设置即可。
8.PHY link状态查询
drivers/net/phy/phy.c:94: "Link is Up - %s/%s - flow control %s\n",
RGMII TXDL 延时控制,这个寄存器应该是隐藏的,手册里并没有体现,此处只做记录。
enable TXDLY
9.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
HI3798MV200驱动移植相关推荐
- [lcm] Qualcomm平台的显示屏lcd驱动移植步骤
1lk部分 1-1 target_displayc 1-2 oem_panelc 1-3 panel_innont51021b_1200p_videoh 2Kernel 2-1 dsi-panel-b ...
- (转载)TL-WN725N V3无线网卡驱动移植与wireless工具wpa_supplicant-2.6
感谢以及转载于: TL-WN725N V3无线网卡驱动移植与wireless工具wpa_supplicant-2.6 目录: 一.TL-WN725N V3无线网卡驱动移植 下载源码 解压源码 编译 二 ...
- 基于MT6752/32平台 Android L版本驱动移植步骤
基于MT6752/32平台 Android L版本驱动移植步骤 根据MK官网所述,在Android L 版本上Turnkey ABS 架构将会phase out,而Mediatek Turnkey架构 ...
- uboot环境下mmc操作_【记录】将Uboot 2011.06中mmc驱动移植到uboot 1.1.6的过程
[记录]将Uboot 2011.06中mmc驱动移植到uboot 1.1.6的过程 时间:2011-8-14 作者:crifan 联系方式:green-waste (at) 163.com 附上代码: ...
- RT3070_STA_驱动移植文档
[连载]RT3070STA 驱动移植 移植环境: 主机操作系统:Ubantu10.10 目标系统:at91sam9m10内核linux-2.6.30 交叉编译 ...
- 移植基于linux-2.6.26.5内核s3c2410触摸屏驱动移植
移植基于linux-2.6.26.5内核s3c2410触摸屏驱动移植的过程记录下来: (1)首先打一个补丁:s3c2410_touchscreen.patch, 在内核解压的根目录下 patch -N ...
- AM335x(TQ335x)学习笔记——GPIO关键驱动移植
或按照S5PV210学习秩序.我们首先解决的关键问题.TQ335x有六个用户按钮,每个上.下.剩下.对.Enter和ESC. 我想开始学习S5PV210当同一,写输入子系统驱动器的关键问题要解决,但浏 ...
- linux3.0-内核自带led驱动移植
**************************************************************************************************** ...
- 详细记录丨Realtek RTL8188FU WiFi 驱动移植
1 参考资料 1.芯片数据手册:TL8188FCA.pdf 2.驱动移植手册:Quick_Start_Guide_for_Driver_Compilation_and_Installation.pdf ...
- linux字符驱动向vxworks移植,VxWorks驱动移植至SylixOS总结
本文档描述了将VxWorks中的驱动源码快速移植至SylixOS中的方法,使用时需要结合SylixOS中的VxWorks兼容层实现. 1. 驱动注册与初始化 1.1 VxWorks中驱动注册与初始化 ...
最新文章
- 数据埋点:用户唯一标识
- 为什么vs会输出一个框作为结果_检测与分类专辑 | 对精准目标检测的含不确定性的边界框回归...
- MySQL慢查询日志ES索引模板
- C语言实现字符串匹配的Rabin-Karp算法(附完整源码)
- hadoop家族的各个成员
- 智慧交通day02-车流量检测实现05:小车匀加速案例
- (79)FPGA面试题-Verilog实现五分频
- python实现一对一聊天_vue+django实现一对一聊天功能
- 【系列8】使用Dockerfile创建带MongoDB的Centos Docker镜像
- hdu 5596 GTW likes gt
- android开发我的新浪微博客户端-载入页面UI篇(1.1)
- 软件缺陷分析方法:ODC
- Linux下rpm包x86、i386、i486、i586、i686和x86_64这些后缀含义
- chrome 书签恢复_如何在Chrome和Firefox中恢复意外删除的书签
- 一文读懂APS系统的核心算法和数学理论
- HALEY KOEHN--a good graphic designer recent years
- 2022安好? 2023何如?
- 高级数据操作--联合查询
- 一次关于Uber的通宵抬杠
- RAD Studio 10 自带Demo代码汇总说明