您好!
我正在使用 Matlab 2016b、其中包含 用于 TI C2000处理器的嵌入式代码支持包 v16.2.6。
我们使用此环境将 Simulink 模型代码构建到自动生成的 c 代码中、然后再构建到我们使用的.map .A2L .out 和.hex 文件中。
该代码由 TI 编译器为 CCS5工具链编译。
我的问题是关于映射文件中我的一个静态变量的大小变化。
在附加 的 SW_11340_1_withBuffer.h 中、您可以找到结构 D_work _sw_11340_1、该结构在375行中具有 UINT32 Buffer[300]。 该缓冲区已从工程中删除、如 SW_11340_1_noBuffer.h 中所示
但是、映 射文件显示的变量 SW_11340_1_DWork (此结构的唯一实例)在 SW_11340_1_withBuffer.map (第1019行)中的大小为0x231、在 SW_11340_1_nobuffer.map (第1016行)中的大小为0x21e。
如果我正确理解映射文件、则此大小差异仅为19 uint16空间。
为什么从结构(缓冲区、索引和缓冲区和求和)中删除302 Uint32不会如此更改映射文件中的结构大小? 如果 映射文件中 SW_11340_1_DWork 的空间不包含缓冲区元素、则缓冲区元素保留在何处、如何确定?
请注意、这种缓冲区删除(以及缓冲区周围的简单函数)应该是这两个映射文件之间的唯一区别捕获。
感谢您在理解映射文件的工作原理方面提供的任何帮助、
Neal
e2e.ti.com/.../0143.SW_5F00_11340_5F00_1_5F00_withBuffer.h
e2e.ti.com/.../5658.SW_5F00_11340_5F00_1_5F00_noBuffer.h