请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
器件型号: TMS320F28P650DK
您好、
我尝试从 CPU1 向 CPU2 发送消息。 每当从 CPU1 发送消息时、CPU2 中都会引发中断。 要在 CPU2 中接收更多消息、我需要确认 CPU2 中的 IPC 标志。 在 CPU2 中使用以确认 IPC 标志的命令 I 如下所示:
Cpu2toCpu1IpcRegs.CPU2TOCPU1IPCACK.all |= ipcflag1;
但是、上面的行没有达到目的、也没有收到后续中断。
但是、如果我使用以下行:
IPC_ackFlagRtoL (IPC_CPU2_L_CPU1_R、IPC_Flag1);
我收到后续的中断。
我想了解这两条线之间的区别。
我方面的一些观察:
>(在 CCS 中)、& Cpu2TOCpu1IpcRegs 给出 0x000002
>(在 CCS 中)、& Cpu2TOCpu1IpcRegs 给出 0x000002
但在使用 driverlib API 时、我会看到内存位置 0x5cE00(实际 IPC 基地址)发生了更改。
在 CPU2Menory 映射文件中、我看到以下代码块:
Cpu2toCpu1IpcRegsFile
* 1 00000002 00000026 UNINITIALIZED
00000002 00000026 f28p65x_globalvariabledefs.obj (Cpu2toCpu1IpcRegsFile)
.cinit 0 00012000 00000068
00012000 0000000d (.cinit..data.load) [load image, compression = lzss]
0001200d 00000006 (.cinit.READFLAG1CPU2.load) [load image, compression = lzss]
00012013 00000006 (.cinit.READFLAG2CPU2.load) [load image, compression = lzss]
00012019 00000006 (.cinit.WRITEFLAG1CPU2.load) [load image, compression = lzss]
0001201f 00000006 (.cinit.WRITEFLAG2CPU2.load) [load image, compression = lzss]
00012025 00000001 --HOLE-- [fill = 0]
00012026 00000006 (__TI_handler_table)
0001202c 00000004 (.cinit..bss.load) [load image, compression = zero_init]
00012030 00000004 (.cinit.Cpu2toCpu1IpcRegsFile.load) [load image, compression = zero_init]
00012034 00000004 (.cinit.GETREADIDX.load) [load image, compression = zero_init]
00012038 00000004 (.cinit.PUTBUFFER.load) [load image, compression = zero_init]
0001203c 00000004 (.cinit.PUTWRITEIDX.load) [load image, compression = zero_init]
00012040 00000028 (__TI_cinit_table)
__TI_cinit_table @ 00012040 records: 10, size/record: 4, table size: 40
.data: load addr=00012000, load size=0000000d bytes, run addr=00010262, run size=00000011 bytes, compression=lzss
READFLAG1CPU2: load addr=0001200d, load size=00000006 bytes, run addr=0003b180, run size=00000020 bytes, compression=lzss
READFLAG2CPU2: load addr=00012013, load size=00000006 bytes, run addr=0003b1a0, run size=00000020 bytes, compression=lzss
WRITEFLAG1CPU2: load addr=00012019, load size=00000006 bytes, run addr=0003b140, run size=00000020 bytes, compression=lzss
WRITEFLAG2CPU2: load addr=0001201f, load size=00000006 bytes, run addr=0003b160, run size=00000020 bytes, compression=lzss
.bss: load addr=0001202c, load size=00000004 bytes, run addr=00010000, run size=00000262 bytes, compression=zero_init
Cpu2toCpu1IpcRegsFile: load addr=00012030, load size=00000004 bytes, run addr=00000002, run size=00000026 bytes, compression=zero_init
GETREADIDX: load addr=00012034, load size=00000004 bytes, run addr=0003b120, run size=00000020 bytes, compression=zero_init
PUTBUFFER: load addr=00012038, load size=00000004 bytes, run addr=0003b000, run size=00000100 bytes, compression=zero_init
PUTWRITEIDX: load addr=0001203c, load size=00000004 bytes, run addr=0003b100, run size=00000020 bytes, compression=zero_init
如果您需要更多详细信息、请告诉我。 谢谢、
Mukul