Thread 中讨论的其他器件:SYSBIOS、
工具/软件:TI-RTOS
您好!
我对 ex41_forwardmsg 中的 IPC 内存映射使用有一些疑问:
devicetree 指定以下地址源/大小:
IPU1:0x9580 0000 / 0x0380 0000 (56M)
DSP1:0x9900 0000/0x0400 0000 (64M)
IPU1:0x9D00 0000/0x0200 0000 (32M)
DSP2:0x9F00 0000/0x0080 0000 (8M)
CMEM:0xA000 0000/0x0C00 0000 (192M)
在 config.Bld 中提供了以下信息:
DSP1:
* 虚拟 物理 大小 注释
** *****************************************************************************************************
* 9500_0000 ???0_0000 10_0000 ( ~1 MB) EXT_CODE
* 9510_0000 ??0_0000 10_0000 ( 1 MB) EXT_DATA
* 9520_0000 ???0_0000 30_0000 ( 3 MB) EXT_HAP
* 9F00_0000 ???0_0000 6_0000 (384KB) TRACE_BUF
* 9F06_0000 ???6_0000 1_0000 ( 64KB) EXC_DATA
* 9F07_0000 ???7_0000 2_0000 (128KB) PM_DATA (电源管理)
* BFC0_0000 ???0_0000 10_0000 ( 1 MB) SR0 (共享区域)
IPU1:
* 虚拟 物理 大小 注释
** *****************************************************************************************************
* 0000_4000 ???0_4000 F_C000 ( ~1 MB) EXT_CODE
* 8000_0000 ??0_0000 20_0000 ( 2 MB) EXT_DATA
* 8020_0000 ???0_0000 30_0000 ( 3 MB) EXT_HAP
* 9F00_0000 ???0_0000 6_0000 (384KB) TRACE_BUF
* 9F06_0000 ???6_0000 1_0000 ( 64KB) EXC_DATA
* 9F07_0000 ???7_0000 2_0000 (128KB) PM_DATA (电源管理)
* BFC0_0000 ???0_0000 10_0000 ( 1 MB) SR0 (共享区域)
(我添加了共享区0信息)
RSC_Table_dsp1:
#define DSP_MEM_TEXT 0x95000000
#define DSP_MEM_IOBUFS 0x8000000
#define DSP_MEM_DATA 0x95100000
#define DSP_MEM_HEAP 0x95200000
#define DSP_SR0_virt 0xBFC00000
#define DSP_SR0 0xBFC00000
#define DSP_MEM_IPC_DATA 0x9F000000
#define DSP_MEM_IPC_VRING 0xA0000000
#define DSP_MEM_RPMSG_VRING0 0xA0000000
#define DSP_MEM_RPMSG_VRING1 0xA0004000
#define DSP_MEM_VING_BUFS0 0xA0040000
#define DSP_MEM_VRING_BUFS1 0xA0080000
#define PHYS_MEM_IPC_VRING 0x99000000
RSC_Table_ipu1:
#define IPU_MEM_TEXT 0x0
#define IPU_MEM_DATA 0x8000000
#define IPU_SR0_virt 0xBFC00000
#define IPU_SR0 0xBFC00000
#define IPU_MEM_IPC_DATA 0x9F000000
#define IPU_MEM_IPC_VRING 0x60000000
#define IPU_MEM_RPMSG_VRING0 0x60000000
#define IPU_MEM_RPMSG_VRING1 0x60004000
#define IPU_MEM_VING_BUFS0 0x60040000
#define IPU_MEM_VING_BUFS1 0x60080000
#define PHYS_MEM_IPC_VRING 0x9D000000
- IPU/DSP 地址是否全部由 phys_MEM_IPC_VRING 中给出的偏移重新映射?
- TRACE_BUF、EXC_DATA 和 PM_DATA 段的偏移量很大、超出了分割范围。 它们指向哪个物理地址?
- IPU_SR0和 DSP_SR0位于0xBFC00000 (PHY)。 这在 RAM 内部、但在任何分割区之外。 Linux 端如何知道共享区域0使用此区域?
我需要修改以更改存储器映射的文件包括:
-用于指定 CMA 原点和长度的 Linux 设备树包含文件,以及 cmem origin 和 length
- config.bld (链接器信息)
- ipc.cfg.xs (共享区域配置)
- rsc_table.h (地址信息;两个版本、一个用于 DSP、一个用于 IPU)
我错过了什么吗?
对于我们的应用、我想在 Linux/DSP/IPU 之间交换消息。
- IPU 和 DSP 同时使用一个共享区域来分配内存(用于 MessageQ 消息)是否安全?
-我是否需要设置共享区域来为 MessageQ 消息分配内存,或者是否可以在 CMEM 区域之外使用? (CMEM 是否实现 IHeap?)
-共享区域仅用于 SYSBIOS,我是否可以将共享区域中分配的消息发送到 Linux MessageQ?
我还想在 Linux/DSP/IPU 之间共享一个大内存块、因为我要使用 CMEM 保留的一个 RAM 块。 这是推荐的方式吗?
此致、
环路2.