修改`FSL Yocto Project Community BSP`用到的u-boot源码,使其能适配百问网(100ask)的开发板

news2025/2/28 5:12:48

前言

在博文 https://blog.csdn.net/wenhao_ir/article/details/145547974 中,我们利用官方提供的BSP(FSL Yocto Project Community BSP)构建了写到SD卡中的完整镜像,然后启动后发现存在不少问题,首要的问题就是u-boot不能识别网卡,在这篇博文中,我们就找到FSL Yocto Project Community BSP用到的u-boot源码,然后进行修改适配。

配置gcc交叉编译器

由于后面我们要自己去对自己修改后的u-boot进行编译,所以需要有gcc交叉编译器。

Buildroot在构建完之后能生成gcc交叉编译器,详情见 https://blog.csdn.net/wenhao_ir/article/details/145470042 【搜索“生成交叉编译工具链”】。

Ycoto在构建时也能生成,但是由于这里在配置时没有配置生成gcc交叉编译器,所以这里就只有自己去手动操作了。

为了减少这篇博文的长度,所以具体的gcc交叉编译器的下载和配置见下面博文:https://blog.csdn.net/wenhao_ir/article/details/145649698

找到u-boot源码

从博文https://blog.csdn.net/wenhao_ir/article/details/145547974构建的完整的SD卡镜像的运行情况来看,公板MCIMX6ULL-EVK(imx6ull14x14evk)的u-boot是不适应百问网的板子,主要就是网卡有问题,我们需要进行修改…

我们需要在FSL Yocto Project Community BSP中找到u-boot源码…

我们需要在在FSL Yocto Project Community BSP中找到对应的仓库地址,然后拉取到本地。

具体方法如下:

由于我们之前的镜像选择的是imx-image-multimedia,Yocto对应的层如下面这个列表:
在这里插入图片描述
所以我们需要在目录/imx-yocto-bsp/sources/meta-imx/中去找其对应的仓库地址信息。打开下面这个文件:

/imx-yocto-bsp/sources/meta-imx/meta-bsp/recipes-kernel/linux/linux-imx_5.4.bb

我们能找到meta-imx层对应的liunx的源码仓库地址:
在这里插入图片描述

git://source.codeaurora.org/external/imx/linux-imx.git

据此,我们可以推断出其u-boot源码的仓库地址为:

https://source.codeaurora.org/external/imx/uboot-imx

如果这个源还有效的话,运行下面的命令就能将u-boot的源码下载下来了:

git clone https://source.codeaurora.org/external/imx/uboot-imx

但很可惜这个源已经无效了,证据如下:

curl https://source.codeaurora.org/

在这里插入图片描述
上面的截图是美国的服务器上运行的,说明是真失效了,那就只有用百问网提供的之前通过仓库地址下载好的u-boot源码了。百度网盘下载链接:https://pan.baidu.com/s/1YgJPge5JMOf2HkKm_gQB7Q?pwd=ytut

下载好之后,先放在那里备用。
在这里插入图片描述

编译找到的u-boot源码

将上一步得到的u-boot的源码复制到Ubuntu中:
在这里插入图片描述
然后解压出来:
在这里插入图片描述
在这里插入图片描述
终端中进入目录/home/book/mybuild/uboot-imx

cd /home/book/mybuild/uboot-imx

不妨先执行一次清除命令:

make distclean

在这里插入图片描述
然后给文件check-config.sh添加执行权限

chmod +x ./scripts/check-config.sh

接着我们需要去查看下有哪些配置文件,配置文件在目录/uboot-imx/configs下:
在这里插入图片描述
可以看到文件非常多,不妨搜索一下关键词mx6ull_14x14_evk*
在这里插入图片描述
上面截图中的几个配置文件介绍如下:

  • mx6ull_14x14_evk_defconfig:imx6ullevk公板默认的配置文件,默认只支持SD卡启动。
  • mx6ull_14x14_evk_emmc_defconfig:支持eMMC启动方式启动的配置文件。
  • mx6ull_14x14_evk_nand_defconfig:支持NAND启动方式启动的配置文件。
  • mx6ull_14x14_evk_optee_defconfig:支持 optee 系统的配置文件。
  • mx6ull_14x14_evk_plugin_defconfig:支持扩展功能的配置文件,主要是烧写功能。
  • mx6ull_14x14_evk_qspi1_defconfig:支持 qspi 启动方式启动的配置文件。

我们这里选择支持eMMC启动方式的配置文件: mx6ull_14x14_evk_emmc_defconfig,运行下面的命令选择这个配置文件:

make mx6ull_14x14_evk_emmc_defconfig

在这里插入图片描述
然后执行下面的命令开始构建编译:

make -j4

命令中的4代表使用4个线程进行编译,当然,如果你的CPU资源够多,可以调大,比如调到68
在这里插入图片描述
编译很快就结束了,u-boot毕竟只是很短的代码。
在这里插入图片描述
从上面的运行结果来看,已经生成了我们想要的u-boot镜像文件u-boot-dtb.imx,现在我们把它写入到eMMC中,然后通eMMC方式来运行u-boot。

镜像文件u-boot-dtb.imx的位置就是在u-boot的根目录下:
在这里插入图片描述

u-boot镜像文件烧写到eMMC中

参考下面这篇博文把生成的u-boot镜像文件u-boot-dtb.imx烧写到eMMC中:
https://blog.csdn.net/wenhao_ir/article/details/145653414

运行烧写到eMMC中的u-boot并分析运行结果

烧写完成后关闭开发板电源,
烧写完成后关闭开发板电源,
烧写完成后关闭开发板电源,

然后设置开发板为eMMC启动方式,打开串口即可看到终端有u-boot的运行信息了。

在这里插入图片描述
u-boot的运行信息如下:



U-Boot 2020.04-dirty (Feb 15 2025 - 16:43:33 +0800)

CPU:   i.MX6ULL rev1.1 792 MHz (running at 396 MHz)
CPU:   Industrial temperature grade (-40C to 105C) at 31C
Reset cause: POR
Model: i.MX6 ULL 14x14 EVK Board
Board: MX6ULL 14x14 EVK
DRAM:  512 MiB
MMC:   FSL_SDHC: 0, FSL_SDHC: 1
Loading Environment from MMC... *** Warning - bad CRC, using default environment

[*]-Video Link 0 (480 x 272)
        [0] lcdif@21c8000, video
In:    serial
Out:   serial
Err:   serial
switch to partitions #0, OK
mmc1(part 0) is current device
flash target is MMC:1
Net:   Could not get PHY for FEC1: addr 1
Could not get PHY for FEC1: addr 1
Get shared mii bus on ethernet@2188000
Could not get PHY for FEC1: addr 2
Get shared mii bus on ethernet@2188000
undefined instruction
pc : [<00000084>]          lr : [<9ef9bdaf>]
reloc pc : [<e8888084>]    lr : [<87823daf>]
sp : 9df6d6b8  ip : 00000020     fp : 87800020
r10: 9df955c0  r9 : 9df75ed0     r8 : 9df774b8
r7 : 9df77458  r6 : 00000006     r5 : 00000004  r4 : 9df78748
r3 : 00000048  r2 : 00000006     r1 : 00000004  r0 : 9df78748
Flags: nzCv  IRQs off  FIQs off  Mode SVC_32
Code: 00000000 00000000 00000000 00000011 (79706f43) 
Resetting CPU ...

resetting ...


U-Boot 2020.04-dirty (Feb 15 2025 - 16:43:33 +0800)

CPU:   i.MX6ULL rev1.1 792 MHz (running at 396 MHz)
CPU:   Industrial temperature grade (-40C to 105C) at 32C
Reset cause: POR
Model: i.MX6 ULL 14x14 EVK Board
Board: MX6ULL 14x14 EVK
DRAM:  512 MiB
MMC:   FSL_SDHC: 0, FSL_SDHC: 1
Loading Environment from MMC... *** Warning - bad CRC, using default environment

[*]-Video Link 0 (480 x 272)
        [0] lcdif@21c8000, video
In:    serial
Out:   serial
Err:   serial
switch to partitions #0, OK
mmc1(part 0) is current device
flash target is MMC:1
Net:   
Error: ethernet@20b4000 address not set.

Error: ethernet@20b4000 address not set.

Error: ethernet@20b4000 address not set.
FEC: can't find phy-handle

Error: ethernet@20b4000 address not set.
Could not get PHY for FEC0: addr 2

Error: ethernet@20b4000 address not set.
FEC: can't find phy-handle

Error: ethernet@20b4000 address not set.
Could not get PHY for FEC0: addr 2
No ethernet found.

Fastboot: Normal
Normal Boot
Hit any key to stop autoboot:  0 
switch to partitions #0, OK
mmc1(part 0) is current device
switch to partitions 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2307199.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

(python)Arrow库使时间处理变得更简单

前言 Arrow库并不是简单的二次开发,而是在datetime的基础上进行了扩展和增强。它通过提供更简洁的API、强大的时区支持、丰富的格式化和解析功能以及人性化的显示,填补了datetime在某些功能上的空白。如果你需要更高效、更人性化的日期时间处理方式,Arrow库是一个不错的选择…

【亲测有效】百度Ueditor富文本编辑器添加插入视频、视频不显示、和插入视频后二次编辑视频标签不显示,显示成img标签,二次保存视频被替换问题,解决方案

【亲测有效】项目使用百度Ueditor富文本编辑器上传视频相关操作问题 1.百度Ueditor富文本编辑器添加插入视频、视频不显示 2.百度Ueditor富文本编辑器插入视频后二次编辑视频标签不显示&#xff0c;在编辑器内显示成img标签&#xff0c;二次保存视频被替换问题 问题1&#xff1…

二、IDE集成DeepSeek保姆级教学(使用篇)

各位看官老爷好&#xff0c;如果还没有安装DeepSeek请查阅前一篇 一、IDE集成DeepSeek保姆级教学(安装篇) 一、DeepSeek在CodeGPT中使用教学 1.1、Edit Code 编辑代码 选中代码片段 —> 右键 —> CodeGPT —> Edit Code, 输入自然语言可编辑代码&#xff0c;点击S…

四、Redis主从复制与读写分离

一、环境搭建 准备环境 IP角色192.168.10.101Master192.168.10.102Slave192.168.10.103Slave 创建配置/数据/日志目录 # 创建配置目录 mkdir -p /usr/local/redis/conf # 创建数据目录 mkdir -p /usr/local/redis/data # 创建日志目录 mkdir -p /usr/local/redis/log修改配置…

数据如何安全“过桥”?分类分级与风险评估,守护数据流通安全

信息化高速发展&#xff0c;数据已成为企业的核心资产&#xff0c;驱动着业务决策、创新与市场竞争力。随着数据开发利用不断深入&#xff0c;常态化的数据流通不仅促进了信息的快速传递与共享&#xff0c;还能帮助企业快速响应市场变化&#xff0c;把握商业机遇&#xff0c;实…

Apache DolphinScheduler系列1-单节点部署及测试报告

文章目录 整体说明一、部署环境二、版本号三、部署方案四、部署步骤4.1、上传部署包4.2、创建外部数据库4.3、修改元数据库配置4.4、上传MySQLl驱动程序4.5、初始化外部数据库4.6、启停服务4.7、访问页面五、常见问题及解决方式5.1、时间不一致5.2、异常终止5.3、大量日志5.4、…

Java+SpringBoot+Vue+数据可视化的音乐推荐与可视化平台(程序+论文+讲解+安装+调试+售后)

感兴趣的可以先收藏起来&#xff0c;还有大家在毕设选题&#xff0c;项目以及论文编写等相关问题都可以给我留言咨询&#xff0c;我会一一回复&#xff0c;希望帮助更多的人。 系统介绍 在互联网技术以日新月异之势迅猛发展的浪潮下&#xff0c;5G 通信技术的普及、云计算能力…

LVS+Keepalived 高可用集群搭建

一、高可用集群&#xff1a; 1.什么是高可用集群&#xff1a; 高可用集群&#xff08;High Availability Cluster&#xff09;是以减少服务中断时间为目地的服务器集群技术它通过保护用户的业务程序对外不间断提供的服务&#xff0c;把因软件、硬件、人为造成的故障对业务的影响…

PydanticToolsParser 工具(tool call)把 LLM 生成的文本转成结构化的数据(Pydantic 模型)过程中遇到的坑

PydanticToolsParser 的作用 PydanticToolsParser 是一个工具&#xff0c;主要作用是 把 LLM 生成的文本转成结构化的数据&#xff08;Pydantic 模型&#xff09;&#xff0c;让代码更容易使用这些数据进行自动化处理。 换句话说&#xff0c;AI 生成的文本通常是自然语言&…

python-leetcode-乘积最大子数组

152. 乘积最大子数组 - 力扣&#xff08;LeetCode&#xff09; class Solution:def maxProduct(self, nums: List[int]) -> int:if not nums:return 0max_prod nums[0]min_prod nums[0]result nums[0]for i in range(1, len(nums)):if nums[i] < 0:max_prod, min_prod…

江协科技/江科大-51单片机入门教程——P[1-1] 课程简介P[1-2] 开发工具介绍及软件安装

本教程也力求在玩好单片机的同时了解一些计算机的基本概念&#xff0c;了解电脑的一些基本操作&#xff0c;了解电路及其元器件的基本理论&#xff0c;为我们学习更高级的单片机&#xff0c;入门IT和信息技术行业&#xff0c;打下一定的基础。 目录 1.课程简介 2.开发工具及…

简单介绍JVM

1.什么是JVM&#xff1f; JVM就是Java虚拟机【Java Virtual Machine】&#xff0c;简称JVM。主要部分包括类加载子系统&#xff0c;运行时数据区&#xff0c;执行引擎&#xff0c;本地方法库等&#xff0c;接下来我们一一介绍 2.类加载子系统 JVM中运行的就是我们日常写的JA…

【对话推荐系统】Towards Topic-Guided Conversational Recommender System 论文阅读

Towards Topic-Guided Conversational Recommender System 论文阅读 Abstract1 Introduction2 Related Work2.1 Conversation System2.2 Conversational Recommender System2.3 Dataset for Conversational Recommendation 3 Dataset Construction3.1 Collecting Movies for Re…

当下弹幕互动游戏源码开发教程及功能逻辑分析

当下很多游戏开发者或者想学习游戏开发的人&#xff0c;想要了解如何制作弹幕互动游戏&#xff0c;比如直播平台上常见的那种&#xff0c;观众通过发送弹幕来影响游戏进程。需要涵盖教程的步骤和功能逻辑的分析。 首先&#xff0c;弹幕互动游戏源码开发教程部分应该分步骤&…

STM32——HAL库开发笔记21(定时器2—输出比较)(参考来源:b站铁头山羊)

本文主要讲述输出比较及PWM信号相关知识。 一、概念 所谓输出比较&#xff0c;就是通过单片机的定时器向外输出精确定时的方波信号。 1.1 PWM信号 PWM信号即脉冲宽度调制信号。PWM信号的占空比 &#xff08;高电压 所占周期 / 整个周期&#xff09; * 100% 。所以PWM信号…

YOLOv12 ——基于卷积神经网络的快速推理速度与注意力机制带来的增强性能结合

概述 实时目标检测对于许多实际应用来说已经变得至关重要&#xff0c;而Ultralytics公司开发的YOLO&#xff08;You Only Look Once&#xff0c;只看一次&#xff09;系列一直是最先进的模型系列&#xff0c;在速度和准确性之间提供了稳健的平衡。注意力机制的低效阻碍了它们在…

动态内容加载的解决方案:Selenium与Playwright对比故障排查实录

方案进程 2024-09-01 09:00 | 接到亚航航班数据采集需求 2024-09-01 11:30 | 首次尝试使用Selenium遭遇Cloudflare验证 2024-09-01 14:00 | 切换Playwright方案仍触发反爬机制 2024-09-01 16:30 | 引入爬虫代理IPUA轮换策略 2024-09-02 10:00 | 双方案完整实现并通过压力测试故…

NLP学习记录十:多头注意力

一、单头注意力 单头注意力的大致流程如下&#xff1a; ① 查询编码向量、键编码向量和值编码向量分别经过自己的全连接层&#xff08;Wq、Wk、Wv&#xff09;后得到查询Q、键K和值V&#xff1b; ② 查询Q和键K经过注意力评分函数&#xff08;如&#xff1a;缩放点积运算&am…

Spring基础01

Spring基础01 软件开发原则 OCP开闭原则&#xff1a;七大开发原则当中最基本的原则&#xff0c;其他的六个原则是为这个原则服务的。 对扩展开放&#xff0c;对修改关闭。在扩展系统功能的时候&#xff0c;没有修改之前写好的代码&#xff0c;就符合OCP原则&#xff0c;反之&a…

2025年2月,TVBOX接口最新汇总版

这里写自定义目录标题 1、离线版很必要2、关于在线版好还是离线版更实在&#xff0c;作个总结&#xff1a;★ 离线版的优点&#xff1a;★ 离线版的缺点&#xff1a; 3.1、 针对FM内置的写法&#xff1b;3.2、 如果是用在YSC&#xff0c;那么格式也要有些小小的改变3.2.1、 YSC…