Part Number:TMS320F280039C
(1)如何查看代码段中空穴?
(2)如何减少代码段中空穴?
Ben Qin:
你好,能否详细描述一下?不太理解您说的空穴是什么。能否提供一下截图?
,
derik ?:
指的flash中没有被利用的,填充了0的区域。
,
BarbiQ -:
查看生成的map文件,里边的空洞区域都标有 –HOLE–
$fill000000088002000000060008800200000006--HOLE-- [fill = ffff]$fill00100008801a000000060008801a00000006--HOLE-- [fill = ffff]$fill002000088020000000200008802000000020--HOLE-- [fill = ffff]$fill003000089957000000010008995700000001--HOLE-- [fill = ffff]$fill0040000899f4000005fc000899f4000005fc--HOLE-- [fill = ffff]$fill005000089ff40000000400089ff400000004--HOLE-- [fill = ffff]
,
Ben Qin:
参考下下面这个文件,第3.11 Data Page (DP) Pointer Load Optimization章节:
TMS320C28x Optimizing C/C++ Compiler v22.6.0.LTS User's Guide (Rev. Y)
,
derik ?:
如图,圈出的两个flash段之间间隔了很大的一块空间。 而前面的param_cfg_bp_run_state 并没有占据很大的空间。 我不是很理解中间为什么有这么大的空洞,并且map文件没有显示这里是空洞。 实际上查看flash存储的数据,这中间的地址都被填充了数据0 。
,
Ben Qin:
您应该是碰到了数据阻塞情况:
(+) Data blocking in the C2000 MCU compiler explained – Tools Insider – Archives – TI E2E support forums
,
derik ?:
谢谢,但是看着数据阻塞是发生在数据段的分配上吧,也就是RAM空间的分配。
,
Ben Qin:
derik ? said:而前面的param_cfg_bp_run_state 并没有占据很大的空间
这个是你自己定义的吗?以及下面的PROTOCOL_EF02_PLUS_obj?
能否将您的CMD文件发上来?