summaryrefslogtreecommitdiff
path: root/fw
AgeCommit message (Collapse)Author
3 daysWIP: fw: app: Fix empty HTTP responsexengineering
This was caused by a body_len set to 0 because of changed semantics in the return value of settings_to_json().
4 daysWIP: fw: app: Fix SEGFAULTxengineering
TODO: Only JSON numbers seem to be encodable. Strings lead to SEGFAULT TODO: For some reason the encoded string is not part of the HTTP response.
4 daysWIP: fw: app: Encode settings with JSON libxengineering
TODO: SEGFAULT in json_escape_internal (grrrrr)
4 daysfw: app: http: Add working GET /settings.jsonxengineering
5 daysfw: app: http: Add dummy GET /settings.jsonxengineering
5 daysfw: app: syslog: Stop supporting CONFIG_LOG_BACKEND_NET_SERVERxengineering
From now on the mixed format with IP and port is not supported. The settings system should keep them separate and first only the IP is configurable. Supporting this Kconfig option too is annoying and not necessary.
5 daysfw: app: syslog: Put only IP into syslog/target/ipxengineering
The old format contained `[<ip>]:<port>`. Nevertheless the format should be as strict as possible. Thus only the IP is used in the setting.
5 daysfw: app: syslog: Implement commit targetxengineering
5 daysfw: app: syslog: Make target IP configurablexengineering
5 daysfw: app: Enable settings with NVS backendxengineering
8 daysfw: app: Fix disabled network hackHEADmainxengineering
This got lost during development but is an important option to compensate the hardware issues present on Nucleo F767ZI.
8 daysfw: app: Re-design web pagexengineering
This enables simple.css also for the device-hosted website and restructures the HTML a bit.
8 daysfw: Add flash and erase targetsxengineering
These targets are added: - fw/erase - fw/app/flash - fw/btl/flash They make it easier to perform a mass-erase, flashing of the bootloader and flashing of the application for development.
13 daysSimplify website structure and drop Hugoxengineering
A static site generator is currently not really required. A static index.html is currently sufficient.
2025-04-06Remove top-level CMake build systemxengineering
Meson now handles this. CMake is only used as Meson external project to build Zephyr firmwares.
2025-04-06fw: Remove README.mdxengineering
2025-04-06fw: Remove nucleo.shxengineering
Because of the Meson build system the application firmware is signed automatically. Furthermore all artifacts required to flash the Nucleo board are deployed to the website. Thus this script is not necessary anymore.
2025-04-06fw: app: Add image signing to Meson buildxengineering
This automates signing the application firmware image for the MCUboot bootloader.
2025-04-06fw: sim: Integrate into Meson buildxengineering
This adds a build for the native_sim board of the application firmware to the default Meson build. The resulting Linux binary is also added to the webpage.
2025-04-06fw: app: Build with Mesonxengineering
2025-04-06tools: Use argparse for build scriptsxengineering
This makes them re-usable for the application and native_sim firmwares.
2025-04-06fw: btl: Clean meson.buildxengineering
2025-04-06tools: Add directory and move scripts herexengineering
This allows to re-use these scripts. Since they are currently used to build Zephyr builds and three are intended (application, bootloader and application as native_sim build) this makes sense.
2025-04-06Build bootloader and add to websitexengineering
Meson makes this relatively easy. The current approach is nevertheless a bit hacky. For the first attempt it is still way better than CMake ExternalProject.
2025-04-06fw: btl: Clean up meson.buildxengineering
2025-04-06fw: btl: Configure with Python scriptxengineering
To use a more readable scripting language and keep portability the POSIX shell script for Zephyr configuration is replaced by Python.
2025-04-06fw: btl: Fix build with Mesonxengineering
2025-04-05fw: btl: Configure bootloader build with Mesonxengineering
CMake ExternalProject creates a pretty confusing build tree. Since the rest of the project anyway starts moving to Meson the bootloader is configured via Meson as a first step.
2025-04-02fw: app: Fix native_sim buildxengineering
To reduce the number of Kconfig options the network hack was added two both boards - the native_sim and nucleo_f767zi one. It reboots the device if the network connection cannot be established since this is a known bug of the nucleo board. Nevertheless it seems that for the native_sim board this command is not defined. Since it is a Linux application this makes somehow sense. This commit introduces the boolean Kconfig option `IOT_CONTACT_NETWORK_HACK` which is only enabled for the nucleo board fixing the native_sim build.
2025-03-30fw: app: update: Finish first HTTP PUT /updatexengineering
This adds marking the application firmware image in the secondary slot for a permanent update and rebooting the device. It is a known bug that the corresponding HTTP request is never properly closed since the device reboots while handling the request. Nevertheless the current state works and enables remote updates.
2025-03-30fw: app: update: Write uploaded image to flashxengineering
This write the received firmware image data to the secondary MCUboot slot. This prepares an update. With the MCUboot shell it can be applied with: mcuboot request_upgrade permanent kernel reboot If the signature is valid the device will permanently update to the new application firmware. Otherwise it will refuse the new image and boot the old one.
2025-03-30fw: app: update: Add data rx on HTTP PUT /updatexengineering
This implements a HTTP handler capable of receiving the full data of the firmware image upload. The data is not handled at all and thus not written to flash. This is just an incremental step towards successful firmware image upload to the secondary MCUboot slot.
2025-03-30fw: app: update: Add source file and HTTP 204 handlerxengineering
This adds the HTTP PUT /update handler which just returns HTTP 204 No Content. This is the minimal first step towards a working /update handler.
2025-03-30fw: app: Enable MCUboot shell for nucleo_f767zixengineering
This allows to use all MCUboot related functionality during the development via the shell. Furthermore it allows to inspect the current state of the primary and secondary slot. Both traits are very valuable especially during the development of the remote update system.
2025-03-30fw: app: Reboot in case of no networkxengineering
Because of an issue likely related to hardware design on the nucleo_f767zi board (see issue [1] for details) the firmware should reboot in case network access cannot be established after 4 seconds. This makes the firmware more robust at the moment. As soon as iot-contact hardware without this issue exists the behavior can be changed again. [1]: https://github.com/zephyrproject-rtos/zephyr/issues/77794
2025-03-27fw: app: Do not use CMake ExternalProjectxengineering
This made the `menuconfig` target disappear. Since the application has a quite complex configuration compared to the bootloader it is embedded to the primary CMake project while the bootloader stays an external project.
2025-03-27fw: Remove serial console from nucleo.shxengineering
This allows to keep the serial port open for a longer time and use the nucleo.sh script only for signing and flashing.
2025-03-27fw: Remove build from nucleo.shxengineering
This makes it faster and build can be easily executed by adding `-DBOARD=nucleo_f767zi` to the CMake call.
2025-03-26fw: app: Build as CMake External Projectxengineering
This adopts this pattern from the bootloader build. It adds more flexibility. It is assumed that in this way multiple builds for different boards can easily be achieved.
2025-03-26fw: rtos: Add CMakeLists.txtxengineering
This moves the definition of ZEPHYR_MODULES and ZEPHYR_BASE to this rtos folder where it fits best.
2025-03-26fw: Move MCUboot key definition herexengineering
This key is only relevant for firmware. Thus it should be set in the CMakeLists.txt file of the `fw` folder.
2025-03-26fw: rtos: modules: Rename to hal_stm32xengineering
This submodule is called `hal_stm32` upstream. Thus the submodule directory should here be called exactly the same to reduce confusion compared to `stm32`.
2025-03-26fw: rtos: modules: Move mcuboot submodule herexengineering
The mcuboot Git submodule used to be located in `fw/btl`. Nevertheless since it is also a Zephyr module it should go to `fw/rtos/modules`. This makes sure all Zephyr modules are at the same place.
2025-03-26fw: btl: Use `build/fw/btl` folder consistentlyxengineering
Previously a folder `build/fw/bootloader` was used in addition. This change removes this and puts everything bootloader-related in `build/fw/btl` to make this consistent to `build/fw/app`.
2025-03-26fw: btl: Fix ZEPHYR_BASE settingxengineering
This was not explicitly set to the kernel located at `fw/rtos/zephyr`. Thus depending on the environment other kernel checkout might be picked like `~/zephyrproject/zephyr`. This was not notices so far since there the exact same checkout was used.
2025-03-26fw: app: Move application firmware code herexengineering
This makes the structure of the `fw` folder more clear and separates application-related code from bootloader- or rtos-related code.
2025-03-22fw: Let Zephyr add board specific configurationxengineering
Handling this in the nucleo.sh script was never necessary.
2025-03-22fw: rtos: Restructure RTOS-related codexengineering
This reduces nesting and makes the directory structure simpler.
2025-03-22fw: btl: Move MCUboot build herexengineering
The directory structure should be less nested and with shorter paths. This is a first step.
2025-03-22fw: Remove empty mainxengineering