网站建设接单,wordpress换模版,做网站的创业计划书,计算机网站建设一. 简介
本文继续学习 NXP官方Linux内核移植网络驱动的更改。
在学习 uboot 移植的时候就已经说过了#xff0c;正点原子开发板的网络和 NXP 官方的网络硬件上不同#xff0c;网络 PHY 芯片由 KSZ8081 换为了 LAN8720A#xff0c;两个网络 PHY 芯片的复位 IO 也不同。 所…一. 简介
本文继续学习 NXP官方Linux内核移植网络驱动的更改。
在学习 uboot 移植的时候就已经说过了正点原子开发板的网络和 NXP 官方的网络硬件上不同网络 PHY 芯片由 KSZ8081 换为了 LAN8720A两个网络 PHY 芯片的复位 IO 也不同。 所以Linux 内核自带的网络驱动是驱动不起来 I.MX6U-ALPHA 开发板上的网络的需要做修改。 本文继上一篇文章的学习文章地址如下
Linux内核移植之网络驱动更改说明一-CSDN博客 二. Linux内核移植之网络驱动更改 之前网络驱动更改中修改网络复位IO和PHY 地址以后Linux 内核内部通用 PHY驱动已经正常工作。上一篇文章已经可以 ping通 ubuntu系统了。
但是正点原子视频学习中左神说网络可能还会存在问题还需要做网络其他方面的更改。
这里在之前更改的基础上再进行网络驱动其他方面的更改。具体如下 4. 修改 fec_main.c 文件 要 在 I.MX6ULL 上 使 用 LAN8720A 需 要 修 改 一 下 Linux 内 核 源 码 打 开 drivers/net/ethernet/freescale/fec_main.c找到 fec_probe() 函数在 fec_probe()函数 中加入如下代码 static int fec_probe(struct platform_device *pdev)
{struct fec_enet_private *fep;struct fec_platform_data *pdata;struct net_device *ndev;int i, irq, ret 0;struct resource *r;const struct of_device_id *of_id;static int dev_id;struct device_node *np pdev-dev.of_node, *phy_node;int num_tx_qs;int num_rx_qs;/* zuozhongkai 2019/2/20 设置MX6UL_PAD_ENET1_TX_CLK和* MX6UL_PAD_ENET2_TX_CLK这两个IO的复用寄存器的SION位* 为1。*/void __iomem *IMX6U_ENET1_TX_CLK;void __iomem *IMX6U_ENET2_TX_CLK;IMX6U_ENET1_TX_CLK ioremap(0X020E00DC, 4);writel(0X14, IMX6U_ENET1_TX_CLK);IMX6U_ENET2_TX_CLK ioremap(0X020E00FC, 4);writel(0X14, IMX6U_ENET2_TX_CLK);...........................................return 0;
} 第18行 ~ 第 25行是新添加的代码如果要在 I.MX6ULL 上使用 LAN8720A 就需要设置 ENET1 和 ENET2 的 TX_CLK 引脚复位寄存器的 SION 位为 1。 5. 修改 smsc.c 文件 6. 配置 Linux 内核使能 LAN8720 驱动