国产化实时操作系统研究之旅7.2-编译内核并运行在自制QEMU虚拟机

研究内核原理前需要提前对内核有个感性的认识,本文介绍笔者自己动手编译SylixOS内核并运行在自己编译的虚拟机平台上。

简介:编译SylixOS内核与Linux还有有点区别。Linux运行由Kernel与根文件系统两部分组成,SylixOS内核中集成了根文件系统,因此只需要编译出一个内核镜像即完成了操作系统最小系统运行环境。文件系统中的软件、库等都可以动态部署。

创建内核镜像步骤很简单只需要三步:

  1. 创建Base工程
  2. 创建Bsp工程,Bsp工程生成内核BIN文件
  3. 用flashimg工具将uboot和内核镜像BIN文件打包成虚拟nand flash存储文件,启动QEMU虚拟机运行即可

创建 SylixOS Base 工程

创建BASE工程这个步骤前文有介绍,工程名Mini2440Base。

创建 SylixOS BSP 工程

IDE工程向导中创建Mini2440Bsp工程,并指定Mini2440Base所在的工程目录。

国产化实时操作系统研究之旅7.2-编译内核并运行在自制QEMU虚拟机

创建BSP工程

内核镜像是由BSP工程生成的。梳理下关系,BASE工程实际上是核心源码,这部分源码具有平台移植性,具体硬件平台的适配代码在BSP工程中。

国产化实时操作系统研究之旅7.2-编译内核并运行在自制QEMU虚拟机

BASE工程与BSP工程的目录结构

从源码目录可以看出SylixOS源码组织的思路,BASE工程中包含平台无关代码和体系结构代码;BSP工程中主要是板级适配代码。例如:我要运行开发板是MINI2440, CPU S3C2440, CPU的体系结构是ARM920T, 那么ARM920T的相关代码在BASE中,S3C2440外设驱动在BSP中。通过以上结论如果要SylixOS运行在自己的板子上,那么一般情况下只需要修改BSP工程中的文件即可。

编译 SylixOS BSP 工程

配置工程,里面主要是内存分布的配置,这个内存分布以后再研究。

国产化实时操作系统研究之旅7.2-编译内核并运行在自制QEMU虚拟机

 

配置好后直接编译,工程DEBUG目录下生成了Mini2440Bsp.bin文件,这个就是内核镜像文件。

国产化实时操作系统研究之旅7.2-编译内核并运行在自制QEMU虚拟机

 

打包nand.bin

将Mini2440Bsp.bin拷贝到我自己制作的flashimg工具下打包

./flashimg -s 128M -t nand -f nand.bin -p uboot.part -w boot,u-boot.bin -w kernel,Mini2440Bsp.bin -z 2048

nand.bin 生成的nand镜像

uboot.part flash分区表

uboot.bin uboot二进制文件

Mini2440Bsp.bin 内核镜像

启动虚拟机运行测试

sudo tunctl -u $USER -t tap0 #给QEMU设置的虚拟网卡

sudo ifconfig tap0 192.168.42.1

qemu-system-arm -M mini2440 -serial stdio -mtdblock nand.bin -usbdevice mouse -kernel uImage -net nic,vlan=0 -net tap,vlan=0,ifname=tap0,script=no,downscript=no

 

 

启动QEMU后会进入uboot.bin, uboot中将内核加载进内存,具体如下:

#nand read 30000000 60000 6000000 将内核加载到内存物理地址

#go 30000000 启动内核

国产化实时操作系统研究之旅7.2-编译内核并运行在自制QEMU虚拟机

 

成功启动系统。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值