当前位置: 首页 > news >正文

玩转QEMU硬件模拟器 - vexpress-a9开发板模拟开发

Versatile Express-A9开发板介绍

  ARM Versatile Express(通常简称 “VExpress”)是 ARM 公司推出的参考开发平台,主要用于 ARM 架构处理器(如 Cortex-A 系列)的软件开发、验证和原型设计,广泛应用于嵌入式系统、移动设备和服务器领域的芯片与软件研发。QEMU可模拟vexpress-a9等平台,用于前期软件验证。

编译内核

  在开发基于linux操作系统的应用程序和驱动之前,需要一个能够正常编译的linux内核,这是开发工作顺利进行的前提。通常包括:工具链的安装、linux内核源码获取、内核配置、内核编译和内核验证。

  • 工具链安装
    gcc-linaro-10.2.1-2021.01-x86_64_arm-linux-gnueabihf.tar.xz
  • 内核源码获取
    linux-5.10.240.tar.xz
  • 内核配置
asher@ubuntu20:~/phic/qemu-asher/vexpress/linux-5.10.240$ ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- KERNEL=kernel make vexpress_defconfig
  • 内核编译
asher@ubuntu20:~/phic/qemu-asher/vexpress/linux-5.10.240$ ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- KERNEL=kernel make -j4 zImage modules dtbs

  内核编译成功,可以在内核源码路径linux-5.10.240/arch/arm/boot/看到如下内容
linux-5.10.240

  • 内核验证

  内核编译成功后,可以编写一个简单的驱动程序,用来测试能不能正常编译,并生成.ko文件Makefile中要指明linux内核源码的路径和交叉编译工具链,obj-m将 hello_world.c这个文件编译为 hello_world.ko可加载内核模块。

#include <linux/init.h>
#include <linux/module.h>static int helloworld_init(void)
{
// 在内核中无法使用c语言库,所以不用printfprintk("hello world\n");          return 0;
}static void helloworld_exit(void)
{printk("bye\n");
}module_init(helloworld_init);
module_exit
http://www.dtcms.com/a/351258.html

相关文章:

  • 深入浅出理解支持向量机:从原理到应用,解锁分类算法的核心密码
  • 宝石组合(蓝桥杯)
  • UX 设计入门终章:让洞察落地!用用户流程图、IA 和旅程图,设计用户与产品的互动故事
  • 介绍一下 bev fusion 网络结构
  • 微服务-27.配置管理-什么是配置管理
  • FULL OUTER JOIN 的作用与使用场景(检查表与表是否存在不同记录)
  • UML 时序图中交互片段操作符的详细解析与 C/C++ 实现示例
  • 五、VSCODE SSH连接linux服务器免密登录
  • Java中 0.05 + 0.01 ≠ 0.06 揭秘浮点数精度陷阱
  • VSCode: 从插件安装到配置,如何实现 Ctrl+S 保存时,完全按照 .eslintrc.js 中的 ESLint 规则自动格式化代码
  • vscode 配置 + androidStudio配置
  • Easy Voice Recorder Pro v2.9.3 简单易用的专业音频录制工具应用
  • 开发手札:UnrealEngine编辑器开发
  • 基于stm32的物联网OneNet火灾报警系统
  • Java面试指南‌——事务:数据库世界的超级英雄联盟
  • OpenSCA开源社区每日安全漏洞及投毒情报资讯|22th-24th Aug. , 2025
  • MySQL基本语法及与JAVA程序建立连接
  • 设计模式七大原则附C++正反例源码
  • 学习嵌入式的第三十八天
  • 【网络安全】XSS漏洞——PortSwigger靶场-DOM破坏
  • 常见的 Loader 和 Plugin?
  • 观察者模式 (Observer Pattern)与几个C++应用例子
  • Visual Basic 数据类型应用示例
  • EasyExcel 3.x 导出动态表头,动态sheet页
  • 国产化Excel开发组件Spire.XLS教程:Python 读取 CSV 文件,从基础到进阶指南
  • C shell 学习
  • AI出题人给出的Java后端面经(二十仨)(不定更)
  • 线性代数中矩阵等价与离散数学中关系的闭包之间的关联
  • dapo:开源大规模llm强化学习系统的突破与实现
  • AI提示词30天入门培训计划