[经验分享] 单片机启动&库函数

[复制链接]
3349|20
belindagraham 发表于 2025-8-16 21:09 | 显示全部楼层
初始化堆栈指针,指向预先定义好的堆栈区域末尾。
mmbs 发表于 2025-8-18 20:14 | 显示全部楼层
程序开始运行,首先初始化堆栈指针。
初始化变量初始值为0的全局变量和静态变量。
初始化变量初始值为非0的变量,将存储在ROM的初始值复制到相应的RAM中。
可选的应用初始化。
最后调用main函数。
biechedan 发表于 2025-8-19 14:06 | 显示全部楼层
所有需要初始化的变量都被正确初始化,避免未定义行为。
saservice 发表于 2025-8-19 14:36 | 显示全部楼层
启动代码需要将所有全局变量和静态变量的初始值设置为0。这些变量在链接时会被分配到.bss段,启动代码会将这部分内存清零。
uptown 发表于 2025-8-19 17:15 | 显示全部楼层
在main函数调用之前,启动代码需要完成对全局变量和静态变量的初始化。这包括将所有未初始化的全局变量和静态变量设置为0,以及将已初始化的变量从ROM复制到RAM中。
sdlls 发表于 2025-8-20 08:02 | 显示全部楼层
初始化和非初始化的变量都存放在内存区(RAM):
.data 段:包含已初始化的全局变量和静态变量。
.bss 段:包含未初始化的全局变量和静态变量。
全局const被存放在代码区(Flash/ROM):
.rodata 段:包含只读数据,如常量字符串和常量数组。
static存放在内存区(RAM):
.bss 段:未初始化的静态变量。
.data 段:已初始化的静态变量。
对于数量少的局部变量一般是寄存器操作:
局部变量通常存储在寄存器中,以提高访问速度。
对于数据量大的局部变量则采用堆栈操作:
大量的局部变量会分配在堆栈中,通过堆栈指针进行管理。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 在线客服 返回列表 返回顶部
0