Runtime instantiation of topology #3665
Replies: 1 comment 2 replies
-
Hi @zimri-leisher ! I actually looked at this exact scenario in my proceedings paper published at SmallSat last year. The On-Mission Software Patching section under USE-CASE VIGNETTES is the section that touches on this concept. In a nutshell, cFS does this by using a project-provided startup script to define the Apps the are loaded at startup. The mechanisms are a bit less complicated in cFS, because the message connectivity responsibility is offloaded from the main project description to the individual Apps. In cFS, the different apps are loaded, as specified in the startup scripts, from separate libraries on the storage media. They can even be unloaded and re-loaded on-demand from the ground operator. At the time of writing, I had inquired about this possibility and received a verbal response that doing this sort of thing is certainly possible within F Prime, but the engineering required to do so was prohibitively expensive for the core team to achieve. Reconfiguration of topology was a topic that also came up, and would be quite costly from an engineering perspective. I would assume this sentiment holds, but I invite folks from JPL to correct me if that is not true. Specifically about the upload bandwidth point: There are already two normal albeit under-emphasized methods to reduce the upload size.
The second approach is the one we used at GT while developing software for the VISORS mission. Effectively each component is sequestered into its own lib file. Now for the juicy stuff: While I am not of the professional opinion that the F Prime core team should take on this responsibility, I personally find it intriguing. In particular a well thought-out approach to dynamically assembling a topology could open the door to a binary component "app store". The critical metadata is already there in the FPP files. A little bit of version and compatibility info added to that would let a developer/team build one core binary library per architecture, and then go off to build deployments by just defining a topology and generating the corresponding GDS dictionary. I think the biggest technical challenge here is that you need most of an FPP interpreter to assemble the topology per spec, and that would be an alternate implementation [in C++] to the Scala implementation. Not ideal from a maintenance perspective. You might be able to get away with a partial implementation because it does not need to feed an autocoder, but you might be close enough that its really a whole implementation. Anyway, if you embark on this particular journey, please reach out because I would be interested in seeing it succeed and I would love to think though the requirements to get it there. |
Beta Was this translation helpful? Give feedback.
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
-
Hello,
I've been thinking recently about the feasibility of instantiating an fprime topology at runtime. New component instances, new connections, etc could be read from a json file at the start of the application.
While it goes against the design of the fpp modeling language, I don't see why this shouldn't be possible. You can already easily instantiate/connect components at runtime in arbitrary ways, although you might want an autocoder to help you do it.
This would be extremely useful in many different scenarios. It's primarily useful for how it would speed the development workflow up.
Pros:
Cons:
Any thoughts on this? Has this been tried before? Do you see any more pros/cons?
Beta Was this translation helpful? Give feedback.
All reactions