Yocto based Embedded Linux IoT Device Development
We provide development support, integration support and consultancy for
Linux BSP Development
- uBoot bootloader adaptation
- Kernel configuration and hardening
- Device tree configuration
- Secure Boot on Cortex-A CPU (Arm Trustzone)
- Persistent memory layout and partitioning
Linux Application Development
- In Rust, C++, Python, Typescript
- For target CPU, GPU, NPU
- Including
- Application architecture and design
- BDD and TDD test frameworks usage and test case specification
- Documentation as code
Multi Device and Multi Application Integration
- Maintenance of multiple devices (different PCB-A's), at different hardware revisions and different assembly variants
- Maintenance of different applications (and the dependencies to PCB-A's) at different versions, with different feature toggles.
- Tooling support for BSP developers to integrate new BSP's.
- Tooling support for application developers to integrate and test the application on the target hardware
- Decoupling of application development cycles from bsp development cycles
- Continuous Integration into CI servers
- Release management procedures
- Service middleware configuration
- logging facilities
- deployment e.g. of libraries and tooling like databases (e.g. Postgres), communication protocol server (e.g. MQTT Mosquitto, like Nginx web server)
- service user and arbitrary tools (like strace, openssh, ) setup
- Yocto Upstream configuration maintenance
IOT Device Integration Testing
- ptest infrastructure for
- application
- 3rd party middleware components
- BSP
- As part of Continuous Integration
- Either on target hardware or on QEMU machine at the same ISA architecture like the target
Board Functional Circuit Testing (FCT) Fixture Development
Functional circuit testing is a quality assurance measure at PCB-A production. It requires to install and instrument a test fixture software on the newly manufactured board.
This Functional Circuit Test (FCT) software is a Yocto firmware image itself, running the very same bootloader and kernel like the production application.
Factory Deployment and Device Provisioning
- Deploy initial firmware: (at one of the last steps during production)
- Generate and deploy secure keys keys; blow security boot fuses
- Provide a default configuration
- Enable the IoT device for (secure, remote) software updates
- Device Provisioning
- Add new IoT devices to the network.
- Configure the IoT device behavior
Secure Boot and secure Software Update
- Software update via mender, swupdate or rauc
- Migration of work data and configuration at software update
- Factory Reset of configuration data
- Secret management of boot keys (as part of the CI, release infrastructure)
- Secure lifecycle management including secure build
Privacy and Data Integrity Measures
- Encryption of
- Data at rest (data file system partition)
- Data in transit (e.g. via TLS, HTTPS)
- Secure logging (assure integrity and confidentiality of logs)
- Security logging (log all security relevant activities)
Support of the Cybersecurity Resilience Act (CRA) mandatory Activities
- System hardening
- SBOM
- 3rd party component validation (i.e. SouP - for medical products)
- Common Vulnerabilities and Exposures (CVE) management via timesys
AMS Yocto Integration Environment
We maintain our own Yocto environment. It is called AMS (AlMedSo). We showcase our expertise on a set of sample applications (images) running on a zoo of boards.
Here is the manifest repo and the recipe and config repositories as well as a Docker Container for (headless) Yocto builds.
Also, we publish Yocto related blog posts.