View -> CCS 编译器之后的内存分配,以查看编译后的数据存储。 发现当定义的数组放置在.data 段中时、
它还将放置在.cinit 段中、该段将放置在闪存中。 问题是、定义数组将占用闪存空间、
由于程序没有剩余太多闪存、如果数组稍大、编译将不起作用。
只需定义一个数组、编译器为什么要将其存储在闪存中? the2e.ti.com/.../change-of-.cinit.docxere 是否可以在不将数组放入.cinit 的情况下定义数组?
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.
View -> CCS 编译器之后的内存分配,以查看编译后的数据存储。 发现当定义的数组放置在.data 段中时、
它还将放置在.cinit 段中、该段将放置在闪存中。 问题是、定义数组将占用闪存空间、
由于程序没有剩余太多闪存、如果数组稍大、编译将不起作用。
只需定义一个数组、编译器为什么要将其存储在闪存中? the2e.ti.com/.../change-of-.cinit.docxere 是否可以在不将数组放入.cinit 的情况下定义数组?
您好、Nick、
数组通常存储在 SRAM .data 段中。 根据您初始化和使用 testBuf 的方式、我假设编译器已确定阵列的值永远不会更改、因此将阵列存储为闪存中的常量。 您可以通过删除编译器优化(Project Properties -> CCS Build -> Arm Compiler -> Optimization)来进一步测试这一点、但我建议您通过从应用程序中为不断变化的变量分配不同的 testBuf 值来进一步测试。 由于数组现在将是真正的变量、编译器应将其存储在 SRAM 中。
此致、
Ryan