从上次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 = <&ethphy>;
	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通了。

 

此作者没有提供个人介绍。
最后更新于 2020-07-21