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.

[参考译文] 编译器/TMS320F28379S:闪存中是否有一个自动方法来存储一个字符串常量、这样在每个字中存储两个字符?

Guru**** 2535750 points


请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/tools/code-composer-studio-group/ccs/f/code-composer-studio-forum/746357/compiler-tms320f28379s-is-there-an-automatic-way-to-have-a-string-constant-stored-in-flash-such-that-two-characters-are-stored-in-each-word

器件型号:TMS320F28379S

工具/软件:TI C/C++编译器

大家好、

我正在尝试弄清楚如何以最小的开销将字符串常量存储到闪存中(是的、闪存是受限的资源)。 我知道我可以通过手动"构建"一词数组来蛮力破解它、但这在我的案例中不起作用。 字符串常量在编译时作为宏定义传入、从而有效地提供以下情况:

const unsigned int Table[16]= macro_suppled_name;

其中 macro_fused_name 是在 CCS 工程中指定为命令行-D 选项的32字节长字符串常量。

我知道 TI 将一个字节重新定义为16位、因此我怀疑现在有办法让编译器将数组的每个字符存储为8位。 请告诉我有一种方法。

此致、

S

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    遗憾的是、没有直接的解决方案。  我不知道 TI 发布的任何解决方案。  以下是未经任何人测试的粗略建议、供您考虑。

    使用指令.pstring 在手工编码的汇编中创建字符串。  使用构建选项 --asm_define 从命令行传递字符串。  在 C2000汇编工具手册中阅读这两者。  

    在 C 代码中、使用__byte 内在函数对这些打包的字符串进行操作。  阅读文章 《使用 C28x CPU 进行字节访问》、了解相关内容。  我建议您用 C 语言编写两个例程。 一个例程将字符串解压到16位宽字符串中。  然后、您可以使用 strcpy、strcat 等常用字符串函数对它们执行正常的字符串操作。  另一个将字符串打包回8位宽表示形式。

    谢谢、此致、

    乔治