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

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.mzph.cn/diannao/79641.shtml

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

相关文章

用 R 语言打造交互式叙事地图:讲述黄河源区生态变化的故事

目录 🌟 项目背景:黄河源头的生态变迁 🧰 技术栈介绍 🗺️ 最终效果预览 💻 项目构建步骤 1️⃣ 数据准备 2️⃣ 构建 Leaflet 地图 3️⃣ 使用 scrollama 实现滚动触发事件 4️⃣ 使用 R Markdown / Quarto 打包发布 🎬 效果展示截图 📦 完整代码仓库 …

CTF--秋名山车神

一、原网页: 二、步骤: 1.尝试用计算器计算: 计算器溢出,无法正常计算 2.使用python计算: 得出计算结果为:1864710043732437134701060769 3.多次刷新页面: 发现变量为value,要用pos…

CRC实战宝典:从原理到代码,全面攻克循环冗余校验

CRC实战宝典:从原理到代码,全面攻克循环冗余校验 github开源:CRC软硬件协同测试项目 CRC 简介 CRC(循环冗余校验)是一种强大的错误检测技术,广泛应用于数字网络和存储系统。它是确保数据完整性的重要方法…

【大模型】DeepSeek + Coze 打造个人专属AI智能体使用详解

目录 一、前言 二、AI智能体介绍 2.1 什么是AI智能体 2.2 AI智能体核心能力 2.3 AI智能应用场景 三、coze 介绍 3.1 coze是什么 3.1.1 平台概述 3.1.2 平台适用人群 3.2 平台核心功能 3.3 coze可以做什么 3.4 为什么选择coze 四、coze 搭建AI智能体操作实践 4.1 搭…

MySQL入门:数据表的创建

​今天我们来介绍一下除HTML外的另一种语言:MySQL语言; MySQL:即一种用于管理和处理关系数据库的标准语言。要用于执行查询、更新、管理数据库中的数据以及定义和操作数据库结构。 接下来我会逐一介绍它的作用以及其中数据表,数据…

[图论]生成树 引言

生成树 引言 生成树:一个连通图的生成树是该图的一个极小连通子图。生成树中含有图中全部(设 V V V个)顶点及构成一棵树的 V − 1 V-1 V−1条边,且生成树中不应有环。最小生成树(MST):图的所有生成树中,边权之和最小的生成树。显…

AI调试工具有哪些?

一、深度学习框架专用调试工具 TensorBoard • 功能:实时监控训练指标(损失值、准确率)、可视化神经网络结构、分析参数分布和梯度信息 • 适用框架:TensorFlow、PyTorch(通过插件) • 特点:支持…

深入理解 MCP 协议:开启 AI 交互新时代

深入理解 MCP 协议:开启 AI 交互新时代🚀 在当今人工智能蓬勃发展的时代🌐,大型语言模型(LLM)已经在众多领域展现出了强大的能力,令人惊叹👏!然而,传统的 LLM…

微信、抖音、小红书emoji符号大全

1、Emoji 日常符号 👣👀👁️👄💋👂🦻👃👅🧠🫀🫁🦷🦴💪🦾🦿🦵&a…

【嵌入式】——Linux系统远程操作和程序编译

目录 一、虚拟机配置网络设置 二、使用PuTTY登录新建的账户 1、在ubuntu下开启ssh服务 2、使用PuTTY连接 三、树莓派实现远程登录 四、树莓派使用VNC viewer登录 五、Linux使用talk聊天程序 1、使用linux自带的talk命令 2、使用c语言编写一个talk程序 一、虚拟机配置网络…

春和景明-C语言简单代码

题目要求: 请在centOS Linux中编写一个C语言程序实现如下功能: 同时创建100个用户,用户的账户名称为:Student01 Student02 … Student100;设置每个用户的初始密码为:stud123456请用gcc编译C的源代码,生…

设计模式之工厂模式(factory pattern):在商品对象创建系统中的应用

目录 一、设计思路 1. 简单工厂模式 2. 工厂方法模式 3. 抽象工厂模式 二、UML类图(PlantUML格式) 1.简单工厂模式 2.工厂方法模式 3.抽象工厂模式 三、实现过程与结果 1. 简单工厂模式 2. 工厂方法模式 3. 抽象工厂模式 四、总结 在面向对…

Trae,字节跳动推出的 AI 编程助手插件

Trae 插件是 Trae 旗下全新一代的人工智能编程助手(前身为 MarsCode 编程助手),以插件形式集成在本地开发环境中,具备极高的兼容性和灵活性,旨在提升开发效率和代码质量。它支持超过100种编程语言,兼容主流…

工作纪实_63-Mac电脑使用brew安装软件

最近在接触kafka,想着在自己的电脑安装一套环境,docker也能行,但是还是想装一些原生的软件试试看,因此便想着整理一下brew的命令,这命令确实是方便,不需要下载tar包乱八七糟的东西,一键安装 bre…

Python语法系列博客 · 第8期[特殊字符] Lambda函数与高阶函数:函数式编程初体验

上一期小练习解答(第7期回顾) ✅ 练习1:找出1~100中能被3或5整除的数 result [x for x in range(1, 101) if x % 3 0 or x % 5 0]✅ 练习2:生成字符串长度字典 words ["apple", "banana", "grape…

Redis--主从复制

目录 一、配置 1.1 建立复制 1.2 断开复制 1.3 安全性 1.4 只读 1.5 传输延迟 二、拓扑 2.1 一主一从结构 2.2 一主多从结构 2.3 树形主从结构 在分布式系统中为了解决单点问题,通常会把数据复制多个副本部署到其他服务器,满足故障恢 复和负载均衡等需求…

已注册商标如何防止被不使用撤销!

近年来已注册商标被撤销越来越多,不乏著名企业或机构,普推知产商标老杨看到前一阵看到央视和百度等申请的商标也被申请撤销,连续三年不使用撤销也是正常的商标流程。 已注册商标被撤销普推老杨看到案例主要是集中在一些早期申请注册的好记的商…

解密大模型背后的秘密:训练、优化与挑战

解密大模型背后的秘密:训练、优化与挑战 在当今的人工智能领域,大模型(Large Language Models, LLMs)已经成为了一个不可忽视的存在。从自然语言处理到图像生成,再到推荐系统,大模型以其强大的泛化能力和创…

App自动化测试流程方案与架构设计

App自动化测试流程方案与架构设计 一、核心流程设计 #mermaid-svg-kN4GmIvHb8MMT83M {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-kN4GmIvHb8MMT83M .error-icon{fill:#552222;}#mermaid-svg-kN4GmIvHb8MMT83M .e…

字节跳动发布视频生成基础大模型 Seaweed-7B

近日,字节跳动发布了其全新视频生成基础大模型 Seaweed-7B,该模型由字节 Seed 团队开发,参数量仅为 70 亿,在多个方面展现出卓越性能,为 AI 视频生成领域带来了新的突破。 功能特点 支持多种生成方式:Sea…