"); //-->
在嵌入式系统中,微控制器 (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 将虚拟地址映射到物理地址。
理解这两者的差异对于开发嵌入式系统的程序时至关重要,因为内存管理的复杂性和方式直接影响到程序的设计和调试方式。
专栏文章内容及配图由作者撰写发布,仅供工程师学习之用,如有侵权或者其他违规问题,请联系本站处理。 联系我们
相关推荐
安谋科技Arm China与国民技术签署Arm Total Access授权许可协议,加速AI时代MCU灵活创新与高效落地
飞思卡尔杯-第六届设计应用大奖赛 三等奖获奖论文
电子科技大学--嵌入式系统应用开发技术38
Badge USB OCD 与 78F0513D 使用演示视频
cMMB移动电视芯片SC6600V在手机电视上的应用
飞思卡尔杯-第六届设计应用大奖赛 二等奖获奖论文
ROHM 可配置电源方案:适配 ADAS 与车载计算平台
CC2431 - 低功耗射频SOC
请教大虾如何用select来实现对两个socket的操作
GD32 MCU开发者社区正式上线,连接技术创新的每一种可能
[讨论]vxWorks与windows进行socket通信
单片机模糊控制系统设计与应用实例
电子科技大学--嵌入式系统应用开发技术39
光电鼠标原理与电路图
USBHC869设计的MCU总线USB主控制电路图
内置TinyEngine NPU:TI全新MCU助力边缘AI落地
飞思卡尔杯-第六届设计应用大奖赛 一等奖获奖论文
推荐便宜实用MCU+CPLD/FPGA学习开发板
飞思卡尔杯-第六届设计应用大奖赛 优秀奖获奖论文1
2nm芯片成本暴涨20%:最贵的安卓芯,最难的旗舰年
USB,MCU,HT82K96 一款廉价带USB的MCU-HT82K96,但不会用
英飞凌聚焦人形机器人:传感、电机控制和电源管理成为切入口
AEIF 2026 本周举行,软件定义汽车把车规半导体带到更多环节
NEC MCU 78F0513D开发板使用教程
SoC集成如何影响SMT贴片良率
stc,mcu 请问stc-mcu
电子元器件知识大全:什么是MCU
1.6T/3.2T光模块量产核心:从主控MCU到电源TEC,世强1.6T/3.2T光模块核心器件方案全解析
MCU控制系统电路原理图
SoC 集成度如何影响 SMT 贴片良率