Other Parts Discussed in Thread: AM2632
工具与软件:
您好!
我们使用的是 AM2632。
对于这两个 PRU0内核、我们都用 C 代码编写了自己的小型固件、使用一些"全局"变量、 这些固件文件被转换为两个 include 文件、我们将其包含在 R5内核项目中。
在生成的 h 文件中、我会得到两个数组、一个数组包含指令、另一个数组包含数据。
在调试模式下使用 sdk-driver-lib 加载和运行 PRU 固件函数、而不会出现任何问题。
如果我在 Relase 模式下编译 R5固件、当我想将数据 RAM 阵列从 PRU include 文件加载到 PRU 数据存储器时、总是会得到一个 adat 处理程序 interrubot。
我尝试调试这种行为、并发现 SDK-Lib (在发布版本中)使用优化器。 我在没有优化器的情况下重新编译了 SDK、然后会开始加载数据数组。
但我不想重新构建 SDK 驱动程序库。
所以我试图理解这个问题并做了进一步的调查。
我发现、在我的 release-configuration 中、生成的十六进制文件中的数据数组在 R5存储器中不是4字节对齐的。 如果没有数据数组的4字节对齐、SDK 驱动程序库(release-lib)无法将数据加载到 PRU_DATA_RAM;。
我将"align 属性"添加到了头文件中的数据数组、如下所示:
const uint8_t pru0_image_1[]_attribute__((aligned (4)))={
具有 align 属性、我的版本配置可以正常工作。
现在我的问题:
是否可以配置 PRU 十六进制实用程序来自动添加 alignment 属性?
此致
JO