Is it possible to run arbitrary user programs

robertmyken wrote on Thursday, January 21, 2010:

Hello all,

Is it possible to have freertos running on a target and have some kind of hook on which an user can attach his own program/task?

Basically I want the ability of the RTOS to fire-up any program or task provided on a memory-carrier (stick, SD, upload, want-ever).

Any help appreciated.
Regards, Robert.

davedoors wrote on Thursday, January 21, 2010:

As it comes everything is statically linked. I’m sure you could write something to do what you want but I’m not aware of any examples.

dimasusl wrote on Thursday, November 04, 2010:

I have the same question as asked Robert. Has anyone tried to do it, whether in the context of a problem? Is there any working examples?

davedoors wrote on Thursday, November 04, 2010:

This is not the way FreeRTOS is intended to be used, as I said before normally everything is statically linked, but I’m sure what you want would be possible somehow. I have just seen in the other thread the suggestion of having a jump table to API functions (I think this is how SafeRTOS works when it is fixed in ROM) but that still leaves questions about how you are going to compile the external programs that you want to load in dynamically. Would you compile them as libraries with an entry point that was not called main()? Would you compile them as stand alone applications that do contain a main(). In both cases how would you manage their relocatability, you could not used a fixed linker script.

Another option would be to have a loader module that parsed a binary and fixed up addresses after loading into into the CPU memory space.

How do these things normally work? I think they use a separate loader module but I don’t really know.

dimasusl wrote on Thursday, November 04, 2010:

As for me, i just want to make something like in CircleOS

davedoors wrote on Thursday, November 04, 2010:

Can you describe what that does and how it works?

dimasusl wrote on Thursday, November 04, 2010:

Here you can look documentation on CircleOS http://www.stm32circle.com/circleos_doc/index.html
Two my last projects were with FreeRTOS, and i like it to use. In new project on LPC1768
I need to do to support FreeRTOS with LCD + SD + some more functions to work with the hardware of the processor, as well as the end user to be able to compile in a separate draft your application and run it as obvious as a separate task

PS Last year I had experienced the implementation of this approach with STM32+RealView, not well as i think. Now i try to do this with LPC1768 port with GCC

davedoors wrote on Thursday, November 04, 2010:

I’m not going to spend my time reading documentation to help you with your work. Can you answer my question? If not my input to this thread is ending.

dimasusl wrote on Thursday, November 04, 2010:

It’s hard to say in two word, but in general - there is CircleOS that manages the hardware resources of the device based on STM32, and allows the way to the end user to run his application located in defined FLASH regions. These applications are compiled separately (in the project hooked elf file from CircleOS) into binary files, the only thing - they contain the required functions for initializing and running. Then you can load bin file into one of special flash region, and run it from CircleOS main menu.
PS Pointing out this link to a site with documentation, I was not going to force you to spend your precious time, just showed what is at stake. And the goal is not to obtain a copy of this in freertos, but simply to show an embodiment of the system.