seL4指定了可以運行的平台,按照下面的匹配來編譯它。
從github上clone到工程後,執行如下:
如果遇到cc1: all warnings being treated as errors,在Makefile中找到CFLAGS,加上-Wno-unused-but-set-variable:
如果編譯成功,應該是下面的結果:
看看都生成了哪些文件:
Fig 1 make之前目錄結構
Fig 2 make之後目錄結構
Fig 1是沒有make的目錄,Fig 2是make之後的目錄。多出了:
kernel.o
其中kernel.elf包含所有seL4內核的調試信息,我們要用QEMU來執行這個elf格式的鏡像。下面是qemu支持的平台:
我們需要為鏡像選擇正確的qemu運行的平台,運行命令:
這裡沒有適合seL4運行的平台,似乎seL4沒有在QEMU中啟動和運行。
另外在seL4官方文檔中,指出下列平台也可以運行seL4:
Intel platforms
ARM platforms
但對Odroid-XU Exynos 5進行編譯:
TOOLPREFIX=arm-none-eabi- ARCH=arm PLAT=exynos5 ARMV=armv7-a CPU=cortex-a15 make
未能成功。
選擇imx6平台:
TOOLPREFIX=arm-linux-gnueabi- ARCH=arm PLAT=imx6 ARMV=armv7-a CPU=cortex-a9 make
對arch/arm/machine/l2c_310.c的284行處做如下修改:
編譯通過,生成kernel.elf鏡像。
選擇exynos4平台:
TOOLPREFIX=arm-linux-gnueabi- ARCH=arm PLAT=exynos4 ARMV=armv7-a
CPU=cortex-a9 make
通過修改src/plat/exynos4/../exynos_common/mct.c中的initTimer函數:
編譯通過,生成鏡像。
然後qemu選擇相應的平台nuri或smdkc210,但都不能正常啟動內核鏡像。