Hello… I am working with a Zynq board, with an AMP configuration (Linux on CPU0 and FreeRTOS on CPU1).
So far, I am able to write (trough Linux) a binary file to a specific memory location, but what I really need to do is to execute the binary file from FreeRTOS.
I don’ know if I should create a task for reading the written data, or if its possible to jump to this memory location, execute the written script and return to my task.
FreeRTOS applications are statically linked. There is no way of dynamically linking to an external executable. If the external executable was position independent then you could manually jump to that address, but would also have to manage the jump back.
Hello Richard…
Thank you for answering so quickly…
Just for being clear…. If I create a position independent executable… it would be possible to jump to the memory location where It is written and execute it?…
I know I have to do something to jump back…
Thank you! … I have to start this from scratch and I am a bit lost!
Hello,
I want to warm up this topic, because Im also working on a configuration like @mmsanchez (Ubuntu 20.04 on CPU0 and FreeRTOS on CPU 3).
Im interested in the solution. @mmsanchez:
What did you do to load a programm dynamically?
I want to write/compile/… code on the linux-CPU (or load an executable from network) and afterwards load the executbale with the FreeRTOS CPU to execute it. (Instead of rebooting the whole board everytime)
Thank you in advance
This seems more like a question for your hardware vendor - can you load a bare-metal binary to the other CPU and run it? If you are able to do so, you should be able to use a FreeRTOS application as well.
Thank you for your reply.
I use u-boot as a bootloader, which can read elf-files. The bin-files are no longer used in the boot process.
I can put an FreeRTOS-ELF-File on the boot partition and grab it while boot-process, so it can be executed.
The application is therefore statically linked with the FreeRTOS in the ELF-file.
My question is, if I can seperate the application from the OS, so i dont have to boot everytime I changed my application-code.
Are you asking if you can separately compile FreeRTOS application and load it over FreeRTOS like a Linux application? There is no 1:1 mapping with Linux as there is no loader. An approach you can try is - build FreeRTOS and application as 2 separate binaries and tell the application the location of FreeRTOS APIs. Take a look at the approach I mentioned here - Binary partitioning - #3 by aggarg