Sorry I havenāt looked into loading firmware on the R5ās to muchā¦ but that might be how those 2 specific R5 in lockstep mode ends up looking in remoteprocā¦
Your post got me interested in this and I just happened to have downloaded the Ref Manual for J721E/TDA4VM . So I started going down the rabbit hole.
It appears remoteproc16 - remoteproc19 are the (4) R5F cores running in split mode on the main domain (two, 2-core clusters each running individually).
The single remoteproc15 (bus@28380000) appears to be the one from the cluster on āMCU islandā
According to the Ref sheets, any cluster may be run optionally individually in āsplitā mode, or ālockstepā mode, where one core checks the other for errors. In which case the second is not available for other tasks.
This core mode configuration is done at boot time.
For the cluster on the MCU domain, lockstep or split mode is set at the CTRLMMR_MCUSEC_CLSTR0_CFG Register (Physical address 45A50040h)
If readonly bit 3 on this register is set, then the device is lockstep capable. By setting bit 0, the cores will go to lockstep mode.
The default value of bit zero is set by an e-fuse (couldnāt find what that default is)
Here is the interesting part however; the MCU domain is started directly and separately by the DMSC via MCU ROM code before the main domain and OS etc. even start!
So does this mean that the mode must be selected by generated MCU ROM code rather than Linux? I wonder if there will be a way to halt, reconfigure, and restart the MCU side after Linux is running?
I guess we will see. Pretty cool how much stuff is on this chip!
Just found this. Looks like they have been working on a really great remoteproc driver for the R5 cores that will handle configuration and start/stop of cores in both split and lockstep modes.
Just as others have speculated, an R5 cluster operating in lockstep will appear as a single remoteproc instance:
āThe subsystem is represented as a single remoteproc in LockStep mode, and
as two remoteprocs in Split mode.ā
A good brief description of the MCU R5 cores can be found in section:
ā1.4.1 MCU Arm Cortex-R5F Processorā
An interesting description of the boot sequence is covered in Chapter 4. I was surprised how the boot sequence has become much more complex than older devices. Itās worth reviewing and becoming familiar with.
The registers of interest are in āJ721E_registers1.pdfā see section 3 and 4. Of course the remoteproc drivers will abstract all this required configuration away, but again itās interesting to see how it all works!
would like to download sprui1c ā¦ do you have a link?
Iād be interested in any documentation regarding this new board, particularly TRM
As far as the 12 pru stuff looking good, Iām dubious. what is the confidence level of this assertion? BeagleBoard.org - ai-64 asserts 2x 6-core Programmable Real-Time Unit and Industrial Communication SubSystem (PRU-ICSSG). are there any supporting references?
SPRSP36J page 1 ā no mention of PRU feature
SPRSP36J page 13 ā PRU_ICSSG0 and PRU_ICSSG1 are not available on this device. The prg* signals should not be used. Those pins can be used for other functions.
SPRSP36J page 114 ā 6.3.23 PRU_ICSSG [Currently Not Supported]
Does the PRU-ICSSG exist on the BBAI-64? The answer is it depends. I spent many hours sorting this issue out. Short answer: if your BBAI-64 is shipped with prototype silicon (part numbers beginning with XJ721E) then yes, this is a āfull-featuredā device and the PRU-ICSSG should be present (but beware bugs mentioned in the silicon errata). If your BBAI-AI is shipped with production silicon (part numbers beginning with TDA4VM) then no, none of these production devices have the PRU-ICSSG enabled. I have no idea why that is. Bugs? Marketing? Who knowsā¦ But I was pretty discouraged when I found out.
While the thought of 12 pru has my mouth watering, Iām no where near the āpioneerā skill levelā¦ it has taken me 8 years to be competent with the AM3358 (BBB)ā¦ without AT LEAST the level of documentation necessary to update prudebug download | SourceForge.net to use this board, Iām going to wait.
still , and always interested in found documentation
on BBB AM335X, remoteproc0 is the ARM processor, remoteproc1 is PRU0 and remoteproc2 is PRU1. So ā¦ on BBB at least, your test would not reference a PRU
root@bbb42:/service/ILI9341# ls -l /sys/class/remoteproc/
total 0
lrwxrwxrwx 1 root root 0 Jun 25 14:45 remoteproc0 ā ā¦/ā¦/devices/platform/ocp/ocp:l4_wkup@44c00000/44d00000.wkup_m3/remoteproc/remoteproc0
lrwxrwxrwx 1 root root 0 Jun 25 14:46 remoteproc1 ā ā¦/ā¦/devices/platform/ocp/4a326004.pruss-soc-bus/4a300000.pruss/4a334000.pru/remoteproc/remoteproc1
lrwxrwxrwx 1 root root 0 Jun 25 14:46 remoteproc2 ā ā¦/ā¦/devices/platform/ocp/4a326004.pruss-soc-bus/4a300000.pruss/4a338000.pru/remoteproc/remoteproc2
root@bbb42:/service/ILI9341#
no way for me to tell if this is so on new boardā¦ lots of processors.