icss_tm_macros.inc

brief:  PRU Task Manager Related Macro definitions

Macros
m_pru_tasks_mgr_global_cfg_reg

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);
Parameters
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

m_pru_tm_rst

Clears task manager status

PEAK cycles: 11 cycle

Invokes

m_pru_tasks_mgr_global_cfg_reg

Parameters
TEMP_REG

Register Structure with atleast 2 Registers

TM_BASE

Base address of the corresponding PRU's task manager

m_pru_tm_set_cfg_gpmode_enable

Task Manager CFG for PRU to setup TM in General Purpose Mode.

PeakCycles

5 cycles

Invokes

None

Registers

2 Registers required in TEMP_REG defined by user

PseudoCode
Write to PRU0_TM_GLOBAL_CFG register to set tasks_mgr_mode to 2.
Also enables all subtasks.
Parameters
TEMP_REG

Register Structure with atleast 2 Registers

TM_BASE

Base address of the corresponding PRU's task manager

Returns

None

See Also
m_pru_tm_pc_set

Task Manager set the PC value for given task.

PeakCycles

7 cycles

Invokes

None

Registers

3 Registers required in TEMP_REG defined by user

PseudoCode
Write ts_pc to register for ts_number.
Parameters
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)

Returns

None

See Also
m_pru_tm_ts1_pc_set

Task Manager set the PC values for TS1_S{0 to 4}

PeakCycles

14 cycles

Invokes

None

Registers

4 Registers required in TEMP_REG defined by user

PseudoCode
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
Parameters
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

Returns

None

See Also
m_pru_tm_ts2_pc_set

Task Manager set the PC values for TS2_S{0 to 4}

PeakCycles

14 cycles

Invokes

None

Registers

4 Registers required in TEMP_REG defined by user

PseudoCode
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
Parameters
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

Returns

None

See Also
m_pru_tm_disable_task

Disable given task in Task Manager.

PeakCycles

8 cycles

Invokes

None

Registers

3 Registers required in TEMP_REG defined by user

PseudoCode
Disable given task (ts_number) in Task Manager.
Parameters
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)

Returns

None

See Also
m_pru_tm_enable_task

Enable given task in Task Manager.

PeakCycles

8 cycles

Invokes

None

Registers

3 Registers required in TEMP_REG defined by user

PseudoCode
Enable given task (ts_number) in Task Manager.
Parameters
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)

Returns

None

See Also
m_pru_tm_set_cfg_gpmode_ts1_mux_set

Task Manager CFG for PRU to setup TM GP Mode Mux for TS1.

PeakCycles

11 cycles

Invokes

None

Registers

3 Registers required in TEMP_REG defined by user

PseudoCode
Write to TS1_GEN_CFG1 and TS1_GEN_CFG2 register to setup GP mode mux for TS1.
Parameters

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

Returns

None

See Also
m_pru_tm_set_cfg_gpmode_ts2_mux_set

Task Manager CFG for PRU to setup TM GP Mode Mux for TS2.

PeakCycles

11 cycles

Invokes

None

Registers

3 Registers required in TEMP_REG defined by user

PseudoCode
Write to TS2_GEN_CFG1 and TS2_GEN_CFG2 register to setup GP mode mux for TS2.
Parameters

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

Returns

None

See Also
m_pru_tm_yield

Current Task yield to Task Manager

PeakCycles

4 cycles

Invokes

None

Registers

R0.b3

PseudoCode
xin to TM_YIELD_XID with 1 byte
Parameters

None

Returns

None

See Also
m_pru_tm_yield_only

Current Task yield to Task Manager

PeakCycles

1 cycle

Invokes

None

Registers

R0.b3

PseudoCode
xin to TM_YIELD_XID with 1 byte
Parameters

None

Returns

None

See Also
m_pru_tm_yield_self_loop

Deadloop during Task yield to Task Manager

PeakCycles

1 cycle

Invokes

None

Registers

None

PseudoCode
Deadloop.
Parameters

None

Returns

None

See Also
m_pru_tm_enable

Task Manager enable

PeakCycles

1 cycle

Invokes

None

Registers

None

PseudoCode
A new instruction "TSEN 1" is defined for Task Manager Enable
Using .word as a workaround because CLPRU doesnt support TSEN instruction
Parameters

None

Returns

None

See Also
m_pru_tm_disable

Task Manager disable

PeakCycles

1 cycle

Invokes

None

Registers

None

PseudoCode
A new instruction "TSEN 0" is defined for Task Manager Disable
Using .word as a workaround because CLPRU doesnt support TSEN instruction
Parameters

None

Returns

None

See Also
m_pru_tm_context_save

Save previous task's context (R0-R29) to Scratch PAD.

PeakCycles

1 cycle

Invokes

None

Registers

R0

PseudoCode
xout to TM_SAVE_XID with 120 bytes
Parameters

None

Returns

None

See Also
m_pru_tm_context_restore

Restore previous task's context (R0-R29) to Scratch PAD.

PeakCycles

1 cycle

Invokes

None

Registers

R0

PseudoCode
xin 120 bytes from TM_SAVE_XID SPAD bank
Parameters

None

Returns

None

See Also
m_pru_tm_context_swap

Save previous task's context (R0-R29) to Scratch PAD and restore current task's context.

PeakCycles

1 cycle

Invokes

None

Registers

R0

PseudoCode
xchg to TM_SAVE_XID with 120 bytes
Parameters

None

Returns

None

See Also