嵌入式Linux-IMX6ULL-U-BOOT移植学习总结(二)

本文详细介绍了如何进行LCD驱动和网络驱动的修改以适配不同尺寸的屏幕和PHY芯片。首先,针对LCD驱动,通过修改像素时钟参数实现1024x600分辨率的7寸屏适配。然后,调整网络驱动,修改RST硬件IO口配置和匹配LAN8720 PHY芯片驱动,确保网络功能正常。最后,更新板子名称,完成整个u-boot的定制移植过程。
摘要由CSDN通过智能技术生成

驱动适配

  1. LCD驱动修改
    1. 通过查看官方的原理图对比发现,LCDIO接口都是一样的,只是使用的屏幕大小不一样,我们这里使用的1024x600的7寸屏所以需要适配。
    2. 打开borad/freescale/mx6ull_emmc_alientek_myself/mx6ull_emmc_alientek_myself.c文件,修改为如下图所示,其中pixclok需要注意,屏幕要求的像素时钟为51.2MHz,所以pixclokd = (1 / 51200000) * 10^12 = 19531
    3. 保存文件重新编译即可
  2. 网络驱动修改

    1. 通过原理图可以发现ENET2_RST接在IMX6ULL的SNVS_TAMPER8上,而PHY芯片使用的是LAN8720,其中PHY的期间地址为0X1,所以修改RST硬件IO口配置,和匹配芯片驱动
    2. 打开include/configs/mx6ull_emmc_alientek_myself.h修改如下图
    3. 删除原来PHY74LV595驱动代码,并添加REST硬件定义打开borad/freescale/mx6ull_emmc_alientek_myself/mx6ull_emmc_alientek_myself.c文件修改如下
    4. 添加复位引脚驱动
    5. 修改phy驱动文件,在drivers/net/phy/phy.c,
      #ifdef CONFIG_PHY_SMSC
          static int lan8720_flag = 0;
          int bmcr_reg = 0;
          if (lan8720_flag == 0) {
              bmcr_reg = phy_read(phydev, MDIO_DEVAD_NONE, MII_BMCR);
              phy_write(phydev, MDIO_DEVAD_NONE, MII_BMCR, BMCR_RESET);
              while(phy_read(phydev, MDIO_DEVAD_NONE, MII_BMCR) & 0X8000) {
              udelay(100);
          }
          phy_write(phydev, MDIO_DEVAD_NONE, MII_BMCR, bmcr_reg);
          lan8720_flag = 1;
      }
      #endif
    6. 修改完成,重新编译即可,如果下载进入板子还是异常,重新设置环境IP等数据
  3. 修改名字

    1. 打开borad/freescale/mx6ull_emmc_alientek_myself/mx6ull_emmc_alientek_myself.c文件把板子的名字修改为自己板子的名字如下图
  4. 总结
    1. 确定板子硬件设备和蓝本EVK板子哪些有差异。
    2. 修改硬件有差异部分,一般就是IO口是否正确或者使用的外设芯片是否正确。
    3. 最后修改自己的板子名字,至此完成整个u-boot的自己板子移植。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值