B4R Question Arduino Portenta H7 board and B4R


New Member
I saw a post where B4R would not be able to create apps to run on both cores of an ESP32 board.

Arduino now has a new board, the Portenta H7 which as two ARM CPU's, one an M7 (with double floating point) and the other an M4 (with single floating point).
The board appears to be able to use Arduino C sketches running on top of MBED OS.

Would it be possible to use B4R to create code for each CPU separately on this board ?

If the problem is with the library code in B4R, then if one avoided using the libraries with B4R which can't handle the two CPU situation, could one use B4R and build new libraries to replace them ?

If I read the Arduino description correctly, it appears the board keeps the two CPU's running separately in some way:

Two Parallel Cores

H7's main processor is the dual core STM32H747 including a Cortex® M7 running at 480 MHz and a Cortex® M4 running at 240 MHz. The two cores communicate via a Remote Procedure Call mechanism that allows calling functions on the other processor seamlessly. Both processors share all the in-chip peripherals

The fact that it requires the Remote Procedure Call mechanism to communicate between the two cores would seem to imply that the run totally separately and B4R's single thread design would not be a problem.

There are two MPU's (memory protection units) in this board and you supposedly can define what resources (ie. ports, etc.) each CPU core can work with. As long as each CPU was allocated different resources, in theory each CPU could run a B4R program.

I may be wrong and I am not a hardware expert, so wanted to post this question to get some feedback.

Note: For your info I am an advanced WIN32 programmer who is dabbling into embedded stuff for a client and looking for a variety of toolchains to work with different devices. I have been programming for over 30 years. I don't mind coding at a low level if I have too, but still prefer easy to use programming tools and languages. For example on Windows I actually use Powerbasic and talk directly to the WIN32 API. No dot.net. No MFC. No ATL. Just pure WIN32.