Issue with new linkerfile structure and rpmsg


The new linkerfile structure, that puts interrupts in OCRAM_S makes the str_echo_example for rpmsg fail on colibri IMX7. When I compile the example with MCIMX7D_M4_tcm.ld, and do modprobe imx_rpmsg_tty the M4 is not found.

 root@colibri-imx7:~# modprobe imx_rpmsg_tty                                                   

Using the old file MCIMX7D_M4_tcm_bin.ld works fine.

root@colibri-imx7:~# modprobe imx_rpmsg_tty                                                      
[   14.389992] imx_rpmsg_tty rpmsg0: new channel: 0x400 -> 0x0!                                  
[   14.400562] Install rpmsg tty driver!

Do you have an idea why this is and how this could be fixed?

The new linkerfile structure was added to git in commits after
“commit virtio: Redefine vring_avail_event Colibri-iMX7-M4_FreeRTOS_1.2-20170407”.



Just compiled latest state of colibri-imx7-m4-freertos-v8 branch, built the example under examples/imx7_colibri_m4/demo_apps/rpmsg/str_echo_freertos/armgcc and started the firmware using:

tftp rpmsg_str_echo_freertos.elf
bootaux 0x80800000

Then started Linux 2.7b3 (with UART_B disabled). It seems to work for me:

[   18.688301] imx_rpmsg_tty rpmsg0: new channel: 0x400 -> 0x0!
[   18.694394] Install rpmsg tty driver!

From what I can tell the new linker file which puts the interrupt vectors in OCRAM_S has been added with the commit use OCRAM_S for interrupt vectors by default, which has been added after the git tag Colibri-iMX7-M4_FreeRTOS_1.2-20170407… Note that loading the interrupt vectors in OCRAM_S needs the elf firmware format!