最新uboot2023编译烧录到-正点原子Linux开发版

本文介绍了如何在Ubuntu环境下,使用GCC11.4.0交叉编译工具链编译UBoot,并针对IMX6ULL_14x14_EVK板子进行了网卡移植,包括修改配置文件、烧录过程以及添加针对LAN8720网卡的初始化代码。同时,设置了环境变量以配置静态IP地址。
摘要由CSDN通过智能技术生成

环境准备

  1. 交叉编译工具链版本–gcc version 11.4.0 (Ubuntu 11.4.0-1ubuntu1~22.04)
    sudo apt-get install gcc-arm-linux-gnueabi
  2. uboot版本 2023

编译

修改顶层Makefile 添加
在这里插入图片描述
make distclean
make mx6ull_14x14_evk_defconfig
make -j4

Uboot烧录

sudo dd iflag=dsync oflag=dsync if=u-boot-dtb.imx of=/dev/sdb seek=2

u-boot-dtb.imx为Uboot编译出的最终可执行文件
/dev/sdb为sd卡插入linux后显示的设备文件,可以输入sudo fdisk -l 查看

uboot 网卡移植

vim arch/arm/dts/imx6ul-14x14-evk.dtsi
修改fec1 和fec2

在这里/*
&fec1 {
    pinctrl-names = "default";
    pinctrl-0 = <&pinctrl_enet1>;
    phy-mode = "rmii";
    phy-handle = <&ethphy0>;
    phy-supply = <&reg_peri_3v3>;
    status = "okay";
};
&fec2 {
    pinctrl-names = "default";
    pinctrl-0 = <&pinctrl_enet2
             &pinctrl_enet2_reset>;
    phy-mode = "rmii";
    phy-handle = <&ethphy1>;
    phy-reset-gpios = <&gpio5 8 GPIO_ACTIVE_LOW>;   /* 根据硬件连接进行添加 */
        phy-reset-duration = <26>;                      /* 复位时间,单位ms */
    status = "okay";

    mdio {
        #address-cells = <1>;
        #size-cells = <0>;
/*
        ethphy0: ethernet-phy@2 {
            compatible = "ethernet-phy-id0022.1560";
            reg = <2>;
            micrel,led-mode = <1>;
            clocks = <&clks IMX6UL_CLK_ENET_REF>;
            clock-names = "rmii-ref";

        };
*/
		ethphy1: ethernet-phy@1 {
		            compatible = "ethernet-phy-id0022.1560";
		            reg = <1>;
		            micrel,led-mode = <1>;
		            clocks = <&clks IMX6UL_CLK_ENET2_REF>;
		            clock-names = "rmii-ref";
		        };
		    };
};	
*/插入代码片

vim drivers/net/phy/phy.c genphy_update_link函数添加如下代码

unsigned int mii_reg;

   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; 
   }


/*   
 * Wait if the link is up, and autonegotiation is in progress
 * (ie - we're capable and it's not done)
 */
mii_reg = phy_read(phydev, MDIO_DEVAD_NONE, MII_BMSR);
setenv eth1addr 12:34:56:78:9a:bc # 这里是eth1addr,不是ethaddr,因为后面步骤它打印的是eth1
setenv ipaddr 192.168.100.123
setenv gatewayip 192.168.100.1
setenv netmask 255.255.255.0
setenv serverip 192.168.100.12
saveenv

运行结果

在这里插入图片描述

参考链接:https://blog.csdn.net/weixin_44498318/article/details/117399841?spm=1001.2101.3001.6650.1&utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromBaidu%7ERate-1-117399841-blog-123618415.235%5Ev38%5Epc_relevant_sort_base1&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromBaidu%7ERate-1-117399841-blog-123618415.235%5Ev38%5Epc_relevant_sort_base1&utm_relevant_index=2

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值