Hello Štěpán! :-) On Mon, May 26, 2025 at 10:38 PM Štěpán Pressl <nuttx.pressl.ste...@gmail.com> wrote: > > Dear NuttX community, > > I am delighted to announce I was accepted into the Google Summer of Code > event, participating in Firmware Upgrades over Silicon-Heaven Protocol for > NXboot Demonstrated on pysimCoder. > > I am writing this a bit late because I was finishing a lot of work at > university. But now that I have more time, I would like to introduce > related subjects and ask some questions as well.
Congratulations and big thank you for extending our beloved NuttX RTOS! :-) In case you need any info this dev@ mailing list is the best place to ask, if you have a specific task or problem then you may use GitHub Issues to mark then and then update progress :-) > Firstly, I want to congratulate Michal Matias, a colleague of mine who also > participates in NuttX GSoC. Congratulations as well and big thank you for the Mentors for taking the challenge and sharing your amazing projects with the NuttX community! :-) > The goal of this project is to leverage the Silicon Heaven (SHV) protocol. > This protocol was specified by the Czech company Elektroline, a.s. and it > is used for remote procedure calls. The protocol is fully open, as well as > the implementations in various programming languages, such as Python, Rust > and C. > > For example, see all implementations here: https://github.com/silicon-heaven > . > Documentation: https://silicon-heaven.github.io/shv-doc/. Sounds great! Please also remember to create a documentation on the NuttX part for people not familiar with that solution. Documentation is part of the nuttx repository and contains docs for the nuttx-apps part too :-) > The SHV protocol is also used in pysimCoder, a block diagram editor used to > create rapidly prototyped applications for control engineering purposes, > specifically for remote tuning of blocks' parameters (such as reference > values or values of PID controllers). This can simplify the design of the > control application. The work was carried out by Michal Lenc, a former GSoC > contributor and now my mentor. > > The goal of my project is to integrate the SHV protocol fully in NuttX. > Despite the existing C SHV implementation, I aim to use the pieces from the > pysimCoder that fit better for memory-constrained devices. My first step is > to add new features to this implementation so it can be used with other > parts of the coding task. > > The second part of this project is to implement an add-on for the NuttX > bootloader (NXBoot). This application will connect to the SHV > infrastructure and download a new firmware image to be booted by NXBoot. > Moreover, in my case, this firmware updater will be used within pysimCoder > to flash new images with a new model. > > From the NuttX perspective, the seamless integration of SHV into NuttX is > very important. The integration should allow any user to use SHV for any > application that requires remote procedure calls, using a documented SHV > API, even outside the NXBoot firmware updater. Also, the NXBoot firmware > updater will become part of the NuttX codebase. Both sounds great! Please take a look as SIM target that is a NuttX runtime working as standard computer application that may help you with development and testing before you move to a real world hardware :-) > I have got some questions: > > 1. How is the NuttX community leaning towards cloning new repositories? The > plan is to use a standalone repository for the lightweight SHV C > implementation. If you plan to create LSHVC as standalone library that can be included into various RTOS, libraries, firmwares, etc, then hacing a separate repository for the project seems more sensible. You can then download a release package as part of NuttX's application build, this is common approach, but you may also include source code here in the app directly then no additional downloads are necessary, as you prefer :-) See: https://github.com/apache/nuttx-apps/tree/master/interpreters/wasm3 > 2. Where should the SHV implementation reside? My best bet is to put it > into apps/netutils but I need to export the .h files API to any application. Yup apps/netutils/shv seems best candidate :-) You may want to take a look at apps/examples/ or apps/netutils/ to see how things are organized and use them as template :-) > 3. Does NuttX have some internal implementation of data structures, such as > lists, trees, etc., generally for any datatype? The current implementation > of pysimCoder's SHV methods depends on an external library. This question > also concerns the first question. There are lots of libraries in apps/system/ and there are some math or machine learning libs maybe these will contain what you need? If you need some other specific library then you can also port it to NuttX if its not here yet :-) > I am looking forward to participating in this project and cooperating with > the rest of you. > Best regards, > Štěpán Pressl Thank you again and have fun, welcome aboard Štěpán :-) -- CeDeROM, SQ7MHZ, http://www.tomek.cedro.info