从上次uboot网络ping通后再一次搞定了kernel的网络配置!又对kernel的内核有了新的认识。
首先是dts文件驱动树的修改,该部分相当于单片机的引脚配置部分,通过配置寄存器来进行初始化引脚功能。
①不同设备有相应的dts文件
②同一设备的dts文件可以不唯一
hi3516av200就有两个dts和一个dtsi以及一个编译后的dtb文件主要其中dtsi文件的优先级较高相当于*.h文件,dts文件相当于.c。两个dts文件相同的定义部分需要一致。
/*hisi-hi3516av200.dtsi*/
higmac: ethernet@10050000 {
compatible = "hisilicon,higmac";//应该是相关定义的意思
reg = <0x10050000 0x1000>,<0x120100ec 0x4>;//寄存器部分可以通过datasheet来明白相关定义
interrupts = <0 25 4>;//配置中断
clocks = <&clock HI3516AV200_ETH_CLK>,
<&clock HI3516AV200_ETH_MACIF_CLK>;//相关时钟
clock-names = "higmac_clk",
"macif_clk";
resets = <&clock 0xcc 0>,
<&clock 0xcc 2>,
<&clock 0xcc 0x7>;//寄存器配置
reset-names = "port_reset",
"macif_reset",
"phy_reset";
/*hisi-3516av200(-hmp)-demb.dts*/
&mdio {
ethphy: ethernet-phy@1 {
reg = <1>;
};
};
&higmac {
compatible = "hisilicon,higmac-v3", "hisilicon,higmac";
phy-handle = <ðphy>;
phy-mode = "rmii";//修改这里!!!!
};
网上查阅资料基本上都是说要修改这里,看了寄存器好像还有需要配置的不用管。但是两个.dts的文件需要修改phy-mode。在新版本的hisi芯片配置kernel中在menuconfig界面中没有选择rmii的选项了,故在这里修改。
按照网上的说法改到这里应该网络就可以了然而,我这里即使uboot可以ping通但是kernel还是不行。
这次卡住的位置需要注意底层寄存器的配置不能少,这次主要关注了datasheet里写的CRG51\59寄存器了管脚复用寄存器由于没在datasheet里在同文件夹下的另一个xml文件里。没有被注意到,故没有更改。(总是百度来的,不知所以然是要出问题的)0x12040140 要改成0x3(不知道为什么这个寄存器不改不会影响uboot)
其次通过-menuconfig 命令进行配置。就是那种古老的bios界面可以修改相关,相关配置可以通过“/”查询,这部分应该是内核配置的关键部分,选择需要加载的相关驱动部分。

本次对这里基本没有更改(因为是官方配置例程)只是勾选了Realtek的网络驱动部分。有没有影响以后有机会测试。最后“esc”退出保存。
尝试ping一下,就可以ping通了。

Comments NOTHING