Designing a PRU Application - Texas...
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](https://reader033.fdocuments.net/reader033/viewer/2022052816/60ab71987b8d1267710b6dfb/html5/thumbnails/1.jpg)
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](https://reader033.fdocuments.net/reader033/viewer/2022052816/60ab71987b8d1267710b6dfb/html5/thumbnails/2.jpg)
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](https://reader033.fdocuments.net/reader033/viewer/2022052816/60ab71987b8d1267710b6dfb/html5/thumbnails/3.jpg)
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](https://reader033.fdocuments.net/reader033/viewer/2022052816/60ab71987b8d1267710b6dfb/html5/thumbnails/4.jpg)
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](https://reader033.fdocuments.net/reader033/viewer/2022052816/60ab71987b8d1267710b6dfb/html5/thumbnails/5.jpg)
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](https://reader033.fdocuments.net/reader033/viewer/2022052816/60ab71987b8d1267710b6dfb/html5/thumbnails/6.jpg)
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](https://reader033.fdocuments.net/reader033/viewer/2022052816/60ab71987b8d1267710b6dfb/html5/thumbnails/7.jpg)
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](https://reader033.fdocuments.net/reader033/viewer/2022052816/60ab71987b8d1267710b6dfb/html5/thumbnails/8.jpg)
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](https://reader033.fdocuments.net/reader033/viewer/2022052816/60ab71987b8d1267710b6dfb/html5/thumbnails/9.jpg)
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](https://reader033.fdocuments.net/reader033/viewer/2022052816/60ab71987b8d1267710b6dfb/html5/thumbnails/10.jpg)
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](https://reader033.fdocuments.net/reader033/viewer/2022052816/60ab71987b8d1267710b6dfb/html5/thumbnails/11.jpg)
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](https://reader033.fdocuments.net/reader033/viewer/2022052816/60ab71987b8d1267710b6dfb/html5/thumbnails/12.jpg)
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](https://reader033.fdocuments.net/reader033/viewer/2022052816/60ab71987b8d1267710b6dfb/html5/thumbnails/13.jpg)
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](https://reader033.fdocuments.net/reader033/viewer/2022052816/60ab71987b8d1267710b6dfb/html5/thumbnails/14.jpg)
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](https://reader033.fdocuments.net/reader033/viewer/2022052816/60ab71987b8d1267710b6dfb/html5/thumbnails/15.jpg)
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](https://reader033.fdocuments.net/reader033/viewer/2022052816/60ab71987b8d1267710b6dfb/html5/thumbnails/16.jpg)
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](https://reader033.fdocuments.net/reader033/viewer/2022052816/60ab71987b8d1267710b6dfb/html5/thumbnails/17.jpg)
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](https://reader033.fdocuments.net/reader033/viewer/2022052816/60ab71987b8d1267710b6dfb/html5/thumbnails/18.jpg)
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](https://reader033.fdocuments.net/reader033/viewer/2022052816/60ab71987b8d1267710b6dfb/html5/thumbnails/19.jpg)
• 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](https://reader033.fdocuments.net/reader033/viewer/2022052816/60ab71987b8d1267710b6dfb/html5/thumbnails/20.jpg)
• 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](https://reader033.fdocuments.net/reader033/viewer/2022052816/60ab71987b8d1267710b6dfb/html5/thumbnails/21.jpg)
• 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](https://reader033.fdocuments.net/reader033/viewer/2022052816/60ab71987b8d1267710b6dfb/html5/thumbnails/22.jpg)
• 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](https://reader033.fdocuments.net/reader033/viewer/2022052816/60ab71987b8d1267710b6dfb/html5/thumbnails/23.jpg)
# 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](https://reader033.fdocuments.net/reader033/viewer/2022052816/60ab71987b8d1267710b6dfb/html5/thumbnails/24.jpg)
# 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](https://reader033.fdocuments.net/reader033/viewer/2022052816/60ab71987b8d1267710b6dfb/html5/thumbnails/25.jpg)
# 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](https://reader033.fdocuments.net/reader033/viewer/2022052816/60ab71987b8d1267710b6dfb/html5/thumbnails/26.jpg)
• 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](https://reader033.fdocuments.net/reader033/viewer/2022052816/60ab71987b8d1267710b6dfb/html5/thumbnails/27.jpg)
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](https://reader033.fdocuments.net/reader033/viewer/2022052816/60ab71987b8d1267710b6dfb/html5/thumbnails/28.jpg)
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](https://reader033.fdocuments.net/reader033/viewer/2022052816/60ab71987b8d1267710b6dfb/html5/thumbnails/29.jpg)
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](https://reader033.fdocuments.net/reader033/viewer/2022052816/60ab71987b8d1267710b6dfb/html5/thumbnails/30.jpg)
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](https://reader033.fdocuments.net/reader033/viewer/2022052816/60ab71987b8d1267710b6dfb/html5/thumbnails/31.jpg)
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](https://reader033.fdocuments.net/reader033/viewer/2022052816/60ab71987b8d1267710b6dfb/html5/thumbnails/32.jpg)
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](https://reader033.fdocuments.net/reader033/viewer/2022052816/60ab71987b8d1267710b6dfb/html5/thumbnails/33.jpg)
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](https://reader033.fdocuments.net/reader033/viewer/2022052816/60ab71987b8d1267710b6dfb/html5/thumbnails/34.jpg)
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](https://reader033.fdocuments.net/reader033/viewer/2022052816/60ab71987b8d1267710b6dfb/html5/thumbnails/35.jpg)
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](https://reader033.fdocuments.net/reader033/viewer/2022052816/60ab71987b8d1267710b6dfb/html5/thumbnails/36.jpg)
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](https://reader033.fdocuments.net/reader033/viewer/2022052816/60ab71987b8d1267710b6dfb/html5/thumbnails/37.jpg)
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](https://reader033.fdocuments.net/reader033/viewer/2022052816/60ab71987b8d1267710b6dfb/html5/thumbnails/38.jpg)
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](https://reader033.fdocuments.net/reader033/viewer/2022052816/60ab71987b8d1267710b6dfb/html5/thumbnails/39.jpg)
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](https://reader033.fdocuments.net/reader033/viewer/2022052816/60ab71987b8d1267710b6dfb/html5/thumbnails/40.jpg)
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](https://reader033.fdocuments.net/reader033/viewer/2022052816/60ab71987b8d1267710b6dfb/html5/thumbnails/41.jpg)
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](https://reader033.fdocuments.net/reader033/viewer/2022052816/60ab71987b8d1267710b6dfb/html5/thumbnails/42.jpg)
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](https://reader033.fdocuments.net/reader033/viewer/2022052816/60ab71987b8d1267710b6dfb/html5/thumbnails/43.jpg)
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](https://reader033.fdocuments.net/reader033/viewer/2022052816/60ab71987b8d1267710b6dfb/html5/thumbnails/44.jpg)
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](https://reader033.fdocuments.net/reader033/viewer/2022052816/60ab71987b8d1267710b6dfb/html5/thumbnails/45.jpg)
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](https://reader033.fdocuments.net/reader033/viewer/2022052816/60ab71987b8d1267710b6dfb/html5/thumbnails/46.jpg)
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](https://reader033.fdocuments.net/reader033/viewer/2022052816/60ab71987b8d1267710b6dfb/html5/thumbnails/47.jpg)
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](https://reader033.fdocuments.net/reader033/viewer/2022052816/60ab71987b8d1267710b6dfb/html5/thumbnails/48.jpg)
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](https://reader033.fdocuments.net/reader033/viewer/2022052816/60ab71987b8d1267710b6dfb/html5/thumbnails/49.jpg)
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](https://reader033.fdocuments.net/reader033/viewer/2022052816/60ab71987b8d1267710b6dfb/html5/thumbnails/50.jpg)
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