-
Notifications
You must be signed in to change notification settings - Fork 33
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Open AMP and TTC issue on bare-metal app #3
Comments
when you load the application from jtag, the other core is not running Linux? It can be related to this issue, TTC timers are by default in the Linux device tree, and by default they are not enabled, the status in the Linux device tree is "disabled", and the Linux common clock framework will disable the unused clocks, you can add "clk_ignore_unused" to the kernel command line |
When I load application from jtag linux is not running. In the dts the ttc are configured as follow:
I've also add clk_ignore_unused to bootargs, but nothing change. From bare metal application I've tried to use TTC3/TTC4/TTC5 but as soon as the firmware start, the board hangs. Any other advice ? Thanks and regards |
I'd like to add some information : When I use the flag USE_AMP=1 in the bare metal application, it doesn't work in case the application is loaded using jtag (no linux running). If linux running do I need to initialize something to enable timer trigger ? Thanks and regards |
i think you can checked if you are able to get the interrupt, just when using USE_AMP=1, the baremetal will not initialize the gic. It assumes the other already did. in jtag mode, you will need to load the Core0 first with linux so that Linux will initialize the gic, then you can load core1. |
I'm not able to get any interrupts ( not only the timer interrupt). |
if you want the core running OpenAMP works first, you will need to initialize the GIC, however, when Linux boots it will always initialize GIC, and thus, you will not be able to receive interrupt in this case. But if Linux boots first, you should not need to initialize the GIC at all. If you don't use OpenAMP application, are you able to receive interrupt when loading from Linux? We haven't seen this issue before. In order to load this arbitrary application from Linux, you can update the zynq_remoteproc driver to allow empty rsc table application, please refer the implementation of zynqmp_r5_remoteproc driver: https://github.com/Xilinx/linux-xlnx/blob/master/drivers/remoteproc/zynqmp_r5_remoteproc.c#L533 |
We are also experiencing this problem now. Is there more documentation for We are building an application for the ZCU102. We're running Linux on the 4-core APU, and a bare metal application on RPU core 0. We will also run another bare metal application on the RPU core 1, but for now, we can ignore that core. We have been able to build and run the RPU application using OpenAmp remote proc messaging between the APU and RPU. We'd like to also use TTC timer interrupts in that application. We can build and run the TTC test applications, but when we try to combine OpenAmp and TTC timers in one bare metal application we also see the What is the correct way to resolve this problem? |
This is for Zynq, when two A9 cores run in AMP mode, the one which is on later needs to define USE_AMP=1 to skip some initialization as they share the same GIC and L2 cache.
It looks like the TTC has been started by other users. Are you sharing the TTC with APU or another RPU?
check if TTC is shared by other cores, or if your application have started the TTC timer. E.g. if you are using FreeRTOS on RPU, FreeRTOS itself uses TTC timer. |
Hi all,
I'm working with openAMP and zynq.
I'm having issue using peripheral from remote proc (CPI 1) bare metal applciation. In particular seems that TTC0, TTC1 and TTC2 initialization fail.
I'am able to use them successfully when I program Core 1 from JTAG. If I load the firmware using openAMP (zynq_remoteproc module) the bare metal app fail to initialize the TTC0 and TTC1 and TTC2.
The error is XST_DEVICE_IS_STARTED. Does it mean that I'm not able to use TTC0/1/2 from bare metal ?
Do you have any advice ?
Best Regards,
Giulio Presazzi
The text was updated successfully, but these errors were encountered: