【野火Linux移植篇】3-官方NXP-uboot移植基本配置常见问题的解决
本文主要内容是分析uboot & 解决 uboot 移植过程中产生的简单错误:
- 解决 WARNING - BAD CRC, USING DEFAULT ENVIRONMENT警告
- 解决Error: FEC1 address not set.
- 检查 emmc 和 SD 卡
- 解决 uboot出现:include/config.h:8:22: fatal error: configs/.h: No such file or directory
- 解决arm-linux-gnueabihf-ld.bfd:u-boot.lds:1: syntax error 问题
- 野火开发板的 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