Multi Project x86 Emulation (MPXE)

MPXEI, or Multi Project X86 Emulation Interface is a new project that will provide a user-friendly interface for testing firmware integration on an x86 platform.

Note that this is just an idea; no resources are allocated or timelines set.

Problem statement: it is currently not possible to perform integration testing on an x86 platform, for a few reasons:

  • There is no support for running multiple projects

  • There is little support for running single projects, mostly due to a lack of x86 versions of drivers

  • There is no way of providing digital or analog input to projects running on x86 aside from sending messages through virtual CAN

Solution: have an interface that lets users run multiple projects and provide analog or digital inputs for GPIO pins, ADCs, and more.

Architecture could go as follows

  • A C harness program that manages gpio and any other state per project. We may need to implement a custom hardware description file per project that details what ICs are connected at what points. The harness sends websocket messages to the python script anytime state is changed, which passes the message on to the web app.

  • X86 versions of drivers that send and receive websocket messages with GPIO state, CAN messages, SPI comms, etc.

  • A python script to manage running projects, collecting their output, collecting websocket communication, and passing it on. It also serves the interface.

  • A web user interface that shows the message logs and provides easy ways to manipulate input and choose which boards are powered, connected, and how



Notes / concerns brought up in meeting

  • This would be a long term investment in midsun firmware tooling

  • Phase one should be specifically the C parts, other parts like the interface can come later

  • We can use just the harness part to do automated integration testing as well

  • It would be useful to have a command line interface and/or custom scripts to run tests

A few possibly helpful articles on automotive system emulation:

https://eudl.eu/pdf/10.4108/eai.24-8-2015.2261004

https://ipg-automotive.com/fileadmin/user_upload/content/Download/PDF/Articles/1305_ATZelektronik_BMW_IPG_Automotive_Virtual_Test_Driving_HW-independent_Integration_of_Series_SW_EN.pdf

https://dronekit-python.readthedocs.io/en/latest/develop/sitl_setup.html