Our great sponsors
-
WorkOS
The modern identity platform for B2B SaaS. The APIs are flexible and easy-to-use, supporting authentication, user identity, and complex enterprise features like SSO and SCIM provisioning.
For simulation I have been using a simulation framework named Renode. It has decent support for quite a few embedded platforms and is easy to extend. Peripheral development is done in C#, but there is support for python and rust in development. The translation library for the cpus is called tlib. It uses an older fork of tcg which is what qemu is built upon. https://renode.io/about/ and https://github.com/antmicro/tlib for reference. You can even run peripherals developed in HDL in verilator and connect them with the target CPU on the same sysbus.
Everything else was covered: Ceedling+Unity+CMock for Unit Testing in C, CppuTest or GoogleTest or other options for C/C++. FFF is also useful when mocking. If you test and develop your modules correctly, they should when they are in your application. If you are developing using an Event-Driven Framework like QP or QML, then I would not test anything to do with the framework, but the functions that are called in each event. Same thing if you are using an RTOS, test what's inside your threads/tasks.
Everything else was covered: Ceedling+Unity+CMock for Unit Testing in C, CppuTest or GoogleTest or other options for C/C++. FFF is also useful when mocking. If you test and develop your modules correctly, they should when they are in your application. If you are developing using an Event-Driven Framework like QP or QML, then I would not test anything to do with the framework, but the functions that are called in each event. Same thing if you are using an RTOS, test what's inside your threads/tasks.