环境
-
Win10 64位
-
ubuntu 20.04
-
虚拟机 VMware® Workstation 16 Pro
-
开发板:NK-980IOT(NUC980DK61Y)
-
gcc 交叉编译工具链: ARM 官方
gcc version 11.2.1 20220111
-
NUC980 uboot 版本 :尝试移植到
u-boot-2019.10
,官方当前 u-boot 版本为 2016.11
问题描述
- 在尝试升级 nuc980 的 u-boot 版本时,gcc 编译遇到问题,报错信息如下:
rtt@ubuntu:~/nuc980/u-boot-2017.05$ make ARCH=arm CROSS_COMPILE=arm-none-eabi-
scripts/kconfig/conf --silentoldconfig Kconfig
CHK include/config.h
CFG u-boot.cfg
In file included from ./include/common.h:21:0:
include/config.h:5:10: fatal error: configs/.h: No such file or directory
#include <configs/.h>
^~~~~~~~~~~~
compilation terminated.
make[1]: *** [scripts/Makefile.autoconf:79: u-boot.cfg] Error 1
make: *** No rule to make target 'include/config/auto.conf', needed by 'include/config/uboot.release'. Stop.
- 经过对比移植的代码,并分析这个
#include <configs/.h>
,初步认为 board 的配置,如CONFIG_SYS_CONFIG_NAME="nuc980_iot"
没有生效
config SYS_CONFIG_NAME
string
help
This option should contain the base name of board header file.
The header file include/configs/<CONFIG_SYS_CONFIG_NAME>.h
should be included from include/config.h.
- 经过进一步搜索发现,原来开发板 的 Kconfig 文件没有【参与配置】
解决方法
- 修改 开发板
arch/arm/Kconfig
文件,加入 开发板 board 的 Kconfig 文件,需要 通过source
的方式加入,这样系统在 menuconfig 时,开发板的配置就可以参与配置
source "board/nuvoton/nuc970/Kconfig"
source "board/nuvoton/nuc980/Kconfig"
- 让板子的板级配置 Kconfig 参与配置后,问题就解决了,并且找到了 板子的头文件,这里是
include\configs\nuc980_iot.h
小结
-
u-boot 移植新的 板子配置时,注意需要把 board 下的 Kconfig 文件加入 到 CPU 平台架构文件下的 Kconfig 中,参与配置,如这里的
arch/arm/Kconfig
board/nuvoton/nuc970/Kconfig
-
遇到类似的问题,可以通过查看 Makefile 文件,缩小问题范围,如
include/configs/<CONFIG_SYS_CONFIG_NAME>.h
,首先需要确认CONFIG_SYS_CONFIG_NAME
是否存在,如何使能