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.
工具与软件:
尊敬的 TI 支持部门:
我使用 TDA4VM 处理以太网应用/引导加载程序、
我们在内存段中遇到了 Eth 变量的128字节对齐/分配问题
链接器部分
Eth_Mem 4.30def:
无法正常工作用例:
段变量:
仅分配和对齐了第一个变量
工作用例:
部分变量
所有变量已分配且对齐128 (0x80)、如果每个变量使用单独的段 Start/Stop (启动/停止)。
编译器: TI_RT2.1.3 Arm_Clang_Compiler_
编译器选项:
问)它是编译器还是编译器选项存在问题?
此致、
Hari
您好!
]如果为每个变量使用了单独的节"开始/停止"、则分配并对齐了所有变量128 (0x80)。
可以、您必须为每个变量使用1287字节对齐宏、因为它使用"__attribute__"而不是"#pragma SECTION"。
q)编译器或编译器选项是否有问题?
这不是问题、对每个变量的选项进行使用。
此致、
Sudheer
尊敬的 Sudheer:
是的、我们使用的是 __属性___ 选项仅如下"_attribute__((aligned (128)、section ("ETH_DATA_NO_INIT_UNSPECIFTE_SECTION_128"))。"
您能告诉我、有什么适用的选项吗 "每个变量"
此致、
Hari
您好!
[报价 userid="592034" url="~/support/processors-group/processors/f/processors-forum/1442886/tda4vm-__attribute__-not-applied-to-all-variables-in-a-memory-section/5535022 #5535022"]是的、我们使用的是 __属性___ 选项仅如下"_attribute__((aligned (128)、section ("ETH_DATA_NO_INIT_UNSPECIFTE_SECTION_128"))。"
您能告诉我、有什么适用的选项吗 "每个变量"
[报价]我的意思是、由于__ attribute ____用于段映射、因此不能将多个变量一起使用。
如果是#pragma、则可以从头应用到尾 、即同时应用多个变量。
此致、
Sudheer
尊敬的 Sudheer:
我尝试了不同的#pragma 选项、没有什么适合我的。
在 TI MCAL 演示中、以下方法正在使用
我尝试了同样的选项,这在我的情况下是不起作用的。
根据 MCAL 演示链接器调整了我们的链接器脚本。
MCAL.c 和,h 文件在我们的应用程序和附加文件中是相同的 Eth_Cfg。
e2e.ti.com/.../TDA4_5F00_TI.zip
您能告诉我、我需要注意的区别是什么。
此致、
Hari
您好!
在 TI MCAL 演示中、以下方法使用
__attribute__应该起作用、如上所述、它假定要为每个变量使用。
我尝试了同样的选项、但该选项在我的情况下无效。
我可以看到、您曾提到、如果您在第一个注释中为每个变量添加、它是有效的。 这与您的第一个评论是矛盾的。
此外、您需要128字节对齐、这不是标准数据类型。
请按照您在工作场景的第一条评论中提到的方式使用。
此致、
Sudheer
尊敬的 Sudheer:
是的、__ attribute __仅在每个变量具有如下所示的 START 和 STOP 段时有效。
上面是 TI MCAL Eth 驱动程序使用 EB Tresos 生成的修改代码。
实际生成的代码如下所示、其中一个 START 和 STOP 部分用于多个变量、如下所示
并且不适用于__ attribute __案例、且仅适用于第一个变量。
*修改对 MCAL 驱动程序生成的/静态代码无效。
不确定上述 TI MCAL Eth 示例是如何处理的。
*为了测试目的,我直接使用了 MCAL 示例中的 Eth_Mem 文件,在我的案例中不起作用。
此致、
Hari
您好!
抱歉、我这边有测试。
您无需为每个变量设置启动和停止。
我已经测试了所有变量按顺序排列。 (默认 TI SDK)
将段映射到链接器文件中不同的地址之后。
仅供参考、已在链接器文件中进行更改。
此致、
Sudheer
您好!
您能否像在 TI MCAL 中一样使用 MemMap.h 进行一次交付和检查?
这可能不是编译器选项的问题。
您是否还可以通过从编译器选项中删除以下内容进行检查?
-- unused_section_elimination=off
此致、
Sudheer
您好!
已尝试这两个要点、仍然是相同的问题。
是否可以有一个短的调试会话?
此致、
Hari
您好!
在构建 eth_app 时、您是否面临任何链接器问题?
它是分配有__attribute__的宏(ETH_VAR_NO_INIT_128)。
如果在变量初始化时使用__attribute__定义宏、则宏将按属性置于 section 中。
请在未放置在已定义段中的变量之前检查宏的值。
此致、
Sudheer
您好!
构建 TI eth_app 时没有问题、它会按预期运行。
同一个宏不起作用、在我们的情况下、无法确定我在哪里做错了。
是否有确定问题的可行方法?
此致、
Hari
您好!
[报价 userid="592034" url="~/support/processors-group/processors/f/processors-forum/1442886/tda4vm-__attribute__-not-applied-to-all-variables-in-a-memory-section/5548345 #5548345"]同一个宏不起作用、在我们的情况下、无法确定我在哪里做错了。
是否有确定问题的可行方法?
[报价]如上所述、在 ETH_STOP_SEC_VAR 之后、"ETH_VAR_NO_INIT_128"宏的值在您的案例中并不存在、即宏可能未定义。
此致、
Sudheer
尊敬的 Sudheer:
在编译中有一个观察结果、
测试目的我在 如下所示的 Eth_Cfg .c 文件中修改了一个变量并进行了编译。
var (uint64、ETH_VAR_NO_INIT_128) VAR_Ctrl_ Eth_Ring 0_VR0[16U] Cq_Egress_;
var (uint64、ETH_var) Var_Ctrl_0_Var0[16U] Eth_Ring Cq_Egress_;
编译 eth_test_app 示例时出错。
同样、我也使用应用进行过尝试、编译时也没有出现任何编译错误。
在的预处理期间似乎是这样 var (uint64、 ETH_VAR_NO_INIT_128) VAR_Ctrl_ Eth_Ring 0_VR0[16U] Cq_Egress_;
var (uint64、 ETH_VAR_NO_INIT_128) 不考虑在内。
不知道我在这里缺少什么。
此致、
Hari
您好!
[报价 userid="592034" url="~/support/processors-group/processors/f/processors-forum/1442886/tda4vm-__attribute__-not-applied-to-all-variables-in-a-memory-section/5556509 #5556509"]同样、我也使用应用进行过尝试、编译时也没有出现任何编译错误。
在的预处理期间似乎是这样 var (uint64、 ETH_VAR_NO_INIT_128) VAR_Ctrl_ Eth_Ring 0_VR0[16U] Cq_Egress_;
var (uint64、 ETH_VAR_NO_INIT_128) 不考虑在内。
[报价]同样,我也在上面解释,通过评估的时间 var (uint64、 ETH_VAR_NO_INIT_128) VAR_Ctrl_ Eth_Ring 0_VR0[16U] Cq_Egress_;、 可能是" ETH_VAR_INIT_128" 未定义。
请检查的侧边代码 ETH_VAR_INIT_128 mem_map.h 文件中下载。
此致、
Sudheer
您好!
是否可以有一个短的调试会话?
此致、
Hari
您好!
[报价 userid="592034" url="~/support/processors-group/processors/f/processors-forum/1442886/tda4vm-__attribute__-not-applied-to-all-variables-in-a-memory-section/5558628 #5558628"]您可以打印的值 ETH_VAR_INIT_128 在起始和结束宏中、检查值是否为__attribute__?
请参考下面的来在编译时使用#pragma message".
"https://stackoverflow.com/questions/1562074/how-do-i-show-the-value-of-a-define-at-compile-time 来检查宏的值
此致、
Sudheer
尊敬的 Sudheer:
感谢您的支持!
我们通过不同于 TI mcal 示例的方式解决了问题。
您可以关闭此票证。
在 TI Clang 编译器中观察到一个问题、它是否与编译器的支持渠道相同?
此致、
Hari Krishna Kaki
您好!
[报价 userid="592034" url="~/support/processors-group/processors/f/processors-forum/1442886/tda4vm-__attribute__-not-applied-to-all-variables-in-a-memory-section/5573948 #5573948"]感谢您的支持!
我们通过不同于 TI mcal 示例的方式解决了问题。
您可以关闭此票证。
[报价]感谢您的更新。
在 TI clang 编译器中发现问题、编译器是否使用同一个支持通道?
否编译器是不同的论坛。 请创建一个新票证、其中包含您遇到的 TI Clang 编译器问题/预期的特性的信息。
此致、
Sudheer