seL4的编译和运行(OdroidXU3)

原创 2015年07月22日 16:03:14

seL4支持平台

seL4所在的git如下:
https://github.com/seL4/seL4.git

不过我们编译和运行seL4一般不只是用这个git,而是借助seL4test(seL4的测试框架):
https://github.com/seL4/sel4test.git

seL4提供了各种平台上的配置文件,也提供了用于测试seL4的app。


seL4指定了可以运行的平台,按照下面的匹配来编译它(当然还有其他的匹配)。

ARCH PLAT ARMV CPU
arm imx31 armv6 arm1136jf-s
arm omap3 armv7-a cortex-a8
arm am335x armv7-a cortex-a8
ia32 pc99

另外在seL4官方文档中,指出下列平台也可以运行seL4:

  • Intel platforms

    1. a PC99-style Intel Architecture 32-bit x86 (ia32)
    2. There is also experimental support for the 64-bit Intel x86_64 architecture.
  • ARM platforms

    1. The Arndale dual core A15 ARM development board
    2. The Beagleboard, Omap 3530
    3. The Inforce IFC6410 development board, running a Qualcomm Krait processor that is like an A15.
    4. The KZM-ARM11-01. The kernel for this board is the one that is formally verified.
    5. The Odroid-X Exynos4412 board
    6. The Odroid-XU Exynos 5 board
    7. The Sabre Lite i.mx6 board.
    8. The Beaglebone Black is a community-supported port.

选择OdroidXU3编译seL4

根据seL4官方文档所说明的支持平台,并参照seL4test工程中的配置文件,我们选择OdroidXU3开发板来运行seL4。下面就是OdroidXU3:
OdroidXU3

这个平台采用Samsung Exynos5422 Cortex™-A15 2.0Ghz quad core and Cortex™-A7 quad core CPUs。而exynos5422在seL4的支持序列当中。同时这个板子支持的操作系统如下:Ubuntu 14.04 + OpenGL ES + OpenCL on Kernel LTS 3.10和Android 4.4.2 on Kernel LTS 3.10。因此是一款能满足时下开发的较新的开发板。
关于它的相信信息,可以到官网上去查看:
Hardkernel Odroid


通过repo获得seL4test工程。工程根目录下有一个configs文件夹,里面就是根据具体平台所设置的配置文件,我们根据我们的板子,选择 odroidxu3_release_xml_defconfig。把它拷贝到seL4test工程根目录下。
在工程根目录下执行命令: $ make menuconfig
出现如下界面:
这里写图片描述

进入“Load an Alternate Configuration File”,输入刚才拷贝的配置文件的名字:
这里写图片描述

ok后,回到上面的界面,进入“Save an Alternate Configuration File”,直接ok。最后Exit退出menuconfig。

然后运行命令: $ make

这样你就会在images目录下发现新生成的seL4的elf格式的镜像文件:
sel4test-driver-image-arm-exynos5

编译成功!


制作OdroidXU3的SD卡启动盘

OdroidXU3默认是eMMC启动,也就是说厂商在eMMC中烧写了u-boot和ubuntu的镜像,我们想通过SD卡启动,所以需要做:

  1. 将OdroidXU3的启动方式改为SD卡启动
  2. 制作SD卡启动盘

对于1,看下面的图:
这里写图片描述

板子上有如图所示的开关,左数第一个开关就是控制启动方式:

开关状态 启动方式
ON eMMC
OFF MICROSD

下面制作SD卡启动盘:

  • 根据OdroidXU3提供的分区表烧写u-boot
  • 对SD卡分区并拷贝seL4镜像

下面是OdroidXU3的eMMC卡或microSD卡的分区表:
这里写图片描述

如果我们不按照平台指定的SD卡的分区表来烧写u-boot,是不能正确烧写并启动u-boot的。

OdroidXU3官方也提供了如何编译u-boot的手册和烧写u-boot的shell脚本:
xu3 building u-boot

注意:
首先确认目录 u-boot/sd_fuse/hardkernel/下是否存在 bl1.bin.HardKernel、bl2.bin.HardKernel、tzsw.bin.hardkernel,和配置文件sd_fusing.sh。 将自带的u-boot.bin.hardkernel删掉。
安装手册会在根目录编译生成u-boot/u-boot.bin,需要将它拷贝到u-boot/sd_fuse/hardkernel目录下,并重命名为u-boot.bin.hardkernel。

按照手册所说的利用sd_fusing.sh脚本将u-boot烧写到SD卡中。

我们使用minicom在xubuntu下进行串口调试(minicom配置信息采用默认即可),查看板子启动信息,如果u-boot烧写成功,启动后会出现如下界面:
这里写图片描述

进入u-boot命令模式。


接下来我们先要将上面生成的seL内核镜像放到SD卡中,我们不是用烧写u-boot时的脚本将内核也烧进SD卡中,而是要将SD卡进行分区,然后直接拷贝。

将SD卡分区需要注意以下两点:
1. 第一分区位置要从地址3072开始。原因:MBR的需要占用第一个512byte,fwbl1区需要占用1-30 共15KB,bl2区需要占用31-62 共 16KB,u-boot镜像需要占用63-718 共238KB,tzsw.bin需要占用719-1230,共256KB,u-boot的运行环境需要占用1231-1263 共16KB,u-boot的环境变量需要占用1263-3071。而第一分区存储的是SEL4的内核镜像,为保证u-boot运行,以及不干扰第一分区的读写操作,所以地址设定为3072。
2. 我们将SD卡分为两区(非必须),文件系统类型分别为FAT16(vfat)、LINUX 文件系统(ext4),第一分区应留出足够的空间存储SEL4的内核镜像,至少为3MB以上。

分好区后,将SD卡插入电脑就可以挂载识别了,我们将seL4的内核镜像sel4test-driver-image-arm-exynos5拷贝到SD卡的第一个分区中(为了下面启动seL4内核的方便,我们将内核重命名为sel4)。

大功告成!现在试一下是否可以在OdroidXU3上点亮seL4。


点亮seL4

在u-boot命令模式下,依次输入如下命令:

这里写图片描述

这里显示的是SD卡第一个分区中存放的文件,我们的内核镜像是sel4。

然后将内核加载到内存指定位置:
这里写图片描述

其中0x48000000就是内核在内存中的指定位置。

最后启动:
这里写图片描述

这里写图片描述

由于我们使用的是seL4test这个官方提供的框架,编译生成的seL4内核镜像包含了一个叫seL4test-driver的app,所以运行所出的信息实际上是这个app在运行,最后会出现“All is well in the universe”。

至此我们已经在OdroidXU3上成功点亮seL4。

版权声明:本文为博主原创文章,未经博主允许不得转载。

微内核操作系统及L4概述

杰夫 jliu71@gmail.com   摘要:本文是对微内核操作系统及L4的发展历程和主要功能的综述。本文还对微内核操作系统的优缺点及发展前景发表评论。 关键词:微内核,操作系统,L4...

odroidXu4 GPIO

Odroid-XU4/3提供1个30针的双排扩展头“CON10”。下面是对这些扩展引脚的说明。在扩展报头的所有信号都只是PWRON信号1.8V。     如上图,扩展的引脚功能分别有ADC、UART、...

OdroidXu4开发环境搭建

参考官网描述,介绍Xu4的环境搭建方法

IAI 三轴 SEL-3

  • 2010年06月10日 11:20
  • 1.41MB
  • 下载

sel4 用户 文档

  • 2016年12月28日 10:51
  • 508KB
  • 下载

开源微内核seL4

越大的系统潜在的bug就越多,所以微内核在减少bug方面很有优势,seL4是世界上最小的内核之一。 如今,安全越来越成为一个新兴嵌入式设备的关键要素,如智能手机。...

seL4系统论文

  • 2016年01月04日 11:40
  • 421KB
  • 下载

seL4 参考手册目录

seL4 reference PDF 1.介绍:12.内核服务与对象:22.1 基于能力(capability)的访问控制:2 2.2 系统调用:3 2.3 内核对象:4 2.4 内核内存分配...

seL4 内核服务、对象以及基本能力访问和控制

内核服务和对象微内核提供了一些有限的原始服务,更多复杂的服务要在这些原始服务基础上像应用程序一样实现。以此种服务,此系统的功能可以被拓展而不用增加特权模式下的代码和复杂度,虽然在应用程序域潜在的支持相...

[4]姥爷幽默谈Objective-C-SEL的详细用法(封装方法)

1.SEL 的定义Description: Defines an opaque type that represents a method selector.描述:定义了一个不透明的方法选择器。typ...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:seL4的编译和运行(OdroidXU3)
举报原因:
原因补充:

(最多只允许输入30个字)