cancel
Showing results for 
Search instead for 
Did you mean: 

OpenAMP FreeRTOS PingPong demo isn't working on the Nucleo-H745ZI-Q with the M4 getting hung waiting for the resource table to be configured by the M7

caffeinated capybara
Associate II

Background

Firmware STM32Cube FW_H7 V1.9.0

MCU Reference STM32H745ZITx

Toolchain STM32CubeIDE

I created a new STM32 project targeting the Nucleo-H745ZI-Q enabling the OpenAMP Middleware along with FreeRTOS. Referencing the project for the Disco board, I copied the software over and making sure to enable the what I needed to in hal conf as well and made sure the correct compiler symbols were defined.

The M7 seems to be configured properly and running.

The M7 is able to hold wake the M4 on reset via HSEM event and go through it's openamp initialization to wait at OPENAMP_Wait_EndPointready

On the M4 side it's stuck at

```while(resource_table.vring1.da != VRING_RX_ADDRESS)```

even though I stepped through the M7 code to see that it did do that assignment.

I'm wondering if there is some linker script problem I've got.

For some background on that, I did see the note in the openamp_conf.h to add the relevant lines in Memory to define the OPEN_AMP_SHMEM location and lengths along with the start and end regions.

I noticed in the STM32H747I-DISCO application there was also the addition of

.openamp_section (NOLOAD) : {
     . = ABSOLUTE(0x38000000);
     *(.resource_table)  
  } >OPENAMP_RSC_TAB  AT > FLASH

in the Sections block of the .ld file for both the M7 and M4 assuming that is where the resource table is mapped to.

Is there something else I should be configuring for the H745ZI-Q? I've been pullin my hair out on this for some time now.

6 REPLIES 6
caffeinated capybara
Associate II

@Community member​ I see you're familiar with openamp and shed some light on other issues. Do you see anything that jumps out here or is there any more information I could provide?

Bouraoui Chemli
ST Employee

Hi @caffeinated capybara​ 

Is the Cortex-M7 data cache enabled or not?

Bouraoui

JSchn.4
Associate III

Hi there,

I am facing the same issue. Since we are working with CubeMX and with CMSIS V2. I have tried to port the example ( the project for the Disco board), into MX format (with .ioc file) and to shift it to CMSIS V2.

I get a clean compile, but the two cores are just not signaling each other. M4 waites for M7 and vice versa.

Enabling /Diaabling cache does not seem to make a difference.

I have enclosed my project for anyone who wants to have a look at the portation.

Any help, advice is highly appreciated!

Johannes

Hi @Bouraoui Chemli​ ,

I am having the same problem.

I want to get the example project ( the project for the Disco board) to work on my STM32H747i-DISCO board. The original code works fine, but I need to migrate it to CMSIS V2 and I want to manage the project with STM32CubeMX.

Therefore I have migrated the project (see attached file).

Now I do not get any messages across.

MBOX_Poll() returns ErrorCode 11 "No more processes".

I don't know where to search. Enabling the cache did not do the job.

Any help is highly appreciated!

Thanks a lot

Johannes

Hi @caffeinated capybara​ ,

did you get a response from ST? Did you get the problem fixed?

I am still looking for advice.

Thanks a lot!

Johannes

JSchn.4
Associate III

@Bouraoui Chemli​ , @caffeinated capybara​ 

No answer, neither from ST, nor from other community members.

This community does not seem to be very productive

OK, never mind....