brief: PRU Task Manager Related Macro definitions
Set value of tasks_mgr_global_cfg_reg. Subtasks: 0: Disabled 1: Enabled Bit | Field | Type | Reset | Description 11 | TS2_EN_S4 | R/W | 0h | TS2 Sub4 10 | TS2_EN_S3 | R/W | 0h | TS2 Sub3 9 | TS2_EN_S2 | R/W | 0h | TS2 Sub2 8 | TS2_EN_S1 | R/W | 0h | TS2 Sub1 7 | TS2_EN_S0 | R/W | 0h | TS2 Sub0 6 | TS1_EN_S4 | R/W | 0h | TS1 Sub4 5 | TS1_EN_S3 | R/W | 0h | TS1 Sub3 4 | TS1_EN_S2 | R/W | 0h | TS1 Sub2 3 | TS1_EN_S1 | R/W | 0h | TS1 Sub1 2 | TS1_EN_S0 | R/W | 0h | TS1 Sub0 1-0 | TASKS_MGR_MODE | R/W | 0h | TaskSwap Mode
0: Disabled
1: RXTX
2: General_HW
PEAK cycles: 5 cycle
Pseudo code:
TEMP_REG.reg1.x = TM_BASE;
TEMP_REG.reg2.x = value;
memcpy(offset(TEMP_REG.reg2.x), TEMP_REG.reg1.x, 2);
TEMP_REG | Register Structure with atleast 2 Registers |
TM_BASE | Base address of the corresponding PRU's task manager |
value | Value to store in tasks_mgr_global_cfg_reg |
Clears task manager status
PEAK cycles: 11 cycle
m_pru_tasks_mgr_global_cfg_reg
TEMP_REG | Register Structure with atleast 2 Registers |
TM_BASE | Base address of the corresponding PRU's task manager |
Task Manager CFG for PRU to setup TM in General Purpose Mode.
5 cycles
None
2 Registers required in TEMP_REG defined by user
Write to PRU0_TM_GLOBAL_CFG register to set tasks_mgr_mode to 2.
Also enables all subtasks.
TEMP_REG | Register Structure with atleast 2 Registers |
TM_BASE | Base address of the corresponding PRU's task manager |
None
Task Manager set the PC value for given task.
7 cycles
None
3 Registers required in TEMP_REG defined by user
Write ts_pc to register for ts_number.
TEMP_REG | Register Structure with atleast 3 Registers |
TM_BASE | Base address of the corresponding PRU's task manager |
ts_pc | Program counter value for task |
ts_number | Task number (TS1_S0 to TS2_S4) |
None
Task Manager set the PC values for TS1_S{0 to 4}
14 cycles
None
4 Registers required in TEMP_REG defined by user
Write ts1_pc_s0 to TS1_PC_S0 register
Write ts1_pc_s1 to TS1_PC_S1 register
Write ts1_pc_s2 to TS1_PC_S2 register
Write ts1_pc_s3 to TS1_PC_S3 register
Write ts1_pc_s4 to TS1_PC_S4 register
TEMP_REG | Register Structure with atleast 4 Registers |
TM_BASE | Base address of the corresponding PRU's task manager |
ts1_pc_s0 | Program counter value for TS1_S0 |
ts1_pc_s1 | Program counter value for TS1_S1 |
ts1_pc_s2 | Program counter value for TS1_S2 |
ts1_pc_s3 | Program counter value for TS1_S3 |
ts1_pc_s4 | Program counter value for TS1_S4 |
None
Task Manager set the PC values for TS2_S{0 to 4}
14 cycles
None
4 Registers required in TEMP_REG defined by user
TEMP_REG -> Register Structure with atleast 4 Registers
TM_BASE -> Base address of the corresponding PRU's task manager
Write ts2_pc_s0 to TS2_PC_S0 register
Write ts2_pc_s1 to TS2_PC_S1 register
Write ts2_pc_s2 to TS2_PC_S2 register
Write ts2_pc_s3 to TS2_PC_S3 register
Write ts2_pc_s4 to TS2_PC_S4 register
ts2_pc_s0 | Program counter value for TS2_S0 |
ts2_pc_s1 | Program counter value for TS2_S1 |
ts2_pc_s2 | Program counter value for TS2_S2 |
ts2_pc_s3 | Program counter value for TS2_S3 |
ts2_pc_s4 | Program counter value for TS2_S4 |
None
Disable given task in Task Manager.
8 cycles
None
3 Registers required in TEMP_REG defined by user
Disable given task (ts_number) in Task Manager.
TEMP_REG | Register Structure with atleast 3 Registers |
TM_BASE | Base address of the corresponding PRU's task manager |
ts_number | Task number (TS1_S0 to TS2_S4) |
None
Enable given task in Task Manager.
8 cycles
None
3 Registers required in TEMP_REG defined by user
Enable given task (ts_number) in Task Manager.
TEMP_REG | Register Structure with atleast 3 Registers |
TM_BASE | Base address of the corresponding PRU's task manager |
ts_number | Task number (TS1_S0 to TS2_S4) |
None
Task Manager CFG for PRU to setup TM GP Mode Mux for TS1.
11 cycles
None
3 Registers required in TEMP_REG defined by user
Write to TS1_GEN_CFG1 and TS1_GEN_CFG2 register to setup GP mode mux for TS1.
TEMP_REG -> Register Structure with atleast 3 Registers
TM_BASE -> Base address of the corresponding PRU's task manager
ts1_mx_s0 -> Mux value for TS1_S0
ts1_mx_s1 -> Mux value for TS1_S1
ts1_mx_s2 -> Mux value for TS1_S2
ts1_mx_s3 -> Mux value for TS1_S3
ts1_mx_s4 -> Mux value for TS1_S4
None
Task Manager CFG for PRU to setup TM GP Mode Mux for TS2.
11 cycles
None
3 Registers required in TEMP_REG defined by user
Write to TS2_GEN_CFG1 and TS2_GEN_CFG2 register to setup GP mode mux for TS2.
TEMP_REG -> Register Structure with atleast 3 Registers
TM_BASE -> Base address of the corresponding PRU's task manager
ts2_mx_s0 -> Mux value for TS1_S0
ts2_mx_s1 -> Mux value for TS1_S1
ts2_mx_s2 -> Mux value for TS1_S2
ts2_mx_s3 -> Mux value for TS1_S3
ts2_mx_s4 -> Mux value for TS1_S4
None
Current Task yield to Task Manager
4 cycles
None
R0.b3
xin to TM_YIELD_XID with 1 byte
None
None
Current Task yield to Task Manager
1 cycle
None
R0.b3
xin to TM_YIELD_XID with 1 byte
None
None
Deadloop during Task yield to Task Manager
1 cycle
None
None
Deadloop.
None
None
Task Manager enable
1 cycle
None
None
A new instruction "TSEN 1" is defined for Task Manager Enable
Using .word as a workaround because CLPRU doesnt support TSEN instruction
None
None
Task Manager disable
1 cycle
None
None
A new instruction "TSEN 0" is defined for Task Manager Disable
Using .word as a workaround because CLPRU doesnt support TSEN instruction
None
None
Save previous task's context (R0-R29) to Scratch PAD.
1 cycle
None
R0
xout to TM_SAVE_XID with 120 bytes
None
None
Restore previous task's context (R0-R29) to Scratch PAD.
1 cycle
None
R0
xin 120 bytes from TM_SAVE_XID SPAD bank
None
None
Save previous task's context (R0-R29) to Scratch PAD and restore current task's context.
1 cycle
None
R0
xchg to TM_SAVE_XID with 120 bytes
None
None