QEMU 中的 Kyoto Microcomputer KZM-ARM11-01 板卡模拟(`kzm`):基于 i.MX31 SoC 的 ARM1136 评估板实战指南
虚拟化硬件仿真【免费下载链接】qemuOfficial QEMU mirror. Please see https://www.qemu.org/contribute/ for how to submit changes to QEMU. Pull Requests are disabled. Please only use release tarballs from the QEMU website.项目地址https://gitcode.com/gh_mirrors/qe/qemu点击查看免费下载本文聚焦 QEMU 源码树中kzm板卡模拟器docs/system/arm/kzm.rst对应的 kzm.c全面介绍其模拟的 Kyoto Microcomputer KZM-ARM11-01 评估板、NXP原 Freescalei.MX31 SoC 的片上外设、完整的内存映射以及如何在 QEMU 中启动内核、配置串口与网络。读完本文你将掌握kzm板卡的能力边界、外设地址与中断号分布并能依据仓库源码定位每一处模拟实现的证据。板卡概述一块基于 i.MX31 的 ARM1136 评估板kzm板卡模拟的是日本京都微型计算机公司Kyoto Microcomputer推出的KZM-ARM11-01 评估板。该评估板的核心是一颗NXP i.MX31 SoC源码注释中写作 Freescale i.MX31片上集成的 CPU 为ARM1136内核ARM11 家族、ARMv6 指令集架构。QEMU 中该机器的注册信息位于 hw/arm/kzm.cstatic void kzm_machine_init(MachineClass *mc) { mc-desc ARM KZM Emulation Baseboard (ARM1136); mc-init kzm_init; mc-ignore_memory_transaction_failures true; mc-default_ram_id kzm.ram; } DEFINE_MACHINE(kzm, kzm_machine_init)由此可以确认在 QEMU 命令行中该机器名为kzm用法形如qemu-system-arm -M kzm ...。机器描述字符串为 ARM KZM Emulation Baseboard (ARM1136)默认 RAM 区域 ID 为kzm.ramignore_memory_transaction_failures true表示对未映射地址的访问失败会被忽略而不是触发异常这与下方内存映射中大量 IGNORED 区域的设计一致。从源码结构看整个板卡由两层构成SoC 层TYPE_FSL_IMX31fsl-imx31实现在 hw/arm/fsl-imx31.c提供 CPU 与全部片上外设板卡层IMX31KZM结构体hw/arm/kzm.c内嵌FslIMX31State soc负责挂载 SDRAM、FPGA 串口、LAN9118 网卡并加载内核。内存映射哪些被模拟、哪些被忽略原文档只列出了模拟设备清单未给出内存布局。QEMU 源码在 hw/arm/kzm.c 中注释了完整的 KZM 基板内存映射逐条整理如下地址均为物理地址地址范围用途QEMU 处理0x00000000–0x7fffffffi.MX31 SoC 内部资源ROM、IRAM、外设等由 SoC 模拟0x80000000–0x8fffffffSDRAMSDRAM0EMULATED0x90000000–0x9fffffffSDRAMSDRAM1EMULATED0xa0000000–0xafffffffNOR FlashIGNORED0xb0000000–0xb3ffffff不可用IGNORED0xb4000000–0xb4000fff8-bit 自由空间IGNORED0xb4001000–0xb400100f板级控制寄存器含0xb4001003DIP 开关IGNORED0xb4001010–0xb400101f7 段 LEDIGNORED0xb4001020–0xb400102fLEDIGNORED0xb4001030–0xb400103fLEDIGNORED0xb4001040–0xb400104fFPGA 内 UART触摸屏串口EMULATED0xb4001050–0xb400105fFPGA 内 UARTEMULATED0xb4001060–0xb40fffffFPGA 其余部分IGNORED0xb6000000–0xb61fffffLAN 控制器LAN9118EMULATED0xb6200000–0xb62fffffFPGA NAND 控制器IGNORED0xb6300000–0xb7ffffff空闲IGNORED0xb8000000–0xb8004fff内存控制器寄存器IGNORED0xc0000000–0xc3ffffffPCMCIA / CompactFlashIGNORED0xc4000000–0xffffffff保留IGNORED也就是说QEMU 只精确模拟了 SDRAM、两块 FPGA 串口、LAN9118 以太网控制器以及整个 i.MX31 SoC评估板上的 Flash、板级控制/LED 等“真实硬件寄存器”均被忽略这正好呼应了机器类中ignore_memory_transaction_failures标志的用途——访客访问这些空洞区域不会导致模拟器报错。上述宏在 include/hw/arm/fsl-imx31.h 中有对应定义例如FSL_IMX31_SDRAM0_ADDR 0x80000000、FSL_IMX31_CS4_ADDR 0xb4000000、FSL_IMX31_CS5_ADDR 0xb6000000板卡代码中KZM_FPGA_ADDR取CS4 0x1040KZM_LAN9118_ADDR直接等于CS5基址。i.MX31 SoC 与外设清单原文档列出的模拟设备UARTs、LAN9118 以太网、AVIC、CCM、GPT、EPIT 定时器、I2C、GPIO 控制器、看门狗在 hw/arm/fsl-imx31.c 的fsl_imx31_init()中逐一实例化1 个ARM1136 CPUARM_CPU_TYPE_NAME(arm1136)1 个AVICTYPE_IMX_AVIC——i.MX31 向量中断控制器负责汇总片上外设中断并接到 CPU 的 IRQ/FIQ1 个CCMTYPE_IMX31_CCM——时钟控制模块为 GPT/EPIT 等提供时钟源代码中s-gpt.ccm、s-epit[i].ccm均引用 CCM2 个UARTTYPE_IMX_SERIAL1 个GPTTYPE_IMX31_GPT——通用定时器2 个EPITTYPE_IMX_EPIT——增强周期中断定时器3 个I2CTYPE_IMX_I2C3 个GPIOTYPE_IMX_GPIO且显式关闭了has-edge-sel属性fsl-imx31.c1 个看门狗TYPE_IMX2_WDT。此外SoC 内部还模拟了 16 KB 安全启动 ROMimx31.secure_rom地址0x00000000、16 KB 掩膜 ROMimx31.rom地址0x00404000以及 16 KB 内部 SRAMimx31.iram地址0x1fffc000并在0x10000000处映射了覆盖 256 MB–16 KB 的别名区间imx31.iram_alias见 fsl-imx31.c。片上外设地址与中断号速查表依据 include/hw/arm/fsl-imx31.h 与 fsl-imx31.c 中的serial_table/epit_table/i2c_table/gpio_table整理出 i.MX31 模拟外设的 MMIO 基址与 AVIC 中断号外设基地址0x…中断号备注AVIC68000000—中断控制器本身CCM53F80000—时钟控制模块UART1 / UART243F90000/43F9400045 / 32SoC 串口GPT53F9000029通用定时器EPIT1 / EPIT253F94000/53F9800028 / 27增强周期中断定时器I2C1 / I2C2 / I2C343F80000/43F98000/43F8400010 / 4 / 3GPIO1 / GPIO2 / GPIO353FCC000/53FD0000/53FA400052 / 51 / 56看门狗53FDC000—IMX2 看门狗SoC 的 MMIO 映射与中断连接均在fsl_imx31_realize()中完成例如 AVIC 经sysbus_mmio_map映射到FSL_IMX31_AVIC_ADDR并把输出中断连到 CPU 的 IRQ索引 0与 FIQ索引 1每个外设的中断脚则接到 AVIC 的对应 GPIO 输入。板卡初始化逻辑与内存限制kzm_init()hw/arm/kzm.c的执行顺序值得关注实例化 SoCobject_initialize_child(..., TYPE_FSL_IMX31)后qdev_realize完成所有片上外设的创建与映射RAM 容量校验machine-ram_size若超过FSL_IMX31_SDRAM0_SIZE FSL_IMX31_SDRAM1_SIZE即 256 MiB 256 MiB 512 MiB会输出错误并退出RAM size more than %s is not supported。因此-m参数上限为 512 MiBSDRAM 与别名映射主 RAM 挂在0x80000000若ram_size不足 512 MiB代码会用memory_region_init_alias创建ram.alias把同一份 RAM 续接到 SDRAM1 区域0x90000000之后的剩余地址0x90000000 size保证访客视角下两个 SDRAM 片选区间连续且都有存储体网卡通过qemu_find_nic_info(lan9118, true, NULL)检测用户是否配置了 NIC若配置则在KZM_LAN9118_ADDR0xb6000000实例化 LAN9118并将其中断接到AVIC 的 52 号输入即 GPIO1 中断线qdev_get_gpio_in(DEVICE(s-soc.avic), 52)FPGA 串口触摸屏若指定了第 3 个串口serial_hd(2)非空则在KZM_FPGA_ADDR 0x10即0xb4001050以14745600 Hz波特率时钟创建serial_mm_init中断同样接到 AVIC 52 号。也就是说第三个串口被板卡用作 FPGA 上的触摸屏/辅助 UART内核加载bootinfo.loader_start 0x80000000SDRAM0 基址、bootinfo.board_id 1722旧式 ARM Linux ATAG 引导协议使用的机器 ID、bootinfo.ram_size machine-ram_size最后在非 qtest 环境下调用arm_load_kernel加载-kernel指定的内核镜像。启动内核与使用建议kzm属于传统arm_load_kernel引导模型非 QEMU 固件引导因此典型用法是直接提供 Linux 内核镜像qemu-system-arm -M kzm -m 256M \ -kernel zImage \ -nographic实用要点串口分配SoC 的 UART1/UART2 对应-serial的第 1、2 个串口第 3 个串口-serial第 3 项serial_hd(2)会作为 FPGA 触摸屏 UART 被实例化。-nographic或-serial stdio即可把 UART1 接到终端内存上限-m不得超过 512 MiB否则板卡代码会直接报错退出网络配置 NIC 后板卡自动挂载 LAN9118对应-nic系列选项例如-nic user或-netdev user,idn1 -device lan9118,netdevn1无需手动指定设备模型LAN9118 中断接到 AVIC 52启动协议board_id 1722用于旧式 ATAG 引导若内核为现代设备树DTB引导可通过-dtb提供设备树需配合可识别 KZM 布局的 DTS。源码导读与进一步探索板卡主体与内存映射注释hw/arm/kzm.ci.MX31 SoC 设备模型与 realize 流程hw/arm/fsl-imx31.c地址、大小与中断号宏定义include/hw/arm/fsl-imx31.h文档原始定义docs/system/arm/kzm.rst并收录于 docs/system/target-arm.rst 的 ARM 平台索引中同类参考基于 i.MX25 SoC 的 docs/system/arm/imx25-pdk.rst 与 hw/arm/imx25_pdk.c 展示了同一套FslIMX*SoC 封装风格在不同板卡上的复用整体来看kzm是 QEMU ARM 平台上结构清晰、外设适中的评估板模拟特别适合作为研究 i.MX31 SoC 设备模型、旧式 ARM 板级引导流程以及 QEMU 板卡代码组织方式的入门样本其“大量外设 IGNORED、核心外设 EMULATED”的设计也体现了 QEMU 板级模拟中“只模拟软件所需硬件”的典型取舍。赞分享虚拟化硬件仿真【免费下载链接】qemuOfficial QEMU mirror. Please see https://www.qemu.org/contribute/ for how to submit changes to QEMU. Pull Requests are disabled. Please only use release tarballs from the QEMU website.项目地址https://gitcode.com/gh_mirrors/qe/qemu点击查看免费下载相关推荐Zephyr 中基于 BabbleSim 的 nRF54LM20 模拟板卡 nrf54lm20bsim 使用指南Zephyr 中基于 BabbleSim 的 nRF54LM20 模拟板卡 nrf54lm20bsim 使用指南 导读 nrf54lm20bsim 是 Zeph操作系统嵌入式RTOS物联网Zephyr 开发板指南基于 ATSAME70Q21 的 SAM E70 Xplained 评估板Zephyr 开发板指南基于 ATSAME70Q21 的 SAM E70 Xplained 评估板 SAM E70 Xplained 是 Atmel现 Mi操作系统嵌入式RTOS物联网QEMU 中的 Stellaris 板卡模拟深入解读 lm3s6965evb 与 lm3s811evbQEMU 中的 Stellaris 板卡模拟深入解读 lm3s6965evb 与 lm3s811evb 本文以 QEMU 官方文档 docs/system/a虚拟化硬件仿真上一篇终极指南如何在Android-Sunflower项目中配置多模块构建变体与productFlavors下一篇sqlx与太空资源法律框架法律问题的数据库系统创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关新闻

无人机巡维保障系统后端:状态机与轨迹数据处理实践

无人机巡维保障系统后端:状态机与轨迹数据处理实践

简介:基于Java语言的uav-patrol-backend巡维保障系统后端源码,面向无人机巡维业务的后端开发人员,提供了一套模块化、可扩展的服务端实现,可支撑无人机巡维任务管理、设备状态监控与数据上报等核心服务。项目包含51个文件、共93KB…

2026/9/25 1:05:32 阅读更多 →
12306抢票源码拆解:Java+Python多语言混编的自动化链路设计与实现

12306抢票源码拆解:Java+Python多语言混编的自动化链路设计与实现

简介:面向需要优化12306转移仓库管理效率的Java开发者,这套源码实现完整覆盖系统核心业务链路,从登录认证、余票查询、订单提交到人脸核验等环节均有对应代码模块,适合中高级程序员借鉴其多语言融合的工程化落地方式。资源包共86个…

2026/9/25 1:06:11 阅读更多 →
LEFDEFREF-5.8规范解析:数字后端物理设计的语法宪法

LEFDEFREF-5.8规范解析:数字后端物理设计的语法宪法

简介:本资源是Cadence官方发布的《LEF/DEF 5.8 语言参考手册》PDF文档,面向集成电路物理设计工程师、EDA工具开发者及高校VLSI课程学习者,系统解决LEF(Library Exchange Format)与DEF(Design Exchange Form…

2026/9/25 1:08:02 阅读更多 →

最新新闻

ESP32-C5-WROOM-1U双频Wi-Fi 6模组开发实战与选型指南

ESP32-C5-WROOM-1U双频Wi-Fi 6模组开发实战与选型指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/9/25 1:14:23 阅读更多 →
KITTI激光雷达点云投影到图像的ROS工程实践

KITTI激光雷达点云投影到图像的ROS工程实践

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/9/25 1:14:23 阅读更多 →
生物学重复与技术重复:实验设计与统计分析中的关键区别

生物学重复与技术重复:实验设计与统计分析中的关键区别

1. 为什么这两个词总让人在组会上被问住如果你做过一段时间的湿实验,大概率经历过这样的场景:组会上你汇报完一组数据,导师或者PI突然问一句——“你这个n是多少?是生物学重复还是技术重复?”你心里咯噔一下&#xff0…

2026/9/25 1:14:23 阅读更多 →
LLC谐振变换器多模态调试实战:ZVS/ZCS波形判据与工程落地

LLC谐振变换器多模态调试实战:ZVS/ZCS波形判据与工程落地

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/9/25 1:14:23 阅读更多 →
TensorFlow导入dtensor报错详解:ImportError排查与修复

TensorFlow导入dtensor报错详解:ImportError排查与修复

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/9/25 1:14:23 阅读更多 →
Multisim仿真二阶有源带通滤波器:1kHz中心频率Q≈5设计全流程

Multisim仿真二阶有源带通滤波器:1kHz中心频率Q≈5设计全流程

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/9/25 1:13:22 阅读更多 →

日新闻

AI元人文:从工具使用到思维重构的深度探索

AI元人文:从工具使用到思维重构的深度探索

最近半年我一直在琢磨一件事:AI元人文到底是什么?说白了,就是“用元视角重新审视人与AI的关系”,也在“探索AI如何反向逼着我们发现自己的思考边界”。标题里的“元探索”,在我看就是一层套一层的追问——当你用AI解决…

2026/9/25 0:00:41 阅读更多 →
Python+CNN车牌识别实战:从数据预处理到模型训练与部署

Python+CNN车牌识别实战:从数据预处理到模型训练与部署

简介:基于Python与卷积神经网络的车牌识别项目,面向计算机视觉初学者及智能交通开发者,目标是帮助用户掌握从数据预处理、模型构建到实际部署的完整流程。压缩包共25个文件,包含jpg/png图像样本、py训练脚本、md说明文档、dat数据…

2026/9/25 0:00:41 阅读更多 →
Vim基础操作全攻略:保存退出、模式切换与高频命令实战

Vim基础操作全攻略:保存退出、模式切换与高频命令实战

1. 项目概述1.1 核心需求解析今天聊聊Vim。写这个题目的原因是:几乎每个后端开发者、运维人员、数据工程师某天都会遇到一个场景——深夜加班,服务器登录界面只有黑底白字,编辑器只有vi/vim,你必须在五分钟内完成一次配置修改并保…

2026/9/25 0:00:41 阅读更多 →

周新闻

Flutter for OpenHarmony游戏卡片渐变背景实战:从原理到性能优化

Flutter for OpenHarmony游戏卡片渐变背景实战:从原理到性能优化

直接铺开项目本身吧。这几个月我一直在折腾一件事:用Flutter给OpenHarmony做一款游戏集合类的App,说白了就是把若干小游戏塞进一个壳里,用统一入口分发。这个方向本身不算新鲜,真正让我花了不少心思的,是首页那堆游戏卡…

2026/9/24 14:34:13 阅读更多 →
Word表格编号全攻略:从列表编号到题注交叉引用

Word表格编号全攻略:从列表编号到题注交叉引用

写Word文档,最让人头疼的往往是那些“看起来不起眼”的小问题。比如表格编号这事:今天在表后面多加了两个空白行,明天给客户交稿前发现整个章节的编号全部错位,光是挨个改序号就能耗掉大半个下午。我前阵子帮人整理一份上百页的技…

2026/9/24 9:10:42 阅读更多 →
从第一个站到第二个站:独立开发者的静态网站选型与落地实践

从第一个站到第二个站:独立开发者的静态网站选型与落地实践

1. 项目概述1.1 核心需求解析做独立开发者这几年,说实话,第一个网站上线的那天晚上我兴奋得没睡着。但等它跑了半年,流量惨淡、功能臃肿、代码自己都懒得看第二遍之后,我才慢慢琢磨明白一个道理:第一个网站是练手&…

2026/9/24 14:33:56 阅读更多 →

月新闻

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能分类:[AI/大模型]细分主题:AI 增强型 CI/CD 流水线自动化与 GitOps 实践:Agent 工作流、工具调用与任务拆解:从原型到生产的验收清单很多团队在尝试用大…

2026/9/24 12:50:34 阅读更多 →
容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场分类:[工程技术]细分主题:Kubernetes 生产环境运维与排障实战:可复制的项目复盘模板与决策记录大部分团队的事故复盘报告,最后都变成了躺在 Confluence 或钉…

2026/9/24 14:33:48 阅读更多 →
容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步

容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步

容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步分类:[工程技术]细分主题:Docker 容器化技术与镜像安全管理:核心链路的逐步实现与关键代码取舍面对一个积累了五六年历史包袱的单体架构应用(包含 Web 接口、后台…

2026/9/24 12:49:17 阅读更多 →