您好!
我将使用 CCS10和编译器版本20..2.5.LTS 更新一些较旧的代码。 它会生成一条警告、提示以下内容:
警告:符号," "、引用于" .obj"、假设数据被阻止、但正在访问" .obj"。 可能会导致运行时故障。
阻塞数据与非阻塞数据的含义是什么?
谢谢、
ED
This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
您好!
我将使用 CCS10和编译器版本20..2.5.LTS 更新一些较旧的代码。 它会生成一条警告、提示以下内容:
警告:符号," "、引用于" .obj"、假设数据被阻止、但正在访问" .obj"。 可能会导致运行时故障。
阻塞数据与非阻塞数据的含义是什么?
谢谢、
ED
只要存在与...类似的汇编代码(可能由编译器生成),就会发生这种情况。
MOV AL,@$BLOCKED(_symbol)
(笑声) 与该符号关联的存储器的定义不会被阻止。 通常、该符号在 CLA 代码中定义。 但它也可以在手工编码的汇编语言中定义。
[引用 userid="366241" URL"~/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1033133/tms320f28379d-blocked-data-vs-non-blocked-data-warning "]但正在访问" .obj[/quot]生成 FileName2.obj 的源代码是否是手动编码的汇编文件?
谢谢、此致、
乔治
尊敬的乔治:
Filename1是用 CPP 编写的、而 Filename2是用汇编语言编写的、其中相关变量的声明如下:
my_struct .cstruct
VAR1.ulong
VAR2.ulong
my_struct_len .endstruct
<_variable_name>.tag my_struct
<_variable_name>.usect "MyTag"、my_struct_len
在 cmd 文件中、MyTag 位于联合体中的 SECTIONS 区域中、如下所示:
存储器
{
第1页:
MySpace:origin = ,lenight =
}
部分
{
联合:>MySpace,页=1
{
MyTag
AnotherTag
}
}
谢谢、
ED
因为这条线...
[引用 userid="366241" URL"~/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1033133/tms320f28379d-blocked-data-vs-non-blocked-data-warning/3821153 #3821153"] <_variable_name>.usect "myTag"、my_struct_len[/quot](笑声) 错误诊断正确。 该变量不会被阻止、但编译器生成的代码会假设它被阻止。
修复方法有两种。
若要阻止数据、请在.usect 指令的末尾添加、1。
<_variable_name> .usect "MyTag", MY_STRUCT_len, 1
有关更多详细信息、 请在 《C28x 汇编工具手册》中搜索 标题 为"未初始化部分"的子章节。
要告诉编译器数据未被阻止、请使用变量属性 noblocked。 下面是一个示例...
__attribute__((noblocked)) extern struct sss global_struct;
有关更多详细信息、 请在 C28x 编译器手册中搜索 标题为 数据页(DP)指针负载优化的子章节。
谢谢、此致、
乔治