【野火Linux移植篇】3-官方NXP-uboot移植基本配置常见问题的解决

本文主要内容是分析uboot & 解决 uboot 移植过程中产生的简单错误:

  1. 解决 WARNING - BAD CRC, USING DEFAULT ENVIRONMENT警告
  2. 解决Error: FEC1 address not set.
  3. 检查 emmc 和 SD 卡
  4. 解决 uboot出现:include/config.h:8:22: fatal error: configs/.h: No such file or directory
  5. 解决arm-linux-gnueabihf-ld.bfd:u-boot.lds:1: syntax error 问题
  6. 野火开发板的 PHY 驱动不需要修改的分析

将 mx6ull 默认的 u-boot 移植到野火的板子中,显示了以下内容,逐个分析。

 

1. 解决 WARNING - BAD CRC, USING DEFAULT ENVIRONMENT警告

=> env default -a
## Resetting to default environment

=> saveenv 
Saving Environment to MMC...
Writing to MMC(0)... done

重启(输入命令 reset ),警告消失。

 

2. 解决Error: FEC1 address not set.

 原因:没有网络配置

解决:设置网络信息

1 setenv ipaddr 192.168.1.40
2 setenv ethaddr 00:04:9f:04:d2:35
3 setenv gatewayip 192.168.1.1
4 setenv netmask 255.255.255.0
5 setenv serverip 192.168.1.60
6 saveenv

重启(输入命令 reset ),警告消失。

 

 

3. 检查 emmc 和 SD 卡

使用以下命令:

mmc list   #查看所有mmc设备
mmc dev 0 #切换到 SD 卡
mmc dev 0 #切换到 emmc
mmc info   #查看当前mmc信息

得到如图结果,证明驱动没有问题。

 

 

4. 解决 uboot出现:include/config.h:8:22: fatal error: configs/.h: No such file or directory

应该检查 Kconfig 文件,具体请看:https://blog.csdn.net/Wang_XB_3434/article/details/104600882

 

5. 解决arm-linux-gnueabihf-ld.bfd:u-boot.lds:1: syntax error 问题

【问题简述】:
代码怎么看怎么没问题,make xx -j1 并未发现代码错误,但总提示交叉编译错误:
arm-linux-gnueabihf-ld.bfd:u-boot.lds:1: syntax error
【问题原因】:
ansi编译器无法处理注释符号 “//”

【解决办法】:

把所有的 “//” 改为 “/**/ ”

 

6. 野火开发板的 PHY 驱动不需要修改的分析

在 include/configs/imx6ull_alien_emmc.h 中,有配置 Ethernet 的以下代码:

324 #ifdef CONFIG_CMD_NET 
325 #define CONFIG_CMD_PING
326 #define CONFIG_CMD_DHCP
327 #define CONFIG_CMD_MII
328 #define CONFIG_FEC_MXC
329 #define CONFIG_MII
330 #define CONFIG_FEC_ENET_DEV     1  //1表示使用的是FEC1 而不是FEC0设备
331
332 #if (CONFIG_FEC_ENET_DEV == 0)  //使用 FEC0 设备的地址配置
333 #define IMX_FEC_BASE            ENET_BASE_ADDR
334 #define CONFIG_FEC_MXC_PHYADDR          0x2
335 #define CONFIG_FEC_XCV_TYPE             RMII
336 #elif (CONFIG_FEC_ENET_DEV == 1) //使用 FEC1 设备的地址配置
337 #define IMX_FEC_BASE            ENET2_BASE_ADDR
338 #define CONFIG_FEC_MXC_PHYADDR      0x1
339 #define CONFIG_FEC_XCV_TYPE     RMII
340 #endif
341 #define CONFIG_ETHPRIME         "FEC"

野火的 ETH1 /ETH2原理图如下:

ETH1(FEC0):

ETH2(FEC1):

 由上面的对比可知:

  • ETH1(FEC0) 的 AD0、1、2为0,1,0 = 010b = 2
  • ETH2(FEC1) 的 AD0、1、2为1,0,0 = 001b = 1

因此上面官方的代码不需要修改。

 

 

参考:

1. https://www.freesion.com/article/1017629230/

2.https://blog.csdn.net/m0_46291920/article/details/112961814

3. 【u-boot.lds:1: syntax error 问题】原文链接:https://blog.csdn.net/darnell888/article/details/118973763

 

posted @ 2023-05-25 18:03  FBshark  阅读(952)  评论(0编辑  收藏  举报