OpenBMC笔记3:内核的PHY芯片适配

前期针对我的机器改了u-boot dts的PHY配置后,u-boot下是可以获取到IP地址了,在u-boot下可以通过tftp进行BMC的镜像升级。然而,进入内核后,是无法获取到IP地址的,也就是只改u-boot的dts是不够的,还需要修改内核的dts,本文就是写一下针对内核的PHY芯片适配,有写的不对的地方,还请各位读者指正。

1.提取内核代码

使用devtool工具提取Linux的内核代码,具体命令如下:

devtool modify linux-aspeed

具体执行命令的结果如下图所示

2.修改内核设备树

在编译生成镜像的目录里面,通过dtb文件(如下图)初步确认dts文件是aspeed-ast2600-evb.dts。使用vscode工具打开内核代码,在/build/workspace/sources/linux-aspeed目录下。设备树aspeed-ast2600-evb.dts文件在内核代码的arch/arm/boot/dts目录下。

 (1) 梳理硬件设计

在《OpenBMC笔记1:u-boot的PHY芯片适配》文章中介绍到,我的机器使用的是MAC2和MAC3控制器,MAC2用于BMC的专口,需要配置PHY。MAC2通过MDIO2连接到PHY芯片。MAC3用于BMC的共享口。

(2) 具体DTS的修改

在aspeed-ast2600-evb.dts文件中,默认将BMC的4个MAC驱动和4个MDIO驱动都使能了,因为我们的机器只用到了MAC2、MAC3、MDIO2,所以我们需要注释掉MAC0、MAC1、MDIO1、MDIO3、MDIO4的使能。下面是ast2600-evb.dts具体的代码修改。

在aspeed-ast2600-evb.dts文件中,修改mdio节点

/*
&mdio0 {
	status = "okay";

	ethphy0: ethernet-phy@0 {
		compatible = "ethernet-phy-ieee802.3-c22";
		reg = <0>;
	};
};
*/
//只保留mdio1,通过aspeed-g6.dtsi文件和aspeed-g6-pinctrl.dtsi文件,知道mdio1对应MDIO2
&mdio1 {
	status = "okay";

	ethphy1: ethernet-phy@0 {
		compatible = "ethernet-phy-ieee802.3-c22";
		reg = <0>;
	};
};
/*
&mdio2 {
	status = "okay";

	ethphy2: ethernet-phy@0 {
		compatible = "ethernet-phy-ieee802.3-c22";
		reg = <0>;
	};
};

&mdio3 {
	status = "okay";

	ethphy3: ethernet-phy@0 {
		compatible = "ethernet-phy-ieee802.3-c22";
		reg = <0>;
	};
};
*/

在aspeed-g6.dtsi文件中的mdio节点,这里不需要修改,只是对应上面代码的关系

mdio1: mdio@1e650008 {
	compatible = "aspeed,ast2600-mdio";
	reg = <0x1e650008 0x8>;
	#address-cells = <1>;
	#size-cells = <0>;
	status = "disabled";
	pinctrl-names = "default";
	pinctrl-0 = <&pinctrl_mdio2_default>;//在aspeed-g6-pinctrl.dtsi文件中找到定义
	resets = <&syscon ASPEED_RESET_MII>;
};

在aspeed-g6-pinctrl.dtsi文件中pinctrl_mdio2_default的定义,这里不需要修改,只是对应上面代码的关系

pinctrl_mdio2_default: mdio2_default {
	function = "MDIO2";
	groups = "MDIO2";
};

在aspeed-ast2600-evb.dts文件中,修改mac节点,注释掉mac0和mac1,修改mac2和mac3的配置

/*
&mac0 {
	status = "okay";

	phy-mode = "rgmii-rxid";
	phy-handle = <&ethphy0>;

	pinctrl-names = "default";
	pinctrl-0 = <&pinctrl_rgmii1_default>;
};


&mac1 {
	status = "okay";

	phy-mode = "rgmii-rxid";
	phy-handle = <&ethphy1>;

	pinctrl-names = "default";
	pinctrl-0 = <&pinctrl_rgmii2_default>;
};
*/
&mac2 {
	status = "okay";

	phy-mode = "rgmii";
	//phy-handle = <&ethphy2>;
	phy-handle = <&ethphy1>;//修改成&ethphy1

	pinctrl-names = "default";
	pinctrl-0 = <&pinctrl_rgmii3_default>;
};

&mac3 {
	status = "okay";

	//phy-mode = "rgmii";
	//phy-handle = <&ethphy3>;
	phy-mode = "rmii";//修改成rmii
	use-ncsi;//新添加

	pinctrl-names = "default";
	pinctrl-0 = <&pinctrl_rgmii4_default>;
};

3.编译代码

bitbake obmc-phosphor-image

编译报错:No space left on device or exceeds fs.inotify.max_user_watches?

从网上搜索了一下,发现超过fs.inotify.max_user_watches系统默认参数,可能的原因是打开的文件过多导致。这时候,我发现我用vscode同时打开了u-boot和内核代码,还用另外一个集成环境打开了一套代码,猜测是因为开的环境太多导致,所以关闭了vscode,再次进行编译,发现没有再次报错,编译成功,如下图所示

4.测试验证

将编译成功的OpenBMC镜像,通过u-boot使用tftp的方式,刷到flash中,然后reset,重启BMC。可以在OpenBMC的启动日志中看到内核识别到了PHY芯片,型号:RTL8211F,如下图所示

在串口调试下,登录OpenBMC,用户名:root,密码:0penBmc。注意:密码第一个字符是数字0。登录OpenBMC后,输入ifconfig命令,可以看到BMC成功获取到了IP地址,如下图所示

  • 14
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
### 回答1: 常见的PHY芯片品牌有很多,以下是其中几个比较知名的品牌介绍。 1. Marvell(马维尔):Marvell是全球领先的半导体公司之一,其Ethernet PHY芯片被广泛应用于高速以太网网络中。Marvell的PHY芯片具有高速传输、低功耗和稳定性强等特点,适用于各种应用场景。 2. Broadcom(博通):Broadcom是全球知名的半导体解决方案提供商,拥有广泛的PHY芯片产品线。Broadcom的PHY芯片在以太网和无线通信等领域具有很高的市场份额,其产品具有高集成度、低功耗和良好的性能等优点。 3. Intel(英特尔):Intel是全球最大的半导体公司之一,其PHY芯片广泛应用于计算机网络和通信设备中。Intel的PHY芯片提供高速数据传输、卓越的信号完整性和低功耗等特点,在市场上具有很高的声誉。 4. Texas Instruments(德州仪器):Texas Instruments是一家领先的半导体解决方案提供商,其PHY芯片在以太网和无线通信等领域表现出色。德州仪器的PHY芯片具有高性能、低功耗和可靠性好等特点,被广泛应用于各种通信设备中。 总之,常见的PHY芯片品牌有马维尔、博通、英特尔和德州仪器等,它们在半导体行业具有很高的知名度和市场份额,为各种网络和通信设备的正常运行提供了可靠的基础。 ### 回答2: 常见的PHY芯片品牌包括博通(Broadcom)、思科(Cisco)、英特尔(Intel)、驱动精灵(Realtek)、瑞昱(Ralink)、ADMtek(雅迪马达)、Marvell(迈科)等。 博通是一家全球领先的通信半导体解决方案供应商,其PHY芯片可以用于以太网、无线网络、蓝牙等通信领域。博通的PHY芯片具有高性能、低功耗、高集成度等特点,广泛应用于企业网络设备、家庭网络设备等领域。 思科是一家领先的网络设备制造商,其PHY芯片可以用于以太网交换机、路由器等设备。思科的PHY芯片具有高速传输、稳定性好、兼容性强等特点,被广泛应用于企业级网络设备中。 英特尔是全球知名的半导体技术公司,其PHY芯片主要用于以太网通信领域。英特尔的PHY芯片具有高速传输、低功耗、高可靠性等特点,被广泛应用于个人电脑、服务器、网络设备等领域。 驱动精灵是国内知名的网络芯片厂商,其PHY芯片主要用于以太网通信领域。驱动精灵的PHY芯片具有高性价比、稳定性好、兼容性强等特点,被广泛应用于个人电脑、路由器、无线网卡等设备中。 瑞昱是一家全球领先的无线通信芯片提供商,其PHY芯片主要用于无线局域网(WLAN)通信领域。瑞昱的PHY芯片具有高速传输、低功耗、强干扰抑制等特点,被广泛应用于无线路由器、智能手机、平板电脑等设备中。 ADMtek是一家国内知名的网络芯片制造商,其PHY芯片主要用于以太网通信领域。ADMtek的PHY芯片具有稳定性好、低功耗、兼容性强等特点,广泛应用于网络交换机、网络摄像机等设备中。 Marvell是一家全球领先的网络与存储解决方案提供商,其PHY芯片主要应用于以太网通信领域。Marvell的PHY芯片具有高速传输、低功耗、高集成度等特点,被广泛应用于路由器、交换机、服务器等设备中。 ### 回答3: 常见PHY芯片品牌有很多,以下是其中几个知名品牌的介绍。 1. Marvell(马维尔):Marvell是一家全球领先的网络和存储芯片解决方案供应商,其PHY芯片广泛应用于以太网交换机、路由器、无线通信设备等网络设备中。Marvell的PHY芯片具有高性能、低功耗和卓越的数据传输速度等特点。 2. Broadcom(博通):Broadcom是一家全球知名的半导体和软件解决方案供应商,其PHY芯片在有线和无线通信领域具有很高的市场份额。Broadcom的PHY芯片广泛用于以太网交换机、调制解调器、光纤网络等设备中,支持高速数据传输和低延迟。 3. Intel(英特尔):Intel是一家世界著名的半导体制造商,其PHY芯片应用于各种通信设备和计算机中。Intel的PHY芯片以其高度集成、稳定性和性能优势而闻名,在以太网和无线通信领域有广泛的应用。 4. Realtek(瑞昱):Realtek是全球领先的集成电路和网络通信解决方案供应商之一,其PHY芯片在网络设备中应用广泛。Realtek的PHY芯片具有低功耗、高传输速度和稳定性等特点,支持多种以太网标准。 除了以上几个知名品牌外,还有一些其他品牌如Qualcomm(高通)、Texas Instruments(德州仪器)、Microchip Technology(美国微芯科技)等公司也提供PHY芯片解决方案,并在相应领域有着一定的市场份额。总体而言,这些常见的PHY芯片品牌在网络通信领域发挥着重要的作用,促进了高速、稳定和可靠的数据传输。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值