工具/软件:
您好!
在 PRU 链接器命令脚本中、我发现以下内容:
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.
工具/软件:
您好!
在 PRU 链接器命令脚本中、我发现以下内容:
尊敬的 Daniel: 
常量条目 24–31 中的地址是可部分编程的。 其可编程位字段 (nn_nn)
(例如,c28_blk_index[3:0])可通过以下地址的 PRU CTRL 寄存器空间进行编程 
用于将 C28 配置为保持 SMEM 地址的 PRU 汇编代码
; Configure the Constant Table entry C28 to point to start of shared memory
; PRU_ICSSG Shared RAM (local-C28) : 00nn_nn00h, nnnn = c28_pointer[15:0]
; By default it is set to 0000_0000h so it will point to DMEM0 address
ldi R0, 0x0100
sbco &R0, C11, 0x28, 2
; example code to write into smem after configuring C28 with SMEM address
ldi R0, 0x1234
sbco &R0, C28, 0x0, 4尊敬的 Manoj:
我仍然不明白为什么需要这样做、因为我在不设置 C28 的情况下就能够通过 SMEM 传输数据 R5<->PRU。
我正在 PRU 上使用 C 语言进行开发、下面是一个如何访问 PRU 端的 SMEM 的示例。
#define PRUICSS_SHARED_RAM 0x10000U #define FW_SIGNATURE 0x55555555 *shared_mem = FW_SIGNATURE;
尊敬的 Daniel:
您在汇编代码中将转换为与以下代码类似的代码、增加一个额外的 PRU 时钟周期:
C28
LDI32 R1、0x010000
LDI32 R2、0x55555555
SBBO &R2、 R1、0、4
C28 简化您的设计
LDI32 R2、0x55555555
SBCO &R2、C28、0、4
当您使用 C 代码时、应该会在访问 SMEM 时通知编译器使用常量表、我将对此进行检查并告知您
此致、
Manoj。
尊敬的 Daniel:
当您使用 c 代码时、应该可以通知编译器在访问 SMEM 时使用常量表、我将对此进行检查并告知您
您还需要添加 C 代码来配置 我之前提到的 c28_blk_index[3:0]、并对链接器命令文件进行以下更改
/* Specify the System Memory Map */
MEMORY
{
PAGE 0:
/* 12 KB PRU Instruction RAM */
PRU_IMEM : org = 0x00000000 len = 0x00003000
PAGE 1:
/* Data RAMs */
/* 8 KB PRU Data RAM 0 */
PRU0_DMEM_0 : org = 0x00000000 len = 0x00002000 CREGISTER=24
/* 8 KB PRU Data RAM 1 */
PRU0_DMEM_1 : org = 0x00002000 len = 0x00002000 CREGISTER=25
PAGE 2:
/* C28 needs to be programmed to point to SHAREDMEM, default is 0 */
/* 32 KB Shared general purpose memory RAM with ECC, shared between PRU0 and PRU1 */
PRU_SHAREDMEM : org = 0x00010000 len = 0x00008000 CREGISTER=28
}