`
wanyin940
  • 浏览: 28345 次
  • 性别: Icon_minigender_2
  • 来自: 武汉
最近访客 更多访客>>
社区版块
存档分类
最新评论

Kernel & Hardware Services package build

阅读更多

Kernel & Hardware Services package build

根据symbian文档翻译+总结:

http://developer.symbian.org/wiki/index.php/Kernel_&_Hardware_Services_Quick_Start

Kernel&Hardware Service package为其他packages在操作系统中做build提供了基础,它提供了其他packages所需要的内核,文件服务器,设备驱动框架,以及用户库,其中内核主要负责进程时间片分配,同步,内存管理,还有一些软件基本规范(software fundamental)来区别于Linux,CEs40上不同的symbian os.

 

要运行Symbian Kernel ,需要一个baseport(syborg.img),它是一个接口,能让硬件在symbian平台上运行。目前在EPL(Eclipse Public License)下发布的kernel中广泛使用和实验的有两个baseport源码,一个是Syborg,能在QEMU的模拟器上运行Symbian平台的ARM二进制文件;还有一个Baseport为低成本BeagleBoard开发板设计的,该开发板使用OMAP3530处理器。

 

:

QEMU是一个开源的处理仿真器,能在PC上仿真出ARM机,意味着以目标硬件编译的Symbian ROM可以直接在PC机上运行。

Syborg:是和QEMU一起使用的Symbian Baseport,必须构建syborg boaseportROM映像里,才能启动QEMU进行运行和调试。

Symbian虚拟平台SVP=QEMU+Syborg

 

 

To get the Symbian kernel building and running on a supported platform, you must follow a common set of steps:

l  Get the tools.

l  Set up the environment.

l  Get the kernel source code.

l  Get the baseport source code.

l  Build the baseport.

l  Create a ROM image.

l  Load the ROM image on the target platform.

 

下面分别详细说明以上六个步骤:

1. Get the tools.

1.1 下载并安装ARM RVCT4.0

http://developer.symbian.org/wiki/index.php/Installing_ARM_RVCT_4.0

你需要登录http://silver.arm.com注册一个账号,提供网卡地址,根据此网卡地址生成一个license.dat进行安装。

1.2   安装PDT

在安装PDT之前还需要安装
ActivePerl 5.6.1 or later               

 ActivePython 2.5.1 or later                    

 JDK6.0                                    

 

参照http://developer.symbian.org/wiki/index.php/Product_Development_Toolkit_Quick_Start安装PDT,我使用的是PDT1.3版本 ,但是网页上已经更新至1.5版本

最后可查阅此链接的部分内容,看自己的环境是否搭建正确。

http://developer.symbian.org/wiki/index.php/How_do_I_test_that_my_development_environment_is_set_up_correctly

 

2. Installing the Kernel Taster kit

2.1 下载Kernel Taster Kit

 

它已经包含了上述步骤中的第二步到第六步,这个包里包括了一些源码,pre-built的二进制文件,QEMU/SyborgBeagleBoard baseportsROM image.

2.2   虚拟一个硬盘作为Kernel Taster Kit的根目录。

Kernel Taster Kit解压至硬盘某处,比如d:\see_kernel_kit

cmd中使用命令:

subst x: d:\see_kernel_kit

 

可以虚拟出一个x:,映射d:\see_kernel_kit个目录

(注:重启后x盘就没有了,如果想撤销,可使用命令:subst x: /d)

3. Set Up the Kernel Taster Environment

C:\>set EPOCROOT=\
C:\>set path=\epoc32\tools;\epoc32\gcc\bin;%path%

设置

EPOCROOT根目录,是为了让系统能够找到x:\epoc32这个根目录,

 

 

set path=\epoc32\tools;是为了让系统能够找到如iMaker这类编译工具,否则会报错。

 

上面我们装的是RVCT4.0而不是RVCT2.2(包括在RVDS4.0中,已经不提供单独下载,),所以我们需要改一些环境变量让系统不要在build过程中找RVCT22变量:


C:\>set RVCT22BIN=ignored
C:\>set RVCT22INC=ignored
C:\>set RVCT22LIB=ignored

 

当然以上命令只是对当前的命令行窗口有效,如果你需要长期有效需要在“我的电脑属性高级环境变量”中设置。

并且在后面的build中使用sbs命令式要用:

sbs -s package_definition_2.0.1.xml -c armv5.rvct4_0 -k -j 4

告诉sbs命令这里使用rvct4.0编译器。

4. Loading a ROM Image on a Target Platform

启动QEMU模拟器:

C:\>X:
X:\>cd \symbian-qemu-0.9.1\bin
x:\symbian-qemu-0.9.1\bin>arm-none-symbianelf-qemu-system -M \sf\adaptation\qemu\baseport\syborg\syborg.dtb -kernel \epoc32\rom\SYBORGARMV5D.IMG

-M参数:      select  emulated machine (-M ? for list)

-kernel参数  bzImage  use 'bzImage' as kernel image

 

如果之前的步骤都正确,QEMU命令行模式窗口就会启动J

 

 

以上的所有步骤我们完成了绿色标注的步骤

l  Get the tools.

l  Set up the environment.

l  Get the kernel source code. (\see_kernel_kit\sf\os\kernelhwsrv)

l  Get the baseport source code. (\see_kernel_kit\sf\adaptation\qemu)

l  Build the baseport.

l  Create a ROM image.

l  Load the ROM image on the target platform.

我们刚才用see_kernel_kit中已经包含的Syborg ROM Image来启动QEMU,现实中我们是要根据实际需求来修改\sf\adaptation\qemu中的源码,rebuild the baseport and re-create the ROM image ,下面就介绍上述红色标注的步骤。

 

5. Building the Baseport----Syborg

SBSv2(Symbian Build System version2)+RVCT4.0build.

X:\symbian-qemu-0.9.1\bin>cd \sf\adaptation\qemu
X:\sf\adaptation\qemu>sbs -s package_definition_2.0.1.xml -c armv5.rvct4_0 -k -j 4

-s参数:SYS_DEF_FILE, --sysdef=SYS_DEF_FILE

                            System Definition XML filename.

-c 参数:CONFIG_NAME, --config=CONFIG_NAME

                   Configuration name to build. Multiple -c options can

                   be given. The standard configs are all, armv5, armv7,

                   default, tools, tools2 and winscw.

-k参数 --keepgoing       Continue building, even if some build commands fail.

-j参数  NUMBER_OF_JOBS, --jobs=NUMBER_OF_JOBS 并发执行的最大任务数

 

6. Create ROM image

X:\sf\adaptation\qemu>cd \sf\os\kernelhwsrv\kernel\eka\rombuild
X:\sf\os\kernelhwsrv\kernel\eka\rombuild>rom --variant=syborg --inst=armv5 --build=udeb --type=tshell --name=\epoc32\rom\SYBORGARMV5D.IMG

--variant参数: 指定在\epoc32\rom 中包含 IBY files的文件夹,这里指向\epoc32\rom\syborg

--inst 参数:identifies the target architecture

--build 参数:determines whether debug or release binaries are to be used

--type=tshell: selects the tshell.oby file from the current directory which then specifies the names of the IBY files to get from the variant directory and the remaining IBY files required to define a standard text shell ROM

--name specifies the output image file name

如果没有错误,在\epoc32\rom\下就重新生成了SYBORGARMV5D.IMG

 

7. Building the Baseport and Create ROM image----BeagleBoard

X:\>cd \sf\adaptation\beagleboard
X:\sf\adaptation\beagleboard>sbs -s package_definition_2.0.1.xml -c armv5.rvct4_0 -j 4
X:\sf\adaptation\beagleboard>cd \sf\os\kernelhwsrv\kernel\eka\rombuild
X:\sf\os\kernelhwsrv\kernel\eka\rombuild>rom --variant=beagle --inst=armv5 --build=udeb --name=\epoc32\rom\BEAGLEARMV5D.IMG

生成的BEAGLEARMV5D.IMG只能在Beagelboard开发板上运行。

 

 

 

分享到:
评论

相关推荐

    80端口被NT kernel & System 占用pid 4

    使用PHP集成环境等,出现80端口被NT kernel & System 占用,解决80端口被NT kernel & System 占用pid 4的问题,

    kernel&android\drivers.rar

    【描述】: "这个压缩包文件‘kernel&android\drivers.rar’包含了与Linux内核和Android设备驱动程序相关的资源和文档。驱动程序是操作系统与硬件设备之间的桥梁,对于理解Android系统运行机制以及进行设备适配和性能...

    x210kernel&x210uboot.rar

    本篇文章将聚焦于“x210kernel&x210uboot.rar”这个压缩包文件,深入探讨x210平台上Kernel和UBoot的移植过程,以及这两个关键部分在系统启动中的作用。 首先,我们来看“x210kernel.tar.bz2”,这是一个针对x210...

    frameworks_services_jni_hardware_kernel.zip

    在Android系统中,`frameworks`, `services`, `jni`, `hardware`以及`kernel`是五个非常关键的组件,它们共同构建了Android操作系统的核心架构。`frameworks_services_jni_hardware_kernel.zip`这个压缩包文件提供了...

    build kernel

    build kernel.htm

    redhat7.2之kernel-devel&&kernel;-headers

    redhat7.2中的kernel-devel-3.10.0-327.el7.x86_64.rpm&&kernel;-headers-3.10.0-327.4.5.el7.x86_64.rpm直接yum安装,以便安装NVIDIA驱动

    80端口被NTkernel

    资源名称:80端口被NT kernel   资源截图: 资源太大,传百度网盘了,链接在附件中,有需要的同学自取。

    linux kernel build and install

    **Linux内核编译与安装详解** ...不过,随着技术的不断进步,更现代的Linux发行版(如Ubuntu)可能有更简便的方法来管理内核升级,比如使用`dkms`(Dynamic Kernel Module Support)来动态编译和安装模块。

    Linux kernel, sleep, Hardware, Power

    Linux kernel, sleep, Hardware, Power

    kcca_package.tar.gz_Data mining_Kernel_kcca_kcca_package.tar_空间映

    "kcca_package.tar.gz"这个压缩包正是针对这一主题的一个资源集合,它包含了实现Kernel KCCA算法的相关代码和可能的数据集。 一、Kernel KCCA(Kernel Canonical Correlation Analysis) Kernel KCCA是典型相关...

    RTXC kernel services

    《RTXC Kernel Services》是关于Quadros RTXC操作系统内核服务接口的一份详细参考文档,由Quadros Systems Inc.在2002年6月18日发布。这份文档主要涵盖了RTXC Kernel的核心功能,包括级别管理、线程、异常处理、管道...

    linux kernel in a nutshell

    The Linux kernel is the core component of the Linux operating system, responsible for managing system resources and providing basic services to applications. It acts as an interface between hardware ...

    GaussDB Kernel 503.1.0.SPC0500 开发者指南

    GaussDB Kernel 503.1.0.SPC0500 开发者指南,使用手册

    FPGA-SoC-Linux:FPGA + SoC + Linux +设备树覆盖图+ FPGA Manager U-Boot&Linux Kernel&Debian10映像(用于Xilinx

    FPGA-SoC-Linux 概述 介绍 该存储库提供了用于FPGA-SoCLinux引导映像(U-boot,内核,Root-fs)。 特征 硬件 ZYBO:Digilent的Xilinx Zynq-7000 ARM / FPGA SoC培训板 ZYBO-Z7:Digilent的Xilinx Zynq-7020开发板 ...

    GaussDB-Kernel-V300R002C00-REDHAT-64bit-Jdbc.tar.gz

    【高斯数据库与GaussDB-Kernel-V300R002C00-REDHAT-64bit-Jdbc】 高斯数据库,全称为华为GaussDB,是华为公司自主研发的一款分布式并行数据库系统,主要应用于大规模数据处理和分析场景。这款数据库产品旨在提供高...

    kernel-devel-3.10.0-1062.1.2.el7.x86_64.rpm

    首先,执行 yum install kernel-devel-$(uname -r) kernel-headers-$(uname -r);若执行得不到对应版本uname -r原代码文件,去官网(http://www.rpmfind.net/linux/rpm2html/search.php?query=kernel-devel && ...

    Windows Kernel Programming (2019).pdf

    These drivers don't deal with hardware, but rather with the system itself: processes, threads, modules, registry and more. Kernel code can be used for monitoring important events, preventing some ...

    MTK6577+Android编译之kernel

    更多关于`KERNEL_IMAGES`的生成细节可参考`kernel/build.sh`文件。 #### 五、kernel编译流程分析 **图3:kernel编译主要流程** - **启动编译**:通过执行`./mkrk`命令启动编译过程。 - **编译命令**:编译命令...

    kernel-package:使来自上游内核的 RPM 变得容易

    内核包 使来自上游内核的 RPM 变得容易。 要求 python用于运行内核包 ...$ /path/to/kernel-package.py $ mock -r fedora-19-x86_64 --rebuild sources/*.src.rpm --resultdir sources/rpms # yum inst

    kernel-headers-3.10.0-1160.zip

    《深入理解Linux内核开发与优化:以kernel-headers-3.10.0-1160.zip为例》 在Linux系统的世界里,内核是操作系统的核心,它负责管理和调度系统的硬件资源,为上层应用程序提供服务。本文将围绕"kernel-headers-...

Global site tag (gtag.js) - Google Analytics