I've written a small operating system for embedded project running on small to medium target.
I added some automated unit test with a high test code coverage (>95%), but the scope is only the static part.
I got some code metrics as complexity and readability.
I'm testing my code with a rule checker with MiSRA support, and of course fixed all warnings.
I'm testing the code with a static analyzer and again fixed all warnings.
What can I do now to test - and improve - the reliability of my OS ? How about the dynamic part ?
Embedded systems have historically been simple, often non-critical, and usually very reliable, safe, and secure.
Given that, an embedded OS must be reliable and able to run with constraints on memory and processing power. In the case of a Raspberry PI system on a chip, an SD card acts as the device's hard drive and contains the code that runs on the device.
A real-time operating system (RTOS) is an operating system with two key features: predictability and determinism. In an RTOS, repeated tasks are performed within a tight time boundary, while in a general-purpose operating system, this is not necessarily so.
Things missing in your list:
If you are not already doing it then also run the unit tests on the target hardware, to check for compiler and hardware issues.
Code reviews, check especially for race conditions
You could also review the generated assembly code, if it is not too big.
Try writing some unit tests for the dynamic part. Then run the tests on the target hardware. Run the tests on hardware with more cores Run the tests on hardware with only one core
Vary target system clock speed and run the dynamic tests.
should shake out most timing issues.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With