Hi all, One of the difficulties I have encountered while trying to get OpenAMP into the Linaro continuous integration loop, as well as while trying to test the GitHub OpenAMP repository code, has been the need to use proprietary tools and environments to build the OpenAMP firmware.This is what I think is needed to solve this problem. Feedback will be welcomed.
Goal: A complete open-source development environment for OpenAMP on Linux for Cortex A and bare metal/FreeRTOS on Cortex R.
The first use for this is for Jenkins/LAVA testing. Just using a slightly customized version of the Xilinx Yocto build for Linux and OpenAMP turns out to be impractical due to the use of a Xilinx-specific toolchain and the huge size of the resulting image.
The second use is for developers who want to work with OpenAMP and the Linux kernel without needing to use a proprietary SDK or tool chain. In fact, with the QEMU Docker container, they wouldn't even need real hardware.
To do this requires:
Toolchains for the ARM Cortex A and Cortex R. I intend to use the toolchains provided by ARM by default, but the eventual setup should allow the user to switch to other toolchains, such as LLVM or a proprietary one.
A Linux root filesystem. I will create this using Yocto and a stripped-down image recipe.
The necessary header files and libraries to compile and link the Cortex R5 firmware for Xilinx first (the BSP). Later I want to support other manufacturers as well.
A mechanism to update the root file system when the Linux kernel or the OpenAMP binaries and firmware are updated.
A way of building bootable images, either for hardware or QEMU.
The above two items are part of the standard image build process and will use available open source tools.
Something to run the resulting image. This will default to the QEMU Docker image.
This should be easier to use for newcomers and facilitate the CI loop.
1) Shrink the image. This can be done in two stages:
a. Build less stuff. The OpenAMP tests don't need full Perl and Python installs, among other things.
b. Tune the kernel. There are a lot of modules we don't need.
This will also speed up build times considerably. It might even be enough to get the CI loop started.
2) Set up the tooling to create root file systems
3) Set up the tooling to create images
4) Document all the steps required to create and boot an image.
5) Automate all of the above.
This email and any attachments are intended for the sole use of the named recipient(s) and contain(s) confidential information that may be proprietary, privileged or copyrighted under applicable law. If you are not the intended recipient, do not read, copy, or forward this email message or any attachments. Delete this email message and any attachments immediately.