1. keil编译介绍
当使用keil进行单片机的开发时,运行一段程序后,在output输出框会看到如下图的结果。

图1 keil 的output框
其中,Compiler编译器,使用的版本是 V5.06,程序会先经过编译、后链接linking生成可执行的代码,如果要下载单片机的Flash上,还需要转换成二进制(bin)或者十六进制(hex)的文件。具体过程如下:

图2 keil的编译过程
值得注意的是,经过编译后,并不会给变量赋地址生(.o文件),只有经过链接器链接后变量才有地址,链接的作用可以看做是便于管理。经链接后代码分为Code、RO-data、RW-data、ZI-data四部分。接下来是老生常谈的问题,每个区都是干嘛的呢?
CODE:代码区,指程序中代码即函数体的大小,注意程序中未使用的函数也会算在CODE中,也即会占用FLASH空间,因此不用的函数最好删除掉,以免占用过多FLASH空间;
RO-DATA:RO就是只读的意思,程序

本文详细介绍了Keil编译过程,包括Compiler、Linker阶段,以及编译后代码在Flash和SRAM中的分布。CODE区存储函数体,RO-DATA为只读变量,RW-DATA为已初始化的可读写变量,ZI-DATA用于未初始化的变量和栈空间。此外,文章解释了Flash和SRAM的区别,以及在单片机中的应用。
最低0.47元/天 解锁文章

3651

被折叠的 条评论
为什么被折叠?



