专栏中心

EEPW首页 > 专栏 > MCU和SoC内存使用物理地址还是虚拟地址?

MCU和SoC内存使用物理地址还是虚拟地址?

发布人:美男子玩编程 时间:2024-10-14 来源:工程师 发布文章

在嵌入式系统中,微控制器 (MCU) 和系统级芯片 (SoC) 的内存管理方式可能有所不同,具体取决于它们的设计和应用场景。


1


微控制器 (MCU)


大多数微控制器 (MCU) 使用物理地址进行内存访问。MCU 通常是设计为简单、资源有限的嵌入式设备,目标是低功耗、低成本以及实时操作。


这些设备一般没有复杂的内存管理单元 (MMU) 来处理虚拟地址到物理地址的映射。因此,程序代码和数据是直接通过物理地址访问的。


以常见的 STM32 系列微控制器为例:


  • Flash 存储器:通常从地址 0x08000000 开始。这个地址是物理地址,程序代码通常存储在这里。

  • SRAM:通常从地址 0x20000000 开始。这个地址也是物理地址,用于数据存储和堆栈操作。


在编程时,当开发者使用指针或访问某个变量时,实际操作的是物理地址。例如:


#define LED_PIN (*(volatile uint32_t*)0x48000814)  // 指定 GPIO 端口的物理地址 int main(void) {    LED_PIN = 0x01;  // 设置引脚电平为高    while (1);}


在这个例子中,0x48000814 是直接引用的物理地址,用于控制 MCU 上的 GPIO 引脚。


2


系统级芯片 (SoC)


与 MCU 不同,系统级芯片 (SoC) 通常集成了更复杂的处理器内核(例如 ARM Cortex-A 系列),并且可能运行如 Linux 这样的操作系统。


这些 SoC 通常具有内存管理单元 (MMU),能够将虚拟地址映射到物理地址。因此,虚拟地址是应用程序通常使用的地址空间。


以 Raspberry Pi 这类基于 ARM Cortex-A 系列处理器的 SoC 为例:


  • 内核态地址空间:在操作系统内核中,内核会管理物理内存,内核代码通常可以直接访问物理地址,但通常仍使用虚拟地址进行管理。

  • 用户态地址空间:应用程序在用户态下运行,所有内存访问都是通过虚拟地址进行的。操作系统通过 MMU 将这些虚拟地址映射到实际的物理内存。


C 语言示例如下:


#include <stdio.h>#include <stdlib.h> int main() {    int *ptr = (int *)malloc(sizeof(int));    if (ptr == NULL) {        fprintf(stderr, "内存分配失败!n");        return 1;    }     *ptr = 123;    printf("虚拟地址: %p, 值: %dn", (void*)ptr, *ptr);     free(ptr);    return 0;}


在这个例子中,malloc 函数返回的指针 ptr 是一个虚拟地址。操作系统会通过 MMU 将其映射到物理内存。应用程序无需了解这个过程,操作系统自动管理虚拟地址和物理地址之间的映射关系。


  • MCU 通常使用物理地址进行内存访问,因其设计简单且资源受限,不具备复杂的内存管理单元 (MMU)。

  • SoC,特别是那些运行复杂操作系统的 SoC,如 ARM Cortex-A 系列,通常使用虚拟地址进行内存管理,依赖 MMU 将虚拟地址映射到物理地址。


理解这两者的差异对于开发嵌入式系统的程序时至关重要,因为内存管理的复杂性和方式直接影响到程序的设计和调试方式。

*博客内容为网友个人发布,仅代表博主个人观点,如有侵权请联系工作人员删除。

关键词: MCU SoC

相关推荐

飞思卡尔杯-第六届设计应用大奖赛 三等奖获奖论文

飞思卡尔杯-第六届设计应用大奖赛 一等奖获奖论文

电子科技大学--嵌入式系统应用开发技术39

视频 2009-05-07

CC2431 - 低功耗射频SOC

视频 2009-03-24

边缘 AI 加速的 Arm® Cortex®‑M0+ MCU 如何为电子产品注入更强智能

嵌入式系统 2026-03-25

贸泽电子开售:面向工业、AI、医疗、数据中心等领域的Altera Agilex 5 FPGA与SoC

芯驰科技E3650:为理想星环OS保驾护航

ZF与SiliconAuto推出用于自动驾驶的实时I/O芯片

飞思卡尔杯-第六届设计应用大奖赛 二等奖获奖论文

Nordic扩展nRF54L系列,推出入门级低功耗蓝牙SoC

有源晶振、无源晶振与MCU的时钟关联

TI将边缘AI微控制器更深入地融入嵌入式设计

意法半导体全新STM32C5系列,重新定义入门级微控制器性能与价值,赋能万千智能设备

NEC MCU 78F0513D开发板使用教程

视频 2009-04-07

Badge USB OCD 与 78F0513D 使用演示视频

视频 2009-05-20

飞思卡尔杯-第六届设计应用大奖赛 优秀奖获奖论文1

电子科技大学--嵌入式系统应用开发技术38

视频 2009-05-07

单片机模糊控制系统设计与应用实例

售价仅1.7元!STC高性价比车规级MCU重塑汽车电子供应链格局

在工业自动化和智能家用电器设计中实现支持边缘 AI 的电机控制

更多 培训课堂
更多 焦点
更多 视频

技术专区