SPRUHM8K December 2013 – May 2024 TMS320F28374D , TMS320F28375D , TMS320F28376D , TMS320F28377D , TMS320F28377D-EP , TMS320F28377D-Q1 , TMS320F28378D , TMS320F28379D , TMS320F28379D-Q1
This section details the commands that CPU2 boot ROM supports. These commands can be used by CPU1 applications to have CPU2 perform a specific action. To use these IPC commands, CPU2 boot ROM must be in Wait Boot mode.
Value | IPCRECVCOM (CPU1 - R/W, CPU2 R) |
IPCRECVADDR (CPU1 - R/W, BCPU2- R) |
IPCRECVDATA (CPU1 - R/W, CPU2- R) |
IPCLOCALREPLY (CPU1 - R, CPU2 - R/W) |
C1TOC2IPCFLG[31] = ? C1TOC2IPCFLAG[0] = 0 |
Description |
---|---|---|---|---|---|---|
0 | C1C2_BROM_IPC_ COMMAND_ILLEGAL |
NOT-USED | NOT-USED | Look at error codes table | 0x01 | Illegal command |
1 | C1C2_BROM_IPC_SET_ BITS_16 |
Address of the 16-bit register | Data in C1TOC2IPCDATAW[15:0] | Data read back from address after write | 0x00 = Command success | *(address) |= data; |
2 | C1C2_BROM_IPC_SET_ BITS_32 |
Address of the 32-bit register | Data; | Data read back from address after write | Same as above | *(address) |= data; |
3 | C1C2_BROM_IPC_CLEAR_BITS_16 | Address of the 16-bit register | Data in C1TOC2IPCDATAW[15:0] | Data read back after write | Same as above | *(address) &= ~data; |
4 | C1C2_BROM_IPC_CLEAR_BITS_32 | Address of the 32-bit register | Data | Data read back after write | Same as above | *(address) &= ~data; |
5 | C1C2_BROM_IPC_DATA_WRITE_16 | Address of the 16-bit register | Data in MTOCIPCDATA W[15:0] |
Data read back from the address | Same as above | *(address) = data; |
6 | C1C2_BROM_IPC_DATA_WRITE_32 | Address of the 32-bit register | Data | Same as above | Same as above | *(address) = data; |
7 | C1C2_BROM_IPC_DATA_ READ_16 |
Address of the 16-bit register | NOT-USED | Data in C1TOC2IPCDATAR[15:0] | Same as above | C1TOC2IPCDATAR[15:0] = *(address); 16 bits read from address |
8 | C1C2_BROM_IPC_DATA_ READ_32 |
Address of the 32-bit register | Same as above | 32 bit data | Same as above | C1TOC2IPCDATAR[31:0] = *(address); 32 bits read from address |
9 | C1C2_BROM_IPC_SET_ BITS_ PROTECTED_16 |
Address of the 16-bit register | Data in C1TOC2IPCDATAW[15:0] | Data read back from address after write | 0x00 = Command success | EALLOW; *(address) |= data; EDIS; |
10 | C1C2_BROM_IPC_SET_ BITS_ PROTECTED_32 |
Address of the 32-bit register | Data; | Data read back from address after write | Same as above | EALLOW; *(address) |= data; EDIS; |
11 | C1C2_BROM_IPC_CLEAR_BITS_ PROTECTED_16 | Address of the 16-bit register | Data in C1TOC2IPCDATAW[15:0] | Data read back after write | Same as above | EALLOW; *(address) &= ~data; EDIS; |
12 | C1C2_BROM_IPC_CLEAR_BITS_ PROTECTED_32 | Address of the 32-bit register | Data | Data read back after write | Same as above | EALLOW; *(address) &= ~data; EDIS; |
13 | C1C2_BROM_IPC_DATA_WRITE_ PROTECTED_16 | Address of the 16-bit register | Data in C1TOC2IPCDATAW[15:0] | Data read back from the address | Same as above | EALLOW; *(address) = data; EDIS; |
14 | C1C2_BROM_IPC_DATA_WRITE_ PROTECTED_32 | Address of the 32-bit register | Data | Same as above | Same as above | EALLOW; *(address) = data; EDIS; |
15 | C1C2_BROM_IPC_DATA_ READ_ PROTECTED_16 |
Address of the 16-bit register | NOT-USED | Data in C1TOC2IPCDATAR[15:0] | Same as above | EALLOW; C1TOC2IPCDATAR[15:0] = *(address); 16 bits read from address |
16 | C1C2_BROM_IPC_DATA_ READ_ PROTECTED_32 |
Address of the 32-bit register | Same as above | 32 bit data | Same as above | EALLOW; C1TOC2IPCDATAR[31:0] = *(address); EDIS; 32 bits read from address |
17 | C1C2_BROM_IPC_ BRANCH_CALL |
Address where to branch to | _NOT-USED_BY_BOOTROM (code at the branch can use this though) |
NOT-USED_BY_BOOTROM (code at the branch can use this though) |
Same as above | C2-BootROM jumps to the address in ADDR register and starts
executing the code from that address. PIE is enabled when this branch occurs, it is up to the application to disable and reload PIE interrupt handlers if it wants to. |
18 | C1C2_BROM_IPC_ FUNCTION_CALL |
Address of the function | Parameter for the function call | Result of function call (return value if any from function) | Same as above | C2-BootROM jumps to the address in ADDR register and starts
executing the code from that address; Data in DATAW register can be
used as parameter to the function call. C-BootROM returns back to
where it was after servicing the function call. Function call is performed from inside the interrupt service routine on Aria so user has to keep this in mind. |
19 | C1C2_BROM_IPC_ EXECUTE_ BOOTMODE_CMD |
NOT-USED | NOT-USED | NOT-USED | Same as above | Execute loaders as per requested value in C1TOC2BOOT MODE register. |
|
||||||
|
||||||
|
||||||
|
||||||
|
||||||
|
||||||
|