网站开发的重难点,dw软件破解版,迅雷黄冈网站推广软件,中小企业网站建设与管理课件百度云Q#xff1a;如何将一个变量、某个源文件的函数在编译阶段就存储在用户指定的区域#xff1f;
KEIL环境#xff1a;.map后缀文件、.sct后缀文件
IAR环境#xff1a;.map后缀文件、.icf后缀文件 【map文件】
对固件里面的变量、函数、常量等元素的存储空间进行分配的说明…Q如何将一个变量、某个源文件的函数在编译阶段就存储在用户指定的区域
KEIL环境.map后缀文件、.sct后缀文件
IAR环境.map后缀文件、.icf后缀文件 【map文件】
对固件里面的变量、函数、常量等元素的存储空间进行分配的说明文件 下面看几个变量的不同状态在map的存储说明
全局的 》可以看到全局变量是否占用数据空间取决于后续是否使用这个变量。 局部的 》可以看到对于局部变量无论是否加static修饰仅仅声明未被使用的变量不会占用数据空间
》被static修饰的局部变量且后续被使用才会占用空间未被static修饰的局部变量就算后续被使用也不会占用数据空间
PSkeil对于未初始化的数组元素个数9时算RW-data元素个数大于8的算ZI-data 程序最终生成的固件空间大小取决于code、RO(只读数据)、RW(可读写数据)
一个完整的程序由代码和数据组成
1、只定义未使用的全局或局部变量不占用存储空间。
2、被static修饰为全生命周期的局部变量也要后续使用才会占用空间。
3、未进行初始化的数组变量被算做ZI-Data部分 【sct/icf文件】
设置RAM、FALSH存储空间的起始地址和偏移量
将函数或变量添加到用户自定义区域(配合__attribute__ 编译特性使用)
》Keil界面默认分配状态 》IAR界面 【__attribute__ 】
__attribute__((__packed__))
__attribute__((at(addr))) 》可以看到在指定的地址存储了用户需要提前存储的数据加了packed关键字后存储空间明显缩小对于结构体默认是以4字节对齐的方式调整
__attribute__((section(func_name)))
__attribute__((aligned(8))) 对齐方式
__attribute__((packed, aligned(8)))