Skip to content

Commit 426852f

Browse files
h-nagallapraneethbajjuri
authored andcommitted
feat(U-Boot): Add support for PRU early boot
Add PRU core to early boot supported remote cores for SITARA devices. Signed-off-by: Hari Nagalla <hnagalla@ti.com>
1 parent f719c97 commit 426852f

1 file changed

Lines changed: 103 additions & 21 deletions

File tree

source/linux/Foundational_Components/U-Boot/UG-RemoteProc.rst

Lines changed: 103 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -5,11 +5,20 @@ This section documents how to initialize, load, start and stop remote cores from
55
Following remotecores support is available in U-boot for K3 devices. However the actual remote
66
cores deployed depends on the specific SoC used:
77

8-
- Cortex-R5F in Lockstep more
9-
- Cortex-R5F in split mode
10-
- Cortex-M4F
11-
- C66x DSP
12-
- C71x DSP
8+
.. ifconfig:: CONFIG_sdk in ('SITARA')
9+
10+
- Cortex-R5F in split mode
11+
- Cortex-R5F in single core mode
12+
- Corext-M4F
13+
- C71x DSP
14+
- PRU core
15+
16+
.. ifconfig:: not CONFIG_sdk in ('SITARA')
17+
18+
- Cortex-R5F in Lockstep mode
19+
- Cortex-R5F in split mode
20+
- C71x DSP
21+
- C66x DSP
1322

1423
Initialization
1524
^^^^^^^^^^^^^^^
@@ -31,18 +40,44 @@ The below command will initialize just the given remote core
3140
3241
The below command lists all the available/initialized remotecores in a system.
3342

34-
.. code-block:: console
43+
.. ifconfig:: not CONFIG_sdk in ('SITARA')
44+
45+
.. code-block:: console
46+
47+
=> rproc list
48+
0 - Name:'r5f@41000000' type:'internal memory mapped' supports: load start stop reset
49+
1 - Name:'r5f@41400000' type:'internal memory mapped' supports: load start stop reset
50+
2 - Name:'r5f@5c00000' type:'internal memory mapped' supports: load start stop reset
51+
3 - Name:'r5f@5d00000' type:'internal memory mapped' supports: load start stop reset
52+
4 - Name:'r5f@5e00000' type:'internal memory mapped' supports: load start stop reset
53+
5 - Name:'r5f@5f00000' type:'internal memory mapped' supports: load start stop reset
54+
6 - Name:'dsp@4d80800000' type:'internal memory mapped' supports: load start stop reset
55+
7 - Name:'dsp@4d81800000' type:'internal memory mapped' supports: load start stop reset
56+
8 - Name:'dsp@64800000' type:'internal memory mapped' supports: load start stop reset
57+
58+
59+
.. ifconfig:: CONFIG_sdk in ('SITARA')
3560

36-
=> rproc list
37-
0 - Name:'r5f@41000000' type:'internal memory mapped' supports: load start stop reset
38-
1 - Name:'r5f@41400000' type:'internal memory mapped' supports: load start stop reset
39-
2 - Name:'r5f@5c00000' type:'internal memory mapped' supports: load start stop reset
40-
3 - Name:'r5f@5d00000' type:'internal memory mapped' supports: load start stop reset
41-
4 - Name:'r5f@5e00000' type:'internal memory mapped' supports: load start stop reset
42-
5 - Name:'r5f@5f00000' type:'internal memory mapped' supports: load start stop reset
43-
6 - Name:'dsp@4d80800000' type:'internal memory mapped' supports: load start stop reset
44-
7 - Name:'dsp@4d81800000' type:'internal memory mapped' supports: load start stop reset
45-
8 - Name:'dsp@64800000' type:'internal memory mapped' supports: load start stop reset
61+
.. code-block:: console
62+
63+
=> rproc list
64+
0 - Name:'m4fss@5000000-bus@4000000' type:'internal memory mapped' supports: load start stop
65+
1 - Name:'r5f@78000000-r5fss@78000000' type:'internal memory mapped' supports: load start stop reset
66+
2 - Name:'r5f@78200000-r5fss@78000000' type:'internal memory mapped' supports: load start stop reset
67+
3 - Name:'r5f@78400000-r5fss@78400000' type:'internal memory mapped' supports: load start stop reset
68+
4 - Name:'r5f@78600000-r5fss@78400000' type:'internal memory mapped' supports: load start stop reset
69+
5 - Name:'pru@34000-icssg@30000000' type:'internal memory mapped' supports: load start stop
70+
6 - Name:'rtu@4000-icssg@30000000' type:'internal memory mapped' supports: load start stop
71+
7 - Name:'txpru@a000-icssg@30000000' type:'internal memory mapped' supports: load start stop
72+
8 - Name:'pru@38000-icssg@30000000' type:'internal memory mapped' supports: load start stop
73+
9 - Name:'rtu@6000-icssg@30000000' type:'internal memory mapped' supports: load start stop
74+
10 - Name:'txpru@c000-icssg@30000000' type:'internal memory mapped' supports: load start stop
75+
11 - Name:'pru@34000-icssg@30080000' type:'internal memory mapped' supports: load start stop
76+
12 - Name:'rtu@4000-icssg@30080000' type:'internal memory mapped' supports: load start stop
77+
13 - Name:'txpru@a000-icssg@30080000' type:'internal memory mapped' supports: load start stop
78+
14 - Name:'pru@38000-icssg@30080000' type:'internal memory mapped' supports: load start stop
79+
15 - Name:'rtu@6000-icssg@30080000' type:'internal memory mapped' supports: load start stop
80+
16 - Name:'txpru@c000-icssg@30080000' type:'internal memory mapped' supports: load start stop
4681
4782
4883
Loading
@@ -51,13 +86,24 @@ Loading
5186
Once Initialized, remotecores can be loaded with a relevant image. Make sure
5287
image is loaded only after initializing the core.
5388

54-
.. code-block:: console
89+
.. ifconfig:: not CONFIG_sdk in ('SITARA')
90+
91+
.. code-block:: console
5592
56-
=> load mmc 1:2 0x90000000 /lib/firmware/j7-main-r5f0_0-fw
57-
2536540 bytes read in 112 ms (21.6 MiB/s)
58-
=> rproc load 2 0x90000000 0x${filesize}
59-
Load Remote Processor 2 with data@addr=0x90000000 2536540 bytes: Success!
93+
=> load mmc 1:2 0x90000000 /lib/firmware/j7-main-r5f0_0-fw
94+
2536540 bytes read in 112 ms (21.6 MiB/s)
95+
=> rproc load 2 0x90000000 0x${filesize}
96+
Load Remote Processor 2 with data@addr=0x90000000 2536540 bytes: Success!
6097
98+
.. ifconfig:: CONFIG_sdk in ('SITARA')
99+
100+
.. code-block:: console
101+
102+
=> load mmc 1:2 0x90000000 /lib/firmware/am64-mcu-m4f0_0-fw-sec
103+
90036 bytes read in 13 ms (6.6 MiB/s)
104+
=> rproc load 0 0x90000000 0x${filesize}
105+
Authentication passed
106+
Load Remote Processor 0 with data@addr=0x90000000 90036 bytes: Success!
61107
62108
Starting
63109
^^^^^^^^^
@@ -80,6 +126,42 @@ A running remotecore can be stopped using the following command.
80126
Make sure all the commands are run in the above given sequence. Currently IPC
81127
is not supported in U-boot.
82128

129+
.. ifconfig:: CONFIG_sdk in ('SITARA')
130+
131+
PRU Core Attachment
132+
^^^^^^^^^^^^^^^^^^^
133+
134+
After the PRU core is booted from U-Boot, it is in detached state. Verify the state
135+
from linux console using the below command:
136+
137+
.. code-block:: console
138+
139+
root@am64xx-evm:~# cat /sys/class/remoteproc/remoteproc5/state
140+
detached
141+
142+
To attach to the PRU core, use the below command:
143+
144+
.. code-block:: console
145+
146+
echo "start" > /sys/class/remoteproc/remoteproc5/state
147+
148+
Upon successful attachment, the kernel will display messages like below:
149+
150+
.. code-block:: console
151+
152+
[ 203.179065] remoteproc remoteproc5: attaching to 30034000.pru
153+
[ 203.198898] virtio_rpmsg_bus virtio5: rpmsg host is online
154+
[ 203.198942] virtio_rpmsg_bus virtio5: creating channel rpmsg-raw addr 0x1e
155+
[ 203.199828] rproc-virtio rproc-virtio.7.auto: registered virtio5 (type 7)
156+
[ 203.199849] remoteproc remoteproc5: remote processor 30034000.pru is now attached
157+
158+
Verify PRU core state from linux console :
159+
160+
.. code-block:: console
161+
162+
root@am64xx-evm:~# cat /sys/class/remoteproc/remoteproc5/state
163+
attached
164+
83165
Lockstep and Split mode
84166
^^^^^^^^^^^^^^^^^^^^^^^
85167

0 commit comments

Comments
 (0)