编译u_boot

最近在学习编译u_boot内核也遇见了很多的坑记录一下

  1. make CROSS_COMPILE=arm-linux-gnueabihf- HOSTARCH=arm 编译指令

make 运行:Makefile 脚本文件 CROSS_COMPILE指定编译器 也可以在makefile文件里面指定HOSTARCH:指定cpu架构 如果还有其他的相关需要 查看makefiel

遇见的问题:

gcc版本太高 当前主流的一般都在9.0版本左右

http://t.csdn.cn/Vq9hL这里面有相关说明可以参考。

arm-linux :arm-linux-gnueabihf-gcc 版本低于6.0

http://t.csdn.cn/cWCCV这里面有相关说明可以参考。

还有就是在编译前执行了make common 清除了相关的配置也会出现错误,如果是设定好的一般不使用

ps:

make clean #清除上一次make命令生成的文件

make distclean #清除上一次make以及configure命令生成的文件

这行代码是 U-Boot SPL(Secondary Program Loader)中用于打印启动 banner 的语句,属于 `preloader_console_init()` 函数的一部分。它会在串口控制台上输出 U-Boot SPL 的版本和编译时间信息。 --- ### ✅ 代码解析 ```c puts("\nU-Boot " SPL_TPL_NAME " " PLAIN_VERSION " (" U_BOOT_DATE " - " U_BOOT_TIME " " U_BOOT_TZ ")\n"); ``` #### 1. `puts(...)` - 向串口输出字符串。 - 与标准 C 的 `puts()` 类似,但适用于 U-Boot SPL 的轻量级实现。 #### 2. `SPL_TPL_NAME` - 是一个宏,表示当前运行的是 **SPL** 或 **TPL**(Tertiary Program Loader)。 - 在 SPL 构建中,该宏展开为 `"SPL"`。 - 在 TPL 构建中,该宏展开为 `"TPL"`。 #### 3. `PLAIN_VERSION` - 表示 U-Boot 的版本号。 - 例如:`"2024.07"`。 #### 4. `U_BOOT_DATE`、`U_BOOT_TIME`、`U_BOOT_TZ` - 分别表示编译日期、编译时间、时区。 - 由编译器在编译时自动定义。 - 例如: - `U_BOOT_DATE` → `"Jul 13 2024"` - `U_BOOT_TIME` → `"14:23:00"` - `U_BOOT_TZ` → `"+0800"` --- ### ✅ 输出示例 假设: - `SPL_TPL_NAME` = `"SPL"` - `PLAIN_VERSION` = `"2024.07"` - `U_BOOT_DATE` = `"Jul 13 2024"` - `U_BOOT_TIME` = `"14:23:00"` - `U_BOOT_TZ` = `"+0800"` 输出结果为: ``` U-Boot SPL 2024.07 (Jul 13 2024 - 14:23:00 +0800) ``` --- ### ✅ 编译时如何生成这些宏? 这些宏的值是由编译器在编译时自动插入的,具体如下: | 宏名 | 来源 | |------|------| | `PLAIN_VERSION` | 来自 `Makefile`,由 `$(VERSION).$(PATCHLEVEL)` 构成 | | `U_BOOT_DATE` | 使用 `date +"%Y-%m-%d"` 获取编译日期 | | `U_BOOT_TIME` | 使用 `date +"%H:%M:%S"` 获取编译时间 | | `U_BOOT_TZ` | 使用 `date +"%z"` 获取时区信息 | 你可以在 U-Boot 源码的顶层 `Makefile` 中找到类似定义: ```makefile U_BOOT_DATE := $(shell date +"%Y-%m-%d") U_BOOT_TIME := $(shell date +"%H:%M:%S") U_BOOT_TZ := $(shell date +"%z") ``` --- ### ✅ 如何禁用 banner 输出? 如果你不想在 SPL 启动时输出该 banner,可以: #### 方法一:关闭 `BANNER_PRINT` 在配置文件中取消定义: ```c #undef CONFIG_BANNER_PRINT ``` 或在 Kconfig 中取消选择: ``` CONFIG_BANNER_PRINT=n ``` #### 方法二:删除或注释 `puts(...)` 行 直接修改 `preloader_console_init()` 函数,注释掉该行: ```c // puts("\nU-Boot " SPL_TPL_NAME " " PLAIN_VERSION " (" U_BOOT_DATE " - " U_BOOT_TIME " " U_BOOT_TZ ")\n"); ``` --- ### ✅ 总结 | 项目 | 内容 | |------|------| | 功能 | 输出 U-Boot SPL 的启动 banner | | 包含信息 | 版本号、编译日期、时间、时区 | | 宏定义来源 | 编译时由 Makefile 设置 | | 输出格式 | `U-Boot SPL xx.xx (yyyy-mm-dd - hh:mm:ss +tz)` | | 可配置性 | 可通过 `CONFIG_BANNER_PRINT` 控制是否启用 | --- ###
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

orange....

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值