Corellium Atlas is a virtual hardware platform that enables software developers to cut through the difficulty of writing software on embedded hardware and streamlines the development path. Full end to end automation and validation is possible through APIs, CLI, and shell scripting. This is all possible with a Corellium development kit (CDK), Public or Private cloud offering, or a server that sits in your datacenter.
Most software development today is concerned with the basic level of support for booting an OS on hardware. Today, that scenario and more can actually be completed on Atlas hardware. Not only can the focus be on boot but now on actually executing software on target hardware with no modifications. Simply spinning up the virtual hardware instance and uploading the compiled custom firmware or using a default image and loading software compiled for the target hardware becomes a reality. Below are steps on how to build custom firmware images for some of the supported models of hardware in production.
Below are the required files that must be contained in a flat .zip:
Info.plist - for the meta information in JSON format about firmware version, type, build, unique identifier, and device identifier.
nand - with the preinstalled arm64 image file.
devicetree - hardware components data for the Linux kernel.
kernel - the Linux kernel file.
ramdisk.img (optional) - the initrd root file system image.
Although specifying the ramdisk.img is generally optional, we need to add a reboot command in this case because of how this virtual device handles the first pass.
We offer an extensive article with scripts that can essentially be used to build the custom firmware for use on the Atlas hardware.
Custom firmware can manually be built following these steps:
1. Download the target Raspberry Pi OS or build it through tool of choice4. Unzip the contents of the source image from Atlas
5. Create a directory for your custom firmware, then place the files into the directory from the source image and the Raspberry Pi firmware contents:
8. Now zip the contents of the folder into a flat .zip
9. Create a new Raspberry Pi 4b and upload the custom .zip firmware
10. This will now boot custom firmware on a Raspberry Pi 4b
With the i.MX93 EVK and i.MX8M Plus an engineer can take their software and bring it into a near physical virtualization with speed and performance to match. Take applications and software without making any changes for simulator support and build them for the target hardware then run them in the Atlas environment.
Custom firmware can manually be built following these steps:
1. Download the target i.MX93/i.MX8MPLus or build it through tool of choice:4. Unzip the contents of the source image from Atlas
5. Create a directory for your custom firmware, then place the files into the directory from the source image and the i.MX93/i.MX8M Plus firmware contents:
8. Now zip the contents of the folder into a flat .zip
9. Create a new i.MX93 or i.MX8M Plus and upload the custom .zip firmware
10. This will now boot custom firmware on a i.MX8M Plus/i.MX93 EVK
With the virtualized Atlas STM32U5 b_u585i_iot02a, binaries built in Zephyr and the STM32 CubeMX/CubeIDE can simply and easily be loaded and run. No need to convert or add additional code to support emulators and simulators. Build for the b_u585i_iot02a target and create an instance:
1. Build a binary using Zephyr or STM32CubeIDE/MX
2. Take the compiled .elf file and upload it to Atlas STM32U5
3. Follow the rest of the prompts and see the software run
The S32K388 and S32G have been completely virtualized to enable software developers the flexibility to run software easily and quickly without the need to acquire hardware or make customizations to support simulations. Build for the target hardware and run the software:
With the virtualized Atlas Cortex-R52/R82, binaries built in Zephyr can simply and easily be loaded and run. No need to convert or add additional code to support emulators and simulators. Build for the target and create an instance:
The Corstone-1000 software will come packaged as a .wic which well require decompression and then loopback mounting to be able to retrieve the contents. Once those steps are complete, follow the below steps to build the Atlas firmware package:
With the virtualized Atlas Corstone 310/315/320, binaries built in Zephyr can simply and easily be loaded and run. No need to convert or add additional code to support emulators and simulators. Build for the target and create an instance:
This is the only fully virtualized non-silicon model in existence that full supports and runs SOAFEE secure boot! This model can be created and run with Debian as well as with the default Linux OS and is System Ready. Follow the steps below to build the custom firmware for Kronos: