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 提供的数字控制示例中、代码使用数据记录器功能将控制器工作和系数存储到数组中、如下所示:
#define DATA_LENGTH 1601
//输入数据
#pragma DATA_SECTION (e_array、"PDataLogSection")
float e_array[data_length];
FDLOG eBuf = FDLOG_DEFAULTS;
//完整的控制器结果
#pragma DATA_SECTION (U1_array、"QDataLogSection")
float U1_array[data_length];
FDLOG u1Buf = FDLOG_DEFAULTS;
//预计算的控制器结果
#pragma DATA_SECTION (U2_array、"RDataLogSection")
float U2_array[data_length];
FDLOG u2Buf = FDLOG_DEFAULTS;
//控制器差异数据
#pragma DATA_SECTION (d_array、"SDataLogSection")
float d_array[data_length];
FDLOG dBuf = FDLOG_DEFAULTS;
如何知道特定处理器上的不同部分以及它们在每个处理器上的变化?
我们如何知道这些段是否已被用于存储代码的其他部分、以及我们如何知道将这些段设置为阵列存储是安全的?
最棒的
Joel
此外、必须更改链接器文件、以便将这些段分配给数组。
/*数据缓冲区*/
PDataLogSection:>RAML5,page = 1 align(2)
QDataLogSection:>RAML6,page = 1 align(2)
DataLogSection:>RAML7,page = 1 align(2)
DataLogSection:>RAML8,page = 1 align(2)
如果我为 F2837xD 处理器使用默认链接器文件、那么将这些行粘贴到链接器命令文件段区域中、将存储器专用于它们是简单吗?还是更复杂?
我假设编译器会告诉我是否在链接器命令文件中有足够的空间、或者存储器是否已经包含代码/信息?
您好、Joel、
您可以验证数组在构建过程链接期间生成的映射文件中的存储器位置。 默认情况下、工具链将在输出文件夹中生成一个名为${ProjName}.map 的映射文件。 映射文件输出可配置如下。
希望这对您有所帮助。
韩文
您好、Han、
我可以将数据缓冲区的其他代码行插入原始 F2837xD 链接器文件中、还是需要创建另一个代码行?
也许我的问题有点困惑-如何知道哪些部分的内存是空闲的、以便我可以将它们分配给数组?
Joel、
你是对的。 如果您在链接器命令文件中指定的段对于数据不够大、链接器将报告错误、并且不会成功生成映像。 如果指定的段未在链接器命令文件中定义、链接器将发出警告并将数据放入默认段。 谢谢。
韩文