我一直试图了解内存是如何工作的,在内存方面,特别是在嵌入式系统中,应用程序的执行过程中会发生什么。C/C++中的更多上下文
发布于 2021-08-22 10:13:15
当我们用C语言为嵌入式系统编写代码时,谁会在嵌入式系统中使用嵌入式系统堆栈、内存分配等等来完成这些工作呢?在MCU中没有操作系统为我们做内存管理,所以在MCU中的函数调用过程中,谁来管理内存分配?
程序员在C中的接口是main.c文件:
int main (){
// User code here
return 0;
}但从技术上讲,您的IDE (Keil uVision或Composer等)除了它的RTE (运行时环境)组件,在这个main.c文件之前和之后,在构建(编译)特定目标硬件(如Tiva C TM4C123GH6PM或STM32F400等)的源代码时,放置一个初始化和去初始化文件(通常称为MCU启动代码)的普通代码。
这些启动/初始化文件中的代码初始化您的堆栈和堆内存,您的mcu的时钟门控,设置不同的外围设备(gpio、串行、i2c等)、中断向量表、PC (程序计数器)、SP (堆栈指针)等。
您可以为目标MCU打开简单程序的调试会话,同时将其配置为“在第一次组装指令/启动时停止”,然后执行步进操作以遍历所有代码,直到到达main.c文件为止。
这些发现太棒了。
https://stackoverflow.com/questions/68879745
复制相似问题