linux系统运行程序设计,seL4的编译和运行
seL4指定了可以運(yùn)行的平臺(tái),按照下面的匹配來(lái)編譯它。
ARCHPLATARMVCPU
arm
imx31
armv6
arm1136jf-s
arm
omap3
armv7-a
cortex-a8
arm
am335x
armv7-a
cortex-a8
ia32
pc99
從github上clone到工程后,執(zhí)行如下:
如果遇到cc1: all warnings being treated as errors,在Makefile中找到CFLAGS,加上-Wno-unused-but-set-variable:
如果編譯成功,應(yīng)該是下面的結(jié)果:
看看都生成了哪些文件:
Fig 1 make之前目錄結(jié)構(gòu)
Fig 2 make之后目錄結(jié)構(gòu)
Fig 1是沒(méi)有make的目錄,Fig 2是make之后的目錄。多出了:
目錄api
目錄arch
目錄plat
kernel_all.c
kernel_all.c_pp
kernel.elf
kernel.elf.strip
kernel_final.c
kernel_final.s
kernel.o
其中kernel.elf包含所有seL4內(nèi)核的調(diào)試信息,我們要用QEMU來(lái)執(zhí)行這個(gè)elf格式的鏡像。下面是qemu支持的平臺(tái):
我們需要為鏡像選擇正確的qemu運(yùn)行的平臺(tái),運(yùn)行命令:
這里沒(méi)有適合seL4運(yùn)行的平臺(tái),似乎seL4沒(méi)有在QEMU中啟動(dòng)和運(yùn)行。
另外在seL4官方文檔中,指出下列平臺(tái)也可以運(yùn)行seL4:
Intel platforms
a PC99-style Intel Architecture 32-bit x86 (ia32)
There is also experimental support for the 64-bit Intel x86_64 architecture.
ARM platforms
The Arndale dual core A15 ARM development board
The Beagleboard, Omap 3530
The Inforce IFC6410 development board, running a Qualcomm Krait processor that is like an A15.
The KZM-ARM11-01. The kernel for this board is the one that is formally verified.
The Odroid-X Exynos4412 board
The Odroid-XU Exynos 5 board
The Sabre Lite i.mx6 board.
The Beaglebone Black is a community-supported port.
但對(duì)Odroid-XU Exynos 5進(jìn)行編譯:
TOOLPREFIX=arm-none-eabi- ARCH=arm PLAT=exynos5 ARMV=armv7-a CPU=cortex-a15 make
未能成功。
選擇imx6平臺(tái):
TOOLPREFIX=arm-linux-gnueabi- ARCH=arm PLAT=imx6 ARMV=armv7-a CPU=cortex-a9 make
對(duì)arch/arm/machine/l2c_310.c的284行處做如下修改:
編譯通過(guò),生成kernel.elf鏡像。
選擇exynos4平臺(tái):
TOOLPREFIX=arm-linux-gnueabi- ARCH=arm PLAT=exynos4 ARMV=armv7-a
CPU=cortex-a9 make
通過(guò)修改src/plat/exynos4/../exynos_common/mct.c中的initTimer函數(shù):
編譯通過(guò),生成鏡像。
然后qemu選擇相應(yīng)的平臺(tái)nuri或smdkc210,但都不能正常啟動(dòng)內(nèi)核鏡像。
總結(jié)
以上是生活随笔為你收集整理的linux系统运行程序设计,seL4的编译和运行的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: SEL 类型
- 下一篇: linux-什么是Linux系统?lin