STM32单片机程序的存储和执行
我们非常重视原创文章,为尊重知识产权并避免潜在的版权问题,我们在此提供文章的摘要供您初步了解。如果您想要查阅更为详尽的内容,访问作者的公众号页面获取完整文章。
摘要
【一分钟聊嵌入式】系列旨在通过短时间内提供嵌入式相关主题的精炼讨论,覆盖技术、职场、学习方法等方面。读者可通过公众号后台留言参与话题讨论。
本期话题
本文探讨了ARM单片机程序的存储和执行方式,以及与PC及ARM-A + Linux平台的不同。PC程序将可执行文件从磁盘加载到内存执行,而单片机程序则储存在ROM中,可直接执行不需加载到RAM。
存储空间
以stm32单片机为例,其存储空间包括片内Flash和片内RAM。Flash可以在系统掉电后保持数据,而RAM中数据会在掉电后丢失。
程序文件结构
MDK编译后的程序文件由代码段(Code)、只读数据段(RO-data)、读写数据段(RW-data)和0数据段(ZI-data)组成。.map文件提供了这些段的空间大小和地址信息,最终的文件大小由Code、RO Data和RW DATA三部分总和构成,ZI Data不占文件空间。
执行过程
当MCU启动时,stm32的启动文件将RW段变量复制到RAM中,并初始化ZI Data所在的RAM空间。由于XIP技术,Code和RO Data不需加载到RAM即可执行。程序的静态状态存储在非易失存储器中,如内部FLASH,而动态状态时修改的数据存放在RAM中,掉电后会丢失。
程序的存储与运行状态
静态状态下,RO和RW段保存在ROM中。运行状态时,内核从ROM中读取代码,加载代码将RW段数据复制到RAM,并在RAM中初始化ZI段数据,之后正式执行主体程序。
结语
文章总结了STM32单片机程序的存储和执行机制,帮助读者理解其与其他平台的差异,促进更有效的嵌入式开发。
感谢阅读,期待读者的互动和成长。
想要了解更多内容?