工具/软件:TI C/C++编译器
你(们)好
通过在链接器命令文件中创建共享段、是否可以在两个子系统的内核(例如 PRU-ICSS1的 PRU1和 PRU-ICSS0的 PRU1)之间共享变量?
与下面的链接类似
https://e2e.ti.com/support/arm/sitara_arm/f/791/t/619957
根据 AM437x TRM 的本地数据存储器映射部分、每个 PRU 内核都可以使用本地地址访问其他子系统存储器。
PRU-ICSS0的 PRU1能够使用类似的直接本地存储器地址访问 PRU-ICSS1的 PRU1的共享数据 RAM
volatile unsigned int* PWM_OUT =(volatile unsigned int *) 0x57f00;
但无法通过链接器命令文件中的共享段和 C 文件中的 pragma 指令进行访问、如所示
AM437X_PRU_SS0.cmd GLB_BUF :org = 0x00057f00 len = 0x000000ff .share_buff > GLB_BUF,第1页 main.c #pragma DATA_SECTION (share_buff、".share_buff") volatile struct shared_mem share_buff;
上述代码编译并成功加载、但在尝试访问该位置时失败、抛出以下错误
[124.621794] remoteproc remoteproc3:错误的地址 da 0x57f00 mem 0x6
[124.632569] remoteproc remoteproc3:加载程序段失败:-22
我是否遗漏或 出错了?
谢谢