View Adeneo Embedded's latest video showcasing asynchronous multi-processing on i.MX6 SLX and running on Embedded Linux. This demo is designed to demonstrate the possibilities of the new i.MX6 SoloX hybrid core, which contains one Cortex-A9 core and one Cortex-M4 core along with specific controllers for communication/synchronization implemented in hardware.
Cortex-M4 side (sending data)
Data from various sensors (accelerometer, magnetometer) present on the i.MX6 SoloX SDB is sampled from the Cortex-M4 core which runs the Freescale MQX RTOS. Once interpreted (converted to m/s2 and radians respectively), this data is fed to the Cortex-A9 core using the Messaging Unit controller as a channel.
Cortex-A9 side (receiving data)
Once data is received on the Cortex A-9 (running Linux), a native application receives it and redirects it to a module running within NodeJS. This NodeJS module has two purposes: for one, receiving the sensor data, and serving remote clients with updated data.
A simple Qt application is running on the device as well, and this application contains a “web” widget running the WebKit browser engine. When launching this application, the contents of this web object are populated by simply connecting to http://localhost. The graph and compass are updated in real-time from the data fed by our NodeJS module via HTML5 WebSockets. The Qt window also displays other widgets (such as the Adeneo animation) accelerated through OpenGLES 2.
When remotely connecting to the i.MX6 SoloX SDB (via a laptop as seen in the video), we launch a browser and connect to the web server hosted on the board. The same process is occurring – an HTML5 web socket is opened between the PC and the board, and the sensor data is sent to the PC the same way, updating the graph as well (and the compass orientation).
What’s interesting about this demo?
The Cortex-M4 runs an RTOS (MQX), meaning you can sample and process stuff in real-time. You can also offload some of the work off of the Cortex A-9. This hybrid system lets you separate both worlds, doing true AMP (asymmetric multi-processing) easily – FSL also was smart to implement a way to synchronize/communicate in hardware, meaning software guys don’t have to implement this by hand.
HTML5 brings very nice features to the table, such as “canvas”. UI frameworks utilize this and you can now design beautiful interfaces easily without pain and with better reactivity, leading to a better user experience overall. The fact that a UI can be developed once and be available remotely (the laptop in the video) is a huge advantage. HTML5 is available on all major mobile phones, meaning that an interface just needs to be developed once for Windows, Linux, MacOSX, Android, iOS, etc. Some of these concepts are not even display-related, such as Web Sockets. You can imagine one tiny device exporting all of its data through web sockets, leading to products in the spirit of the internet of things.