This is a small bare-metal SW test/exploration environment.

Examples how-to build some ARM and MicroBlaze variants:
$ make CFG=configs/vexpress-a32.cfg
$ make CFG=configs/vexpress-a64.cfg
$ make CFG=configs/petalogix-s3adsp1800.cfg

To build all:
make CFG=configs/test

If you need to override the default toolchains:
$ make CFG=configs/vexpress-a64.cfg CROSS=aarch64-myown-elf-

ZynqMP APU setup:
$ make CFG=configs/zynqmp-apu.cfg

Or you can create a .config file, for example:
$ cat .config

The final binaries can be found in the build/* dir.

To run the tests on the ZynqMP QEMU:
qemu-system-aarch64 -M xlnx-zcu102 -serial stdio -kernel build/zynqmp/apu/ctest-bare

To run the vexpress-a64 tests, do the following:
qemu-system-aarch64 -M vexpress-a15,secure=on -cpu cortex-a53 -m 1024 -display none -serial stdio -kernel build/vexpress/a64/ctest-bare

To run the vexpress-a32 tests, do the following:
qemu-system-arm -M vexpress-a15,secure=on -serial stdio -display none -kernel build/vexpress/a32/ctest-bare

Directory structure:

configs/ Build configuration files.
build/ Build products/artifacts.
arch-*/ Contains arch specific boot code, interrupt setups and other stuff.
testsuite-*/ Contains most of the test driving logic.
drivers/*/ Contains drivers to be used by tests or other code.
drivers-*/ Legacy naming for old drivers
libminic/ A BSD licenced small C library implementation
libfdt/ Flat Device Tree lib to parse device trees on boot