Qemu源码是如何 模拟 Mini2440 硬件资源分析(一)

本文分析了Qemu如何模拟Mini2440开发板的硬件资源,包括CPU、SDRAM、NAND Flash等。通过`register_machines`和`mini2440_init`等步骤,详细解释了Qemu模拟硬件的过程,如SD初始化、CPU设置、GPIO配置等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

为什么 Qemu 能够模拟Mini2440开发板?qemu用软件模拟 硬件资源。大家都知道uboot启动流程,那uboot 之前流程呢?也就是从上电开始到uboot 开始执行 _start 之前在做什么呢?

正常的Mini2440 硬件上电时候做了的事情:

2440 开发板启动流程简介 ( ① Nand Flash 拷贝 4 KB -> SRAM 垫脚石 | ② PC 指向 0 地址 即 SRAM 起始地址执行 | ③ 初始化内存 拷贝 后续指令到内存执行 )

2440 NandFlash 启动 :

  • 1.垫脚石 ( SRAM ) 简介 : 2440 Nand Flash 启动 , 需要依赖于 很重要的片内部件 -> SRAM , 这个部件 又叫 垫脚石 , 其 位于 ARM 地址空间 的 0 地址处 , 其容量大小是 4KB ;

  • 2.拷贝最前面 4KB : Nand Flash -> SRAM : 处理器上电之后 , 2440 会自动 从 Nand Flash 中拷贝 出 最前端 4 KB 的内容 , 复制进 SRAM 垫脚石 中 ;

  • 3.执行 拷贝的 SRAM 中的 4KB 指令 : PC 指针 指向 0 地址 , 即 指向 垫脚石 SRAM 中的第一条指令 , 然后开始执行 ;

  • 4.SRAM 大小 4KB 局限性 : 这里 注意 , 只能 拷贝 4KB 的指令 , 对于小的 bootloader 程序足够用 , 但对于 u-boot 这种重量级的程序 编译出来 有 100多KB , 显然 4KB 就不够用了 ;

  • 5.代码搬移策略 : 先拷贝 4KB 到 SRAM 中 , 执行这 4KB 指令 , 在这些指令中 , 先 把内存初始化好 , 然后 将后续指令从 Nand Flash 拷贝到内存中执行 ;

现在没有真实硬件,聪明的你,肯定会想到 那么qemu 就要用软件模拟相应的 ?模拟的就是以下东东!!

Qemu Mini2440 需要模拟的硬件资源

Mini2440硬件资源
CPU处理器:  Samsung S3C2440A,主频400MHz,最高533Mhz;
SDRAM内存: Mini2440外接两片32MB的SDRAM(型号EM63A16STS-5G),它们并在一起形成32位总线数据宽度,使用了nGCS6片选。物理起始地址为0x30000000。 SDRAM 时钟频率高达100MHz;
NAND FLASH存储: 在板256MB NAND FLASH(型号K9F2G08U0C), 掉电非易失;
NOR FLASH:在板2M NOR FLASH(型号S29AL016D70TF102),掉电非易失,已经安装BIOS;
标准配置为统宝3.5”真彩LCD,分别率240x320,带触摸屏;
接口和资源:
- 1个100M以太网RJ-45接口(采用DM9000网络芯片)

- 3个串行口

- 1个USB Host

- 1个USB Slave B型接口

- 1个SD卡存储接口

-1路立体声音频输出接口,一路麦克风接口

- 1个2.0mm间距10针JTAG接口

- 4 USER Leds

- 6 USER buttons(带引出座)

- 1个PWM控制蜂鸣器

- 1个可调电阻,用于AD模数转换测试

- 1个I2C总线AT24C08芯片,用于I2C总线测试

- 1个2.0 mm间距20pin 摄像头接口

- 板载实时时钟电池

- 电源接口(5V),带电源开关和指示灯

扩展接口 :
1个34 pin 2.0mmGPIO接口

1个40 pin 2.0mm 系统总线接口

1.register_machines

./vl.c:4874:    register_machines();

./target-arm/machine.c:26:    qemu_register_machine(&mini2440_machine);

void register_machines(void)
{
    qemu_register_machine(&integratorcp_machine);
    qemu_register_machine(&versatilepb_machine);
    qemu_register_machine(&versatileab_machine);
    qemu_register_machine(&realview_machine);
    qemu_register_machine(&akitapda_machine);
    qemu_register_machine(&spitzpda_machine);
    qemu_register_machine(&borzoipda_machine);
    qemu_register_machine(&terrierpda_machine);
    qemu_register_machine(&sx1_machine_v1);
    qemu_register_machine(&sx1_machine_v2);
    qemu_register_machine(&palmte_machine);
    qemu_register_machine(&n800_machine);
    qemu_register_machine(&n810_machine);
    qemu_register_machine(&lm3s811evb_machine);
    qemu_register_machine(&lm3s6965evb_machine);
    qemu_register_machine(&connex_machine);
    qemu_register_machine(&verdex_machine);
    qemu_register_machine(&mainstone2_machine);
    qemu_register_machine(&musicpal_machine);
    qemu_register_machine(&tosapda_
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值