ubuntu24.04上使用qemu和buildroot模拟vexpress-ca9开发板构建嵌入式arm linux环境

news2025/4/21 0:44:36

1 准备工作

1.1 安装qemu

在ubuntu系统中使用以下命令安装qemu。

sudo apt install qemu-system-arm

安装完毕后,在终端输入: qemu- 后按TAB键,弹出下列命令证明安装成功。

1.2 安装arm交叉编译工具链

sudo apt install gcc-arm-linux-gnueabihf

安装之后,在终端输入arm-linux- gnueabihf- 后按TAB键,出现下列命令,表示安装成功。

1.3 下载linux kernel和buildroot

下载需要的linux kernel和build root源码,这里以linux-6.14.2.tar.xz和buildroot-2024.02.tar.gz为例。

wget https://cdn.kernel.org/pub/linux/kernel/v6.x/linux-6.14.2.tar.xz
wget https://buildroot.org/downloads/buildroot-2024.02.tar.gz

进入下载目录,分别解压

tar -xvf linux-6.14.2.tar.xz
tar -xvf buildroot-2024.02.tar.gz

解压后如下:

2 配置和编译linux内核

2.1 配置内核

进入解压后的linux-6.14.2目录,对于 vexpress-ca9 开发板,执行如下默认配置。

make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- vexpress_defconfig

为了后续能正确使用ttyAMA0,需要进入meunconfig进行如下配置。

make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- menuconfig

注意,如果这里没有按照上图配置,后续使用qemu加载内核和根文件系统后,无法进入系统,会报下面的错误。

2.2 编译内核

执行编译命令,生成内核镜像zImage和设备树dtb文件。

make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- zImage dtbs -j8

编译完成后,zImage 文件会生成在 arch/arm/boot 目录下,设备树文件(如 vexpress-v2p-ca9.dtb)会生成在 arch/arm/boot/dts/arm 目录下。

3 使用buildroot制作根文件系统

3.1 配置buildroot

进入解压后的buildroot-2024.02目录,使用vexpress-ca9开发板默认配置。

make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- qemu_arm_vexpress_defconfig

进入menuconfig,配置支持mdev。

make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- menuconfig

3.2 编译buildroot

编译buildroot,生成根文件系统。

make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- -j8

编译完成后,根文件系统会生成在 output/images/rootfs.ext2

4 启动qemu模拟vexpress-ca9

sudo qemu-system-arm -M vexpress-a9 -m 512M -kernel "/home/cat/work/drv/linux-6.14.2/arch/arm/boot/zImage" -dtb "/home/cat/work/drv/linux-6.14.2/arch/arm/boot/dts/arm/vexpress-v2p-ca9.dtb" -sd "/home/cat/work/drv/buildroot-2024.02/output/images/rootfs.ext2" -append "console=ttyAMA0,115200 root=/dev/mmcblk0 rw" -nographic
​

参数说明:

  • -M vexpress-a9:指定模拟的开发板为 VExpress - CA9。

  • -m 512M:分配 512MB 内存。

  • -kernel:指定内核镜像文件(zImage)。

  • -dtb:指定设备树文件(dtb)。

  • -sd:指定根文件系统(rootfs.ext2)。

  • -append:传递内核启动参数。

  • -nographic:以非图形化模式启动。

成功加载内核和根文件系统:

完毕。

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

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

相关文章

IntelliSense 已完成初始化,但在尝试加载文档时出错

系列文章目录 文章目录 系列文章目录前言一、原因二、使用步骤 前言 IntelliSense 已完成初始化,但在尝试加载文档时出错 File path: E:\QtExercise\DigitalPlatform\DigitalPlatform\main\propertyWin.ui Frame GUID:96fe523d-6182-49f5-8992-3bea5f7e6ff6 Frame …

【更新完毕】2025泰迪杯数据挖掘竞赛A题数学建模思路代码文章教学:竞赛论文初步筛选系统

完整内容请看文末最后的推广群 基于自然语言处理的竞赛论文初步筛选系统 基于多模态分析的竞赛论文自动筛选与重复检测模型 摘要 随着大学生竞赛规模的不断扩大,参赛论文的数量激增,传统的人工筛选方法面临着工作量大、效率低且容易出错的问题。因此&…

服务器内存规格详解

服务器内存规格详解 一、内存安装原则与配置规范 1. 内存槽位安装规则 规则描述CPU1对应的内存槽位至少需配置一根内存禁止混用不同规格(容量/位宽/rank/高度)内存条,需保持相同Part No.推荐完全平衡的内存配置,避免通道/处理器…

Vue3+Vite+TypeScript+Element Plus开发-22.客制Table组件

系列文档目录 Vue3ViteTypeScript安装 Element Plus安装与配置 主页设计与router配置 静态菜单设计 Pinia引入 Header响应式菜单缩展 Mockjs引用与Axios封装 登录设计 登录成功跳转主页 多用户动态加载菜单 Pinia持久化 动态路由 -动态增加路由 动态路由-动态删除…

江苏广电HC2910-创维代工-Hi3798cv200-2+8G-海美迪安卓7.0-强刷包

江苏广电HC2910-创维代工-Hi3798cv200-28G-海美迪安卓7.0-强刷包 说明 1、由于原机的融合网关路由不能设置,原网口无法使用,需要用usb2.0的RJ45usb网卡接入。 通过usb接口网卡联网可以实现百兆网口连接。原机usb3.0的接口可以以接入硬盘,播放…

nvm切换node版本后,解决npm找不到的问题

解决方法如下 命令行查看node版本 node -v找到node版本所对应的npm版本 点击进入node版本 npm对应版本下载 点击进入npm版本 下载Windows 压缩包 下载完成后,解压,文件改名为npm 复制到你nvm对应版本的node_modules 下面 将下载的npm /bin 目录…

Windows系统安装MySQL安装实战分享

以下是在 Windows 系统上安装 MySQL 的详细实战步骤,涵盖下载、安装、配置及常见问题处理。 一、准备工作 下载 MySQL 安装包 访问 MySQL 官网。选择 MySQL Community Server(免费版本)。根据系统位数(32/64位)下载 …

Vue 人看 React useRef:它不只是替代 ref

如果你是从 Vue 转到 React 的开发者,初见 useRef 可能会想:这不就是 React 版的 ref 吗?但真相是 —— 它能做的,比你想象得多得多。 👀 Vue 人初见 useRef 在 Vue 中,ref 是我们访问 DOM 或响应式数据的…

零成本自建企业级SD-WAN!用Panabit手搓iWAN实战

我们前面提到过,最开始了解到Panabit,是因为他的SD-WAN产品(误以为是外国货?这家国产SD-WAN神器竟能免费白嫖,附Panabit免费版体验全记录);现在发现,其SD-WAN的技术基础是iWAN&#…

Unity-微信截图功能简单复刻-03绘制空心矩形

思路-绘制空心矩形 拓展UGUI的Graphic类,实现拖拽接口。 开始拖拽时记录鼠标位置, 使用拖拽中的鼠标位置和记录的位置,计算矩形顶点,绘制矩形。 两个三角形合并为一个矩形,作为空心矩形的一条边,四个边合并为空心矩形…

国产品牌芯洲科技100V降压芯片系列

SCT2A25采用带集成环路补偿的恒导通时间(COT)模式控制,大大简化了转换器的片外配置。SCT2A25具有典型的140uA低静态电流,采用脉冲频率调制(PFM)模式,它使转换器在轻载或空载条件下实现高转换效率。 芯洲科技100V降压芯片系列提供丰富的48V系…

研一自救指南 - 07. CSS面向面试学习

最近的前端面试多多少少都会遇到css的提问,感觉还是要把重点内容记记背背。这里基于b站和我自己面试的情况整理。 20250418更新: 1. BFC Block Formatting Context,一个块级的盒子,可以创建多个。里面有很多个块,他们…

图灵奖得主LeCun:DeepSeek开源在产品层是一种竞争,但在基础方法层更像是一种合作;新一代AI将情感化

图片来源:This is World 来源 | Z Potential Z Highlights: 新型的AI系统是以深度学习为基础,能够理解物理世界并且拥有记忆、推理和规划能力的。一旦成功构建这样的系统,它们可能会有类似情感的反应,但这些情感是基…

使用Redis5.X部署一个集群

文章目录 1.用Redis5.x来创建Cluste2. 查看节点信息 nodes3. 添加节点 add-node4.删除节点 del-node5.手动指定从节点 replicate6.检查集群健康状态 check 建议使用5.x版本。 首先,下载Redis,根据自己的环境选择版本。 一键启动Redis集群文件配置。 ech…

Ubuntu Linux 中文输入法默认使用英文标点

ubuntu从wayland切换到x11, 然后安装fcitx(是fcitx4版本)和 fcitx-googlepinyin, 再sudo dpkg -i 安装百度输入法deb包. 在fcitx配置中, 附加组件,打勾高级, 取消打勾标点支持和全角字符. 百度输入法就可以默认用英文标点了. 而google拼音输入法的问题是字体大小没法保存,每…

Java漏洞原理与实战

一、基本概念 1、序列化与反序列化 (1)序列化:将对象写入IO流中,ObjectOutputStream类的writeobject()方法可以实现序列化 (2)反序列化:从IO流中恢复对象,ObjectinputStream类的readObject()方法用于反序列化 (3)意义:序列化机制允许将实现序列化的J…

第十届团体程序设计天梯赛-上理赛点随笔

2025.4.19来到军工路580号上海理工大学赛点参加cccc 校内环境挺好的,校内氛围也不错;临走前还用晚餐券顺走一袋橘子 再来说说比赛 首先是举办方服务器爆了,导致前10分钟刷不出题,一个多小时还上交不了代码 然后就是我用py总有几…

面试专栏-02-MySQL知识点(第二部分)

6、锁 1、分类: 全局锁:锁住数据库中的所有表表级锁:每次操作锁住整张表行级锁:每次操作锁住对应行的数据 2、全局锁 加锁后,整个实例只能进行读取操作,从而保证数据的完成性和一致性。 特点&#xff…

【MySQL数据库入门到精通】

文章目录 一、SQL分类二、DDL-数据库操作1.查询2.创建数据库3.删除数据库4.使用数据库 三、DDL-表操作1.查询 一、SQL分类 根据功能主要分为DDL DML DQL DCL DDL:Date Definition Language数据定义语言:定义数据库,表和字段 DML:Date Manipulatin Lan…

[Swift]pod install成功后运行项目报错问题error: Sandbox: bash(84760) deny(1)

操作: platform :ios, 14.0target ZKMKAPP do# Comment the next line if you dont want to use dynamic frameworksuse_frameworks!# Pods for ZKMKAPPpod Moyaend pod install成功后运行报错 报错: error: Sandbox: bash(84760) deny(1) file-writ…