Designing a PRU Application - Texas...

50
Designing a PRU Application Building Blocks for PRU Development: Module 3

Transcript of Designing a PRU Application - Texas...

Page 1: Designing a PRU Application - Texas Instrumentssoftware-dl.ti.com/public/hpmp/sitara/building_blocks...Step 2: Understand the Requirements Designing a PRU Application 1. Define the

Designing a PRU Application

Building Blocks for PRU Development: Module 3

Page 2: Designing a PRU Application - Texas Instrumentssoftware-dl.ti.com/public/hpmp/sitara/building_blocks...Step 2: Understand the Requirements Designing a PRU Application 1. Define the

Agenda • PRU Application Design Procedure Overview

• Designing an Example PRU Application

2

Page 3: Designing a PRU Application - Texas Instrumentssoftware-dl.ti.com/public/hpmp/sitara/building_blocks...Step 2: Understand the Requirements Designing a PRU Application 1. Define the

PRU Design Steps

3

1. Define the application

4. Analyze available SoC resources

5. Architect PRU firmware & ARM code

6. Estimate number of PRU cycles required

7. Assess application feasibility

3. Plan system level data flow

2. Understand the requirements

8. Start coding

Page 4: Designing a PRU Application - Texas Instrumentssoftware-dl.ti.com/public/hpmp/sitara/building_blocks...Step 2: Understand the Requirements Designing a PRU Application 1. Define the

Step 1: Define the Application

Designing a PRU Application

1. Define the application

4. Analyze available SoC resources

5. Architect PRU firmware & ARM code

6. Estimate number of PRU cycles required

7. Assess application feasibility

3. Plan system-level data flow

2. Understand the requirements

8. Start coding

Page 5: Designing a PRU Application - Texas Instrumentssoftware-dl.ti.com/public/hpmp/sitara/building_blocks...Step 2: Understand the Requirements Designing a PRU Application 1. Define the

Define the Application

Temperature monitor

• Periodically monitor ambient temp using external sensor

• Illuminate blue or red LED based on temp change

AM335x

Temp Sensor DS18B20

5

Page 6: Designing a PRU Application - Texas Instrumentssoftware-dl.ti.com/public/hpmp/sitara/building_blocks...Step 2: Understand the Requirements Designing a PRU Application 1. Define the

Step 2: Understand the Requirements

Designing a PRU Application

1. Define the application

4. Analyze available SoC resources

5. Architect PRU firmware & ARM code

6. Estimate number of PRU cycles required

7. Assess application feasibility

3. Plan system-level data flow

2. Understand the requirements

8. Start coding

Page 7: Designing a PRU Application - Texas Instrumentssoftware-dl.ti.com/public/hpmp/sitara/building_blocks...Step 2: Understand the Requirements Designing a PRU Application 1. Define the

What are the Requirements? 1. Identify required I/Os

* How many? * What type? (i.e. uni or bidirectional, serial, parallel, etc.) * Any special requirements? (i.e. open-drain, etc.)

2. Understand protocol basics

* Are any required protocols not available in hardware or not already implemented in software? * If so, what are basic building blocks of the protocol?

3. Outline general data flow

* What tasks are required by the defined application?

7

Page 8: Designing a PRU Application - Texas Instrumentssoftware-dl.ti.com/public/hpmp/sitara/building_blocks...Step 2: Understand the Requirements Designing a PRU Application 1. Define the

Identify Required I/Os

AM335x

I/O I/O Type #

Control & toggle LEDs Output (unidirectional) 2

1-Wire interface with temp sensor IO (bidirectional), open-drain 1

Temp Sensor DS18B20

8

Page 9: Designing a PRU Application - Texas Instrumentssoftware-dl.ti.com/public/hpmp/sitara/building_blocks...Step 2: Understand the Requirements Designing a PRU Application 1. Define the

Understand Protocol Basics

Init sequence

Master Write “0”

Master Write “1”

Master Read “0”

Master Read “1”

480 us min 15 - 60 us

60-240 us

Reset Pulse Present Pulse

60 - 120 us > 1 us (recovery time)

15 us 45 us > 1 us (recovery time)

1 us > 1 us (recovery time) 14 us 45 us

1 us

Master samples

Master samples

14 us 45 us > 1 us (recovery time)

Bus master pulling low Bus slave pulling low Resistor pullup

9

Page 10: Designing a PRU Application - Texas Instrumentssoftware-dl.ti.com/public/hpmp/sitara/building_blocks...Step 2: Understand the Requirements Designing a PRU Application 1. Define the

Outline the General Data Flow

Blue LED

Every x seconds,

!= =

Red LED

< >

Sample temp

Issue “CONVERT T” cmd

Read temp value

Issue “READ SCRATCHPAD” cmd

Calculate CRC

Compare current & previous temp value

Compare calculated & actual CRC

Page 11: Designing a PRU Application - Texas Instrumentssoftware-dl.ti.com/public/hpmp/sitara/building_blocks...Step 2: Understand the Requirements Designing a PRU Application 1. Define the

Step 3: Plan System-level Data Flow

Designing a PRU Application

1. Define the application

4. Analyze available SoC resources

5. Architect PRU firmware & ARM code

6. Estimate number of PRU cycles required

7. Assess application feasibility

3. Plan system-level data flow

2. Understand the requirements

8. Start coding

Page 12: Designing a PRU Application - Texas Instrumentssoftware-dl.ti.com/public/hpmp/sitara/building_blocks...Step 2: Understand the Requirements Designing a PRU Application 1. Define the

Choose CPUs to Implement Requirements • Decide target CPU(s) to implement Step 2 tasks

For example: Single PRU core Dual PRU core ARM

• May need to revisit decision after future steps

12

Page 13: Designing a PRU Application - Texas Instrumentssoftware-dl.ti.com/public/hpmp/sitara/building_blocks...Step 2: Understand the Requirements Designing a PRU Application 1. Define the

Blue LED

Every x seconds,

!= =

Red LED

< >

Sample temp

Issue “CONVERT T” cmd

Read temp value

Issue “READ SCRATCHPAD” cmd

Calculate CRC

Compare current & previous temp value

Compare calculated & actual CRC

13

Reference the General Data Flow

Page 14: Designing a PRU Application - Texas Instrumentssoftware-dl.ti.com/public/hpmp/sitara/building_blocks...Step 2: Understand the Requirements Designing a PRU Application 1. Define the

Blue LED

Every x seconds,

!= =

Red LED

< >

Sample temp

Issue “CONVERT T” cmd

Read temp value

Issue “READ SCRATCHPAD” cmd

Calculate CRC

Compare current & previous temp value

Compare calculated & actual CRC

Here is one option…

PRUx Core

14

Plan System-level Data Flow: Option 1

Page 15: Designing a PRU Application - Texas Instrumentssoftware-dl.ti.com/public/hpmp/sitara/building_blocks...Step 2: Understand the Requirements Designing a PRU Application 1. Define the

Blue LED

Every x seconds,

!= =

Red LED

< >

Sample temp

Issue “CONVERT T” cmd

Read temp value

Issue “READ SCRATCHPAD” cmd

Calculate CRC

Compare current & previous temp value

Compare calculated & actual CRC

Here is another option… PRU Master Core PRU Slave Core

Let’s choose this option for complexity’s sake…

15

Plan System-level Data Flow: Option 2

Page 16: Designing a PRU Application - Texas Instrumentssoftware-dl.ti.com/public/hpmp/sitara/building_blocks...Step 2: Understand the Requirements Designing a PRU Application 1. Define the

Step 4: Analyze Available SoC Resources

Designing a PRU Application

1. Define the application

4. Analyze available SoC resources

5. Architect PRU firmware & ARM code

6. Estimate number of PRU cycles required

7. Assess application feasibility

3. Plan system-level data flow

2. Understand the requirements

8. Start coding

Page 17: Designing a PRU Application - Texas Instrumentssoftware-dl.ti.com/public/hpmp/sitara/building_blocks...Step 2: Understand the Requirements Designing a PRU Application 1. Define the

What are the Available SOC Resources? •Peripherals & I/Os

•System Event & Interrupt Sources

•Memory Resources

General Rule of Thumb:

Whenever possible, select resources within PRU subsystem to reduce access latency.

17

Page 18: Designing a PRU Application - Texas Instrumentssoftware-dl.ti.com/public/hpmp/sitara/building_blocks...Step 2: Understand the Requirements Designing a PRU Application 1. Define the

Which PRU / AM335x I/Os

would you choose

for each type of I/O?

# I/O Type Purpose

2 Output (unidirectional) Control & toggle LEDs

1 IO (bidirectional), open-drain 1-Wire interface with temp sensor

18

Peripherals & I/Os

Page 19: Designing a PRU Application - Texas Instrumentssoftware-dl.ti.com/public/hpmp/sitara/building_blocks...Step 2: Understand the Requirements Designing a PRU Application 1. Define the

• PRU GPO (R30)

- Fast, ultra-low latency, simple to program - PRU core dependent

• PRU IEP Digital I/Os

- Low latency, PRU core independent - Limited pins

• Standard AM335x GPIOs

- PRU core independent, “unlimited” pins - High latency

# I/O Type Purpose

2 Output (unidirectional) Control & toggle LEDs

19

Analyze Peripherals & I/Os: Outputs

Page 20: Designing a PRU Application - Texas Instrumentssoftware-dl.ti.com/public/hpmp/sitara/building_blocks...Step 2: Understand the Requirements Designing a PRU Application 1. Define the

• PRU GPO (R30)

- Fast, ultra-low latency, simple to program - PRU core dependent

• PRU IEP Digital I/Os

- Low latency, PRU core independent - Limited pins

• Standard AM335x GPIOs

- PRU core independent, “unlimited” pins - High latency

# I/O Type Purpose

2 Output (unidirectional) Control & toggle LEDs

Let’s choose the PRU GPO

for its ultra-low latency

and simplicity to program…

20

Analyze Peripherals & I/Os: Outputs

Page 21: Designing a PRU Application - Texas Instrumentssoftware-dl.ti.com/public/hpmp/sitara/building_blocks...Step 2: Understand the Requirements Designing a PRU Application 1. Define the

• PRU GPO (R30)

- Ultra-low latency - Unidirectional, not open-drain, PRU core dependent

• PRU IEP Digital I/Os

- Open-drain, low latency, PRU core independent - Unidirectional

• Standard AM335x GPIOs

- Bidirectional, open-drain - High latency

# I/O Type Purpose

1 IO (bidirectional), open-drain 1-Wire interface with temp sensor

21

Analyze Peripherals & I/Os: Bidirectional

Page 22: Designing a PRU Application - Texas Instrumentssoftware-dl.ti.com/public/hpmp/sitara/building_blocks...Step 2: Understand the Requirements Designing a PRU Application 1. Define the

• PRU GPO (R30)

- Ultra-low latency - Unidirectional, not open-drain, PRU core dependent

• PRU IEP Digital I/Os

- Open-drain, low latency, PRU core independent - Unidirectional

• Standard AM335x GPIOs

- Bidirectional, open-drain - High latency

# I/O Type Purpose

1 IO (bidirectional), open-drain 1-Wire interface with temp sensor

There isn’t an option that fulfills all I/O requirements (bidirectional & open-drain). However, we can achieve a bidirectional signal by

externally tying together an input and an output signal. Therefore, let’s choose to use PRU IEP Digital I/Os for their open-drain capability…

22

Analyze Peripherals & I/Os: Bidirectional

Page 23: Designing a PRU Application - Texas Instrumentssoftware-dl.ti.com/public/hpmp/sitara/building_blocks...Step 2: Understand the Requirements Designing a PRU Application 1. Define the

# I/O Type Purpose Selected Resource

2 Output (unidirectional) LED PRU GPO (2)

1 IO (bidirectional), open-drain Temp sensor PRU IEP DigIO (2)

Next, we need to check

if there are any I/O restrictions

due to pin muxing.

23

Peripherals & I/Os: Pinmux Restrictions

Page 24: Designing a PRU Application - Texas Instrumentssoftware-dl.ti.com/public/hpmp/sitara/building_blocks...Step 2: Understand the Requirements Designing a PRU Application 1. Define the

# I/O Type Purpose Selected Resource

2 Output (unidirectional) LED PRU GPO (2)

1 IO (bidirectional), open-drain Temp sensor PRU IEP DigIO (2)

AM335x Pins BBB Header label MUX MODE A MUX MODE B PRU Cape function

B16 I2C1_SDA PR1_EDIO_DATA_IN0 PR1_EDIO_DATA_OUT0 LCD_DATA4

A16 I2C1_SCL PR1_EDIO_DATA_IN1 PR1_EDIO_DATA_OUT1 LCD_DATA5

U5 LCD_VSYNC PR1_EDIO_DATA_IN2 PR1_EDIO_DATA_OUT2 LCD_DATA6

R5 LCD_HYSNC PR1_EDIO_DATA_IN3 PR1_EDIO_DATA_OUT3 LCD_DATA7

V5 LCD_PCLK PR1_EDIO_DATA_IN4 PR1_EDIO_DATA_OUT4 LDC_E

R6 LCD_DE PR1_EDIO_DATA_IN5 PR1_EDIO_DATA_OUT5

U9 MMC1_CLK PR1_EDIO_DATA_IN6 PR1_EDIO_DATA_OUT6 eMMC - BBB

T3 LCD_DATA6 PR1_EDIO_DATA_IN6 PR1_EDIO_DATA_OUT6 LCD_RS

T4 LCD_DATA7 PR1_EDIO_DATA_IN7 PR1_EDIO_DATA_OUT7 Conflicts with bootpins

PRU IEP DigIO Pinmux Analysis

Only 1 DigIO available

There is only one DigIO available, but

we were needing two for the bidirectional Temp Sensor interface.

Time to re-evaluate what resources can be used instead…

24

Peripherals & I/Os: Pinmux Restrictions

Page 25: Designing a PRU Application - Texas Instrumentssoftware-dl.ti.com/public/hpmp/sitara/building_blocks...Step 2: Understand the Requirements Designing a PRU Application 1. Define the

# I/O Type Purpose

1 IO (bidirectional), open-drain 1-Wire interface with temp sensor

Let’s use the available DigIO pin

as the open-drain output of the

bidirectional signal.

Which PRU / AM335x I/O

would you choose for the input?

25

Peripherals & I/Os: Pinmux Restrictions

Page 26: Designing a PRU Application - Texas Instrumentssoftware-dl.ti.com/public/hpmp/sitara/building_blocks...Step 2: Understand the Requirements Designing a PRU Application 1. Define the

• PRU GPO (R30)

- Ultra-low latency - Unidirectional, not open-drain, PRU core dependent

• PRU IEP Digital I/Os

- Open-drain, low latency, PRU core independent - Unidirectional

• Standard AM335x GPIOs

- Bidirectional, open-drain - High latency

# I/O Type Purpose

1 IO (bidirectional), open-drain 1-Wire interface with temp sensor

Pinmux restricts us to PRU1

26

Peripherals & I/Os: Pinmux Restrictions

Page 27: Designing a PRU Application - Texas Instrumentssoftware-dl.ti.com/public/hpmp/sitara/building_blocks...Step 2: Understand the Requirements Designing a PRU Application 1. Define the

What type of interrupts

are needed?

27

Analyze Interrupt Requirements

Page 28: Designing a PRU Application - Texas Instrumentssoftware-dl.ti.com/public/hpmp/sitara/building_blocks...Step 2: Understand the Requirements Designing a PRU Application 1. Define the

Blue LED

Every x seconds,

!= =

Red LED

< >

Sample temp

Issue “CONVERT T” cmd

Read temp value

Issue “READ SCRATCHPAD” cmd

Calculate CRC

Compare current & previous temp value

Compare calculated & actual CRC

PRU Master Core PRU Slave Core

Interrupts: Reference the General Data Flow

Page 29: Designing a PRU Application - Texas Instrumentssoftware-dl.ti.com/public/hpmp/sitara/building_blocks...Step 2: Understand the Requirements Designing a PRU Application 1. Define the

Event Type Details

Periodic system timer x seconds (i.e. 3s) 1-wire timer 1, 14, 15, 60, 240 us PRU to PRU

29

Analyze System Event Requirements

Page 30: Designing a PRU Application - Texas Instrumentssoftware-dl.ti.com/public/hpmp/sitara/building_blocks...Step 2: Understand the Requirements Designing a PRU Application 1. Define the

Event Type Periodic system timer 1-wire timer

What type of system event(s) would you choose?

30

Map Requirements to System Event Types

Page 31: Designing a PRU Application - Texas Instrumentssoftware-dl.ti.com/public/hpmp/sitara/building_blocks...Step 2: Understand the Requirements Designing a PRU Application 1. Define the

Event Type Details Selected Resource

Periodic system timer i.e. 3s 1-wire timer 1, 15, 60, 240 us

• PRU IEP Timer

- Up to 8 compare values

• PRU eCAP (auxiliary PWM mode)

• Standard AM335x PWM

• Standard AM335x eCAP (auxiliary PWM mode)

• Standard AM335x DMTimer

- Manually poll by reading DMTimer status registers

31

Map System Events to Timers

Page 32: Designing a PRU Application - Texas Instrumentssoftware-dl.ti.com/public/hpmp/sitara/building_blocks...Step 2: Understand the Requirements Designing a PRU Application 1. Define the

Event Type Details Selected Resource

Periodic system timer i.e. 3s 1-wire timer 1, 15, 60, 240 us

• PRU IEP Timer

- Up to 8 compare values

• PRU eCAP (auxiliary PWM mode)

• Standard AM335x PWM

• Standard AM335x eCAP (auxiliary PWM mode)

• Standard AM335x DMTimer

- Manually poll by reading DMTimer status registers

1-wire timer (Mapped to

PRU Slave Core)

Periodic System Timer (Mapped to PRU Master Core)

Remember: System Events can only be routed to one Host Interrupt.

Map System Events to Timers

Page 33: Designing a PRU Application - Texas Instrumentssoftware-dl.ti.com/public/hpmp/sitara/building_blocks...Step 2: Understand the Requirements Designing a PRU Application 1. Define the

What memory resources are needed?

Which PRU / AM335x memory space(s)

would you choose?

33

Analyze Memory Resources

Page 34: Designing a PRU Application - Texas Instrumentssoftware-dl.ti.com/public/hpmp/sitara/building_blocks...Step 2: Understand the Requirements Designing a PRU Application 1. Define the

34

Type of Resource Selected Resource Purpose

I/O PRU GPO LED I/O

IO PRU IEP DigIO + PRU GPI Temp sensor I/O

Interrupt PRU eCAP (APWM) Periodic System Timer

Interrupt IEP Timer 1-wire Timer

Memory PRU Shared RAM

Design Decision Recap

Page 35: Designing a PRU Application - Texas Instrumentssoftware-dl.ti.com/public/hpmp/sitara/building_blocks...Step 2: Understand the Requirements Designing a PRU Application 1. Define the

Step 5: Architect PRU Firmware & ARM Code

Designing a PRU Application

1. Define the application

4. Analyze available SoC resources

5. Architect PRU firmware & ARM code

6. Estimate number of PRU cycles required

7. Assess application feasibility

3. Plan system-level data flow

2. Understand the requirements

8. Start coding

Page 36: Designing a PRU Application - Texas Instrumentssoftware-dl.ti.com/public/hpmp/sitara/building_blocks...Step 2: Understand the Requirements Designing a PRU Application 1. Define the

Architect PRU Firmware & ARM Code ARM SoC

Cortex A8

DS18B20

Temp Sensor

PRU0 (Slave) Configure IEP Timer & DigIO

Reset & Present Pulse Skip ROM & Convert T cmd

Reset & Present Pulse Skip ROM & Read SPAD cmd

Read 72 bits

Device Init, Pin Muxing PRU Code Load

1-wire

PRU1 (Master)

Configure INTC & eCAP Timer

Wait for interrupts

Event to Slave eCAP event

Wait for interrupts

Calculate CRC Check CRC value

PRU slave event

Toggle LEDs Compare temp values

Event to Master

Event to Master

36

Page 37: Designing a PRU Application - Texas Instrumentssoftware-dl.ti.com/public/hpmp/sitara/building_blocks...Step 2: Understand the Requirements Designing a PRU Application 1. Define the

Step 6: Estimate Number of PRU Cycles Required

Designing a PRU Application

1. Define the application

4. Analyze available SoC resources

5. Architect PRU firmware & ARM code

6. Estimate number of PRU cycles required

7. Assess application feasibility

3. Plan system-level data flow

2. Understand the requirements

8. Start coding

Page 38: Designing a PRU Application - Texas Instrumentssoftware-dl.ti.com/public/hpmp/sitara/building_blocks...Step 2: Understand the Requirements Designing a PRU Application 1. Define the

Estimating PRU Cycle Requirements

38

•Part 1:

– Identify critical timing sections or loops

•Part 2:

– Estimate PRU cycles required for critical timing loops

Page 39: Designing a PRU Application - Texas Instrumentssoftware-dl.ti.com/public/hpmp/sitara/building_blocks...Step 2: Understand the Requirements Designing a PRU Application 1. Define the

Part 1: Identify Critical Timing Sections or Loops ARM SoC

Cortex A8

DS18B20

Temp Sensor

PRU0 (Slave) Configure IEP Timer & DigIO

Reset & Present Pulse Skip ROM & Convert T cmd

Reset & Present Pulse Skip ROM & Read SPAD cmd

Read 72 bits

Device Init, Pin Muxing PRU Code Load

1-wire

PRU1 (Master)

Configure INTC & eCAP Timer

Wait for interrupts

Event to Slave eCAP event

Wait for interrupts

Calculate CRC Check CRC value

PRU slave event

Toggle LEDs Compare temp values

Event to Master

Event to Master

39

Page 40: Designing a PRU Application - Texas Instrumentssoftware-dl.ti.com/public/hpmp/sitara/building_blocks...Step 2: Understand the Requirements Designing a PRU Application 1. Define the

Part 2: Estimate PRU Cycles within Loops Reset & Present Pulse

Skip ROM & Convert T cmd

Reset & Present Pulse

Skip ROM & Read SPAD cmd

Read 72 bits

Calculate CRC

Check CRC value

Event to Master

960 us (or 480 us * 2)

Estimation

976 us (or 61 us/bit * 8 bits * 2 cmd)

960 us (or 480 us * 2)

976 us (or 61 us/bit * 8 bits * 2 cmd)

4.392 ms (or 61 us/bit * 72 bits)

? – should be negligible

10 ns (or 2 PRU cycle)

5 ns (or 1 PRU cycle)

~ 8.2 ms + change 40

Based on 1-wire protocol

Page 41: Designing a PRU Application - Texas Instrumentssoftware-dl.ti.com/public/hpmp/sitara/building_blocks...Step 2: Understand the Requirements Designing a PRU Application 1. Define the

Master Write “0” Master Write “1”

1 us 1 us

Bus master pulling low Bus slave pulling low Resistor pullup 60 us 45 us 15 us

Estimating PRU Cycles: Another Example

41

Page 42: Designing a PRU Application - Texas Instrumentssoftware-dl.ti.com/public/hpmp/sitara/building_blocks...Step 2: Understand the Requirements Designing a PRU Application 1. Define the

Master Write “0” Master Write “1”

1 us 1 us

Bus master pulling low Bus slave pulling low Resistor pullup

Drive DigIO low

Setup & Enable 15 us Timer

Detect & Clear Event

Tri-state DigIO

Setup & Enable 45 us Timer

Detect & Clear Event

Setup & Enable 1 us Timer

Detect & Clear Event

Setup & Enable 1us Timer

Detect & Clear Event

60 us 45 us 15 us

Drive DigIO low

Setup & Enable 60 us Timer

Detect & Clear Event

Tri-state DigIO

Check bit value being written

Bit = 1

Bit = 0

Estimating PRU Cycles for Each Task in Flow

1 cycle

2 cycles

10 cycles + 60 us

1 cycle

2 cycles

10 cycles + 1 us

1 cycle

2 cycles

10 cycles + 15 us

1 cycle

2 cycles

10 cycles + 45 us

2 cycles

10 cycles + 1 us

Page 43: Designing a PRU Application - Texas Instrumentssoftware-dl.ti.com/public/hpmp/sitara/building_blocks...Step 2: Understand the Requirements Designing a PRU Application 1. Define the

1 cycle

2 cycles

10 cycles + 60 us

1 cycle

2 cycles

10 cycles + 1 us

1 cycle

2 cycles

10 cycles + 15 us

1 cycle

2 cycles

10 cycles + 45 us

2 cycles

10 cycles + 1 us

26 cycles + 61 us 38 cycles + 61 us

Summing the PRU Cycle Estimates

43

Drive DigIO low

Setup & Enable 15 us Timer

Detect & Clear Event

Tri-state DigIO

Setup & Enable 45 us Timer

Detect & Clear Event

Setup & Enable 1 us Timer

Detect & Clear Event

Setup & Enable 1us Timer

Detect & Clear Event

Drive DigIO low

Setup & Enable 60 us Timer

Detect & Clear Event

Tri-state DigIO

Check bit value being written

Bit = 1

Bit = 0

Page 44: Designing a PRU Application - Texas Instrumentssoftware-dl.ti.com/public/hpmp/sitara/building_blocks...Step 2: Understand the Requirements Designing a PRU Application 1. Define the

PRU Read Latencies: Internal vs External MMRs

Table 1: PRU-ICSS MMRs

MMRs Read Latency

( PRU cycles @ 200MHz )

L3OCMC 27

SRAM_INT 36 DDR 45 EDMA_TPCC 41 PWMSS 38 UART 34 DMTIMER 34 WDT 38 RTC 62 I2C 34

McASP 42

McSPI 34 DCAN 40 GPIO 34 ADC 42 LCDC 29 Ethernet 41 USB 36 MMC 36 EMIF 36 GPMC 38 PRCM 88 Control 34

Table 2: SoC MMRs

MMRs Local MMR Access

( PRU cycles @ 200MHz )

Global MMR Access ( PRU cycles @ 200MHz )

PRU R31 (GPI) 1 N/A PRU CTRL 4 36

PRU CFG 3 35

PRU INTC 3 35

PRU DRAM 3 35 PRU Shared DRAM 3 35 PRU ECAP 4 36 PRU UART 14 46 PRU IEP 12 44

Note: Latency values listed are “best-case” values.

44 http://processors.wiki.ti.com/index.php/PRU_Read_Latencies

Page 45: Designing a PRU Application - Texas Instrumentssoftware-dl.ti.com/public/hpmp/sitara/building_blocks...Step 2: Understand the Requirements Designing a PRU Application 1. Define the

Step 7: Assess Application Feasibility

Designing a PRU Application

1. Define the application

4. Analyze available SoC resources

5. Architect PRU firmware & ARM code

6. Estimate number of PRU cycles required

7. Assess application feasibility

3. Plan system-level data flow

2. Understand the requirements

8. Start coding

Page 46: Designing a PRU Application - Texas Instrumentssoftware-dl.ti.com/public/hpmp/sitara/building_blocks...Step 2: Understand the Requirements Designing a PRU Application 1. Define the

Assess Application Feasibility • Compare PRU Cycle Estimate from Step 6 & the timing requirements of the application.

• Return to previous step and redesign, if PRU Cycle Estimate is greater than (or only marginally less than) timing requirements of the application.

• Redesign examples: – Step 5: Is there a more efficient way to architect the PRU firmware? – Step 4: Would a different resource consume less PRU cycles? – Step 3: Is this application best suited for the PRU? Or can the tasks be redistributed

across multiple PRU cores or other processors? – Step 1: Can the application requirements (i.e. baud rate, number of peripherals

being emulated, etc.) be relaxed?

46

Page 47: Designing a PRU Application - Texas Instrumentssoftware-dl.ti.com/public/hpmp/sitara/building_blocks...Step 2: Understand the Requirements Designing a PRU Application 1. Define the

Compare Estimates to Requirements Reset & Present Pulse

Skip ROM & Convert T cmd

Reset & Present Pulse

Skip ROM & Read SPAD cmd

Read 72 bits

Calculate CRC

Check CRC value

Event to Master

PRU Cycle Estimate

~ 8.232 ms + change

Application Requirement

3 s

47

Page 48: Designing a PRU Application - Texas Instrumentssoftware-dl.ti.com/public/hpmp/sitara/building_blocks...Step 2: Understand the Requirements Designing a PRU Application 1. Define the

Step 8: Start Coding

Designing a PRU Application

1. Define the application

4. Analyze available SoC resources

5. Architect PRU firmware & ARM code

6. Estimate number of PRU cycles required

7. Assess application feasibility

3. Plan system-level data flow

2. Understand the requirements

8. Start coding

Page 49: Designing a PRU Application - Texas Instrumentssoftware-dl.ti.com/public/hpmp/sitara/building_blocks...Step 2: Understand the Requirements Designing a PRU Application 1. Define the

Start Coding! ARM SoC

Cortex A8

DS18B20

Temp Sensor

PRU0 (Slave) Configure IEP Timer & DigIO

Reset & Present Pulse Skip ROM & Convert T cmd

Reset & Present Pulse Skip ROM & Read SPAD cmd

Read 72 bits

Device Init, Pin Muxing PRU Code Load

1-wire

PRU1 (Master)

Configure INTC & eCAP Timer

Wait for interrupts

Event to Slave eCAP event

Wait for interrupts

Calculate CRC Check CRC value

PRU slave event

Toggle LEDs Compare temp values

Event to Master

Event to Master

Page 50: Designing a PRU Application - Texas Instrumentssoftware-dl.ti.com/public/hpmp/sitara/building_blocks...Step 2: Understand the Requirements Designing a PRU Application 1. Define the

50

For More Information • Visit the PRU-ICSS Wiki:

– http://processors.wiki.ti.com/index.php/PRU-ICSS

• Download the PRU tools:

– PRU Software Package http://www.ti.com/tool/pru-swpkg – PRU CGT (Code Gen Tools) available thru CCS6 app center – Linux drivers for interfacing with PRU available in Processor SDK

• Implement the PRU labs *: – http://processors.wiki.ti.com/index.php/PRU_Training:_Hands-on_Labs

• Order the PRU Cape:

– http://www.ti.com/tool/PRUCAPE http://processors.wiki.ti.com/index.php/PRU_Training:_Hands-on_Labs

• Support: http://e2e.ti.com

* includes source code for the Temperature Sensor application