OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 3713|回复: 1

Keil map文件数据地址与内存大小不对应问题

[复制链接]

17

主题

50

帖子

0

精华

初级会员

Rank: 2

积分
167
金钱
167
注册时间
2020-7-16
在线时间
34 小时
发表于 2020-11-3 16:07:33 | 显示全部楼层 |阅读模式
1金钱
F407第六扇区存储系统参数,代码在执行过程中莫名将第六扇区内容没有规律的改掉,有的数据在有的不在,怀疑是数组越界的问题,分析MAP文件发现该问题如图,不知道是不是根因,为什么会存在地址下一个地址减去上一个地址,算出来的大小与其大小不相等。图中是 100 24 12 ,算出来时 64 28 16。这个正常吗? 用Keil编译
企业微信截图_16043904518073.png

最佳答案

查看完整内容[请看2#楼]

问了一个高手,指点迷津,百度搜索“字节对齐” 当数据类型为结构体时,编译器可能需要在结构体字段的分配中插入间隙,以保证每个结构元素都满足它的对齐要求。第一个数据变量的起始地址就是数据结构的起始地址。结构体的成员变量要对齐排放(对于非对齐成员需要在其前面填充一些字节,保证其在对齐位置上),结构体本身也要根据自身的有效对齐值圆整(就是结构体总长度需要是结构体有效对齐值的整数倍),此时可能需要在结构末尾填 ...
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

17

主题

50

帖子

0

精华

初级会员

Rank: 2

积分
167
金钱
167
注册时间
2020-7-16
在线时间
34 小时
 楼主| 发表于 2020-11-3 16:07:34 | 显示全部楼层
问了一个高手,指点迷津,百度搜索“字节对齐”
当数据类型为结构体时,编译器可能需要在结构体字段的分配中插入间隙,以保证每个结构元素都满足它的对齐要求。第一个数据变量的起始地址就是数据结构的起始地址。结构体的成员变量要对齐排放(对于非对齐成员需要在其前面填充一些字节,保证其在对齐位置上),结构体本身也要根据自身的有效对齐值圆整(就是结构体总长度需要是结构体有效对齐值的整数倍),此时可能需要在结构末尾填充一些空间,以满足结构体整体的对齐—-向结构体元素中最大的元素对齐。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-4-27 13:26

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表