- Hardware
- NXP i.MX6Q
- The work
- Platform bring-up, and the middleware around it
The work
A machine definition, a kernel port, and the interface on top
The platform built from the board up, with a browser engine as the interface
Case data
- Industry
- Mining equipment
- Product line
- Vehicle and equipment displays
- Silicon
- NXP i.MX6Q
- Scope
- Machine configuration, kernel port, boot loader, touchscreen, browser interface, Yocto release upgrade
The machine
We wrote the machine configuration for the board. It is the file every later build depends on.
Kernel port
We moved the kernel to 5.4. It was the largest single piece of work in this engagement.
Boot loader
We worked on both Barebox and U-Boot for this platform.
Touchscreen
We brought it up and we made it work with the interface above it.
A browser as the interface
We integrated the WPE WebKit engine, so the interface is written as a web application and runs without a desktop under it.
Interface architecture
We advised the customer's own front-end team on how to structure an application that runs this way.
Yocto release upgrade
We moved the platform to the Dunfell release, and we added the system packages the product needs.
Serial port
A serial port dropped data. We found the cause and we fixed it.
Middleware, and bindings for the languages above it
One service the applications talk to, and a specification that outlives any one of them
Case data
- Industry
- Mining equipment
- Product line
- Platform middleware for vehicle displays
- Scope
- Requirements, gRPC service and command-line client, foreign function bindings, protocol specification, watchdog tests
Requirements
We wrote them with the customer before we wrote any code, because middleware that gets this wrong is expensive to change later.
The service
We built a gRPC server, and a command-line client for it that an engineer can use directly.
The specification
We wrote the protocol buffer definitions. They are the contract between the service and everything that calls it.
Language bindings
We built foreign function bindings, so applications call the service from the language they are already written in.
Watchdog
We wrote the integration tests for it. A watchdog that is not tested is a watchdog nobody should trust.
How the boards get tested
An evaluation of automated hardware testing, and the reliability work it found
Case data
- Industry
- Mining equipment
- Product line
- Hardware and production test platform
- Scope
- Test framework evaluation, application platform compatibility, boot and rendering fixes, network reliability
Test frameworks
We reviewed LAVA and Labgrid against what this product needs from automated hardware testing. It was the largest piece of this project.
Application platform
We checked that the platform runs IoT Edge and Rust applications, which is what the customer intends to ship on it.
Boot appearance
The screen showed the wrong colours during boot. We found where in the chain it happened.
Locale and rendering
We fixed how the interface renders text for the languages the product ships in.
Ethernet
We investigated a network reliability fault and reported what we found.