Dual core Lockstep mode on colibri IMX7

Hello,
I want to implement a dual-core lockstep on the colibri IMX7D 1GB.

I want to implement the dual-core lockstep (DCLS) with two A7 CPU’s, one M4 CPU and the RAM or an external memory (if the RAM offers not enough memory space). The objective of this project is to understand how a dual-core lockstep is implemented (if it works slow it’s not a problem, but it has to work).

LSM_1

The DCLS is a safety system on embedded systems. We have two CPU’s which are working in parallel and they’re executing exactly the same set of operations at the same time. In this set of operations we have verification points. If a verification point is achieved, the two CPU’s are stopped and the Checker module compares the outputs of the CPU’s and also their context(General purpose registers and others), which are saved in the RAM or an external memory at different addresses. When these outputs and contextes are the same we can execute the outputs of this CPU’s, if not then we have to repeat the set of operations.

So I thought that the colibri IMX7 satisfy my needs. CPU 1 and 2 are the A7 cores and the checker module is the M4 core. But I have problems with the memory.
I don’t understand how the memory for the A7 cores are managed and how I could change this, if it’s even possible.
Also I would like to know your opinion about this project. Is a DCLS implementable on the colibri IMX7D 1GB?

kind regards
Julien

Hi @Julien1!

That is quite an interesting (and complex :stuck_out_tongue: ) question!

We don’t know about any use case that tried to accomplish something similar to this.

To go as deep as your needs, the best place to ask about iMX7 architecture is really the NXP forums and the SoC’s documentation (also from NXP).

I would guess that it is implementable, but it is hard to be sure. Maybe going fully bare-metal you would have all the control you need to make the M4 read (directly or indirectly) all the A7s’ context at a given time.

Furthermore, maybe this GitHub - siemens/jailhouse: Linux-based partitioning hypervisor repository might be helpful for your use-case. But be aware that there is no knowledge about it. Not even if it would work.

Best regards,