Age | Commit message (Collapse) | Author |
|
|
|
|
|
|
|
Meson now handles this. CMake is only used as Meson external project to
build Zephyr firmwares.
|
|
|
|
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.
|
|
This automates signing the application firmware image for the MCUboot
bootloader.
|
|
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.
|
|
|
|
This makes them re-usable for the application and native_sim firmwares.
|
|
|
|
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.
|
|
With multiple CMake Zephyr builds a single link does not make sense
anymore. The user should set a custom symlink.
`.gitignore` is altered to avoid committing such a link.
|
|
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.
|
|
|
|
To use a more readable scripting language and keep portability the POSIX
shell script for Zephyr configuration is replaced by Python.
|
|
|
|
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.
|
|
This makes the build system code way less hacky and more modular.
|
|
These important design files should be deployed with the website.
|
|
This triggers a website rebuild when schematic files are updated.
|
|
This allows to install the PCB-related files easier to the website which
is built with Meson.
|
|
Trying meson worked so well that CMake is no longer needed.
|
|
This uses meson to copy the simple.css file to the build dir and
references the CSS file in the HTML code.
|
|
CMake has some disadvantages when building subprojects like with
`ExternalProject`. Furthermore the language is sometimes hard to read,
hard to write and not so much appreciated.
This is a little test if meson might perform better. If successful this
project might switch to meson for all parts except the Zephyr builds.
|
|
This provides the CSS code for the deploy website as well as the web
interface of the device.
|
|
This makes sure incremental builds work properly for the web page.
|
|
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.
|
|
|
|
The website should be part of the regular CMake build for convenience.
Later the dependencies might be set up in a way that the site
automatically and incrementally updates with a ninja call.
|
|
This is the starting point of making the Hugo static site generation
part of the regular CMake build.
|
|
Hugo [1] is a common static site generator. It should be used to
generate a site where build artifacts of this project can be presented
and deployed.
[1]: https://gohugo.io
|
|
The generated website should contain everything which will be deployed
to the user. This site contains material based on multiple licenses
to meet the matching domain like software, hardware or documentation.
All the content of the website which is not installed from other
directories is licensed via the given license.
This keeps the usual folder-based licensing scheme for the source
repository. Mixing the licenses in the deploy tree seems to be necessary
at the moment.
|
|
KiCad based on the not committed user settings saves backups in
iot-contact-backups. Excluding those backups from Git is important to
not double-track changes.
|
|
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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
|
|
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.
|
|
This allows to keep the serial port open for a longer time and use the
nucleo.sh script only for signing and flashing.
|
|
This makes it faster and build can be easily executed by adding
`-DBOARD=nucleo_f767zi` to the CMake call.
|
|
Using CMake ExternalProject there are multiple compile_commands.json
files in the build tree. Thus there is one from fw/app or another one
when built for nucleo_f767zi from fw/btl.
Linking the one from fw/app by default is more usable since it is the
more relevant code base.
|
|
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.
|
|
This moves the definition of ZEPHYR_MODULES and ZEPHYR_BASE to this rtos
folder where it fits best.
|
|
This key is only relevant for firmware. Thus it should be set in the
CMakeLists.txt file of the `fw` folder.
|
|
This submodule is called `hal_stm32` upstream. Thus the submodule
directory should here be called exactly the same to reduce confusion
compared to `stm32`.
|
|
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.
|