imx91的uboot编译

一、准备操作

下载半导体厂家的uboot源码
如这里我要下载的是imx91的恩智浦linux芯片bootloader

进入半导体厂家官网
下载源码,略

更新linux源,这里我是替换成清华源
vi /etc/apt/sources.list

deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-updates main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-backports main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-security main restricted universe multiverse

保存并退出

更新源
sudo apt update
在这里插入图片描述

二、编译工作

先安装ncurses库,否则不能编译bootloader
sudo apt-get install libncurses5-dev
在这里插入图片描述
选Y
在这里插入图片描述
源没有问题,正常安装

修改源码makefile文件(如果不改makefile,在每次编译前就要指定一下架构和编译器),这里由于我的交叉编译器用的是aarch64-poky-linux,aarch64是arm架构(可以通过输入arch查看架构方式),大约在275行的位置添加语句如下
ARCH = arm
CROSS_COMPILE = aarch64-poky-linux-

然后我们需要在官方的配置文件中找一个配置文件来测试编译,最好是找该板子的evk配置也就是官方出的板子的配置文件,所有的配置文件存在与uboot/configs中,选择文件imx91p_11x11_evk_defconfig,然后我们执行make 函数生成.config文件,然后就可以执行make进行uboot的编译了
在这里插入图片描述

// 先清理工程
make distclean
//配置uboot
make imx91p_11x11_evk_defconfig
//编译uboot
make V=1 -j8

解释下配置uboot,uboot是用来引导linux启动的,但uboot除了引导linux以外还可以引导其他系统,而且uboot还支持其他的架构和外设,如USB、网络、SD卡等,这些都是可以配置的,需要什么功能就使能什么功能。所以在编译uboot之前,一定要根据自己的需求配置uboot。

这里解释下V=1 -j8的意思
V=1: 这个环境变量 V 代表 “verbose”(详细模式)。当设置为1时,它告诉make命令在执行时输出详细的编译命令。这意味着在编译过程中,你会看到每一个实际被执行的编译命令,包括编译器调用、链接操作等。这对于调试编译问题或者了解编译过程中的具体操作非常有帮助,因为它暴露了编译器和链接器的所有命令行参数。

-j8: 这个参数指定了make同时并发执行的作业(jobs)数量。在这里,8意味着make将会尝试同时运行8个编译任务。这对于多核处理器系统来说特别有用,因为它可以显著加快编译速度,通过并行化编译不同的源文件。选择的数字通常应接近或略低于系统可用的处理器核心数,以达到最佳的并行编译效率。

综上所述,命令 make V=1 -j8 指令U-Boot的Makefile以详细输出模式并行编译,同时运行8个作业来加速编译过程,同时提供详细的编译过程信息。这对于大型项目或者希望快速迭代开发的场景非常有用。

编译后,报错了
make imx91p_11x11_evk_defconfig
HOSTCC scripts/basic/fixdep
HOSTCC scripts/kconfig/conf.o
YACC scripts/kconfig/zconf.tab.c
/bin/sh: 1: bison: not found
make[1]: *** [scripts/Makefile.lib:222: scripts/kconfig/zconf.tab.c] Error 127
make: *** [Makefile:575: imx91p_11x11_evk_defconfig] Error 2
xuyy@ubuntu:~/linux/gateway/uboot-imx-lf-6.1.22-2.0.0/imx91-bootloader/uboot-imx-lf-6.1.22-2.0.0$

这里提示是bison程序找不到
bison not found: bison 是一个通用的解析器生成器,广泛用于编写语言解析器。在编译 Linux 内核或与之相关的项目(如 U-Boot)时,Kconfig 系统(用于配置内核或引导加载器的选项)可能会用到 bison 来处理配置脚本。错误信息表明,尽管在尝试运行 bison 以生成配置解析器的一部分 (scripts/kconfig/zconf.tab.c),但系统中并未安装 bison,或者它不在默认的 PATH 环境变量指定的路径中。

sudo apt-get install bison

安装后编译还报错
make imx91p_11x11_evk_defconfig
YACC scripts/kconfig/zconf.tab.c
LEX scripts/kconfig/zconf.lex.c
/bin/sh: 1: flex: not found
make[1]: *** [scripts/Makefile.lib:214: scripts/kconfig/zconf.lex.c] Error 127
make: *** [Makefile:575: imx91p_11x11_evk_defconfig] Error 2

这次的错误信息显示,在执行 make imx91p_11x11_evk_defconfig 命令的过程中,系统报告找不到 flex 程序。和之前的 bison 错误类似,flex 是一个词法分析器生成器,经常与 bison 配合使用,特别是在处理文本解析任务时,如这里在处理内核配置脚本时。

sudo apt-get install flex 继续安装

继续执行,成功!
在这里插入图片描述
接下来执行make V=1 -j8编译
在这里插入图片描述
报错了,看到错误是
cc1: error: bad value (‘armv8-a+crc’) for ‘-march=’ switch

这里应该是uboot代码的问题,我使用的是适配后的uboot源码,可能这个没搞好。等我换个uboot源码再编一下,今天先写到这里。如果你们的uboot代码没问题,到这里应该就编译通过了。

  • 19
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值