微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > 基于XIP技术的ARM Linux系统的研究与移植

基于XIP技术的ARM Linux系统的研究与移植

时间:11-26 来源:互联网 点击:

在主存上,因而根据配置过程中设置的CONFIG_XIP_PHYS_ADDR 值,设置TEXTADDR 为0xbf000000,而DATAADDR 则设置为0xC0008000,在内核的CPU 片级初始化过程中的页表建立过程中,TEXTADDR 指向NORFlash,而DATAADDR 指向主存SDRAM 中,把.init 段链接到.data 段之前,拷贝到SDRAM中,执行完毕后,回收这部分主存,而内核的.text 段以Kernel XIP 方式运行[4][5]。

4.2 移植源代码

下面阐述在 XSBase255 开发板上以XIP 运行内核的移植过程[6]。

4.2.1 添加机器平台支持、目录框架及内核配置的支持

4.2.2 源代码文件移植,为实现XIP,在arch/arm/mach-pxa/Makefile.boot 中定义内核映像text节的物理地址,即ZRELADDR 的地址值 zreladdr-y := 0xa0008000

4.2.3 闪存分区的移植

本文采用的是 NOR Flash,根据开发板上闪存的起始地址和大小划分为Bootloader,Kernel , Rootfs 等四个不同部分。其初始地址和大小分别分Persistant storage 0x01000000-0x02000000, Initial ramdisk image 0x00300000-0x01000000,Kernel Image0x00020000-0x00300000 ,Bootloader 0x00000000-0x00020000

4.3 配置内核

根据开发板移植好特定代码后,本节对内核进行配置,主要通过make menuconfig 命令启动的图形交互界面进行。

4.3.1 指定内核CPU 体系和交叉编译器及选择系统类型

4.3.2 启动XIP 支持

在菜单 Boot options 中,选中Kernel Execute-In-Place from rom,并设置好XIP 内核的物理位置0x00380000。

4.3.3 设置启动参数

同样在 Boot options 中,设置启动参数,如图2 所示。

4.3.4 选择串口驱动和控制台驱动

4.3.5 启动MTD 和NOR Flash 分区至此内核配置完毕,使用 make xipImage,获得XIP 内核映像。

5 文件系统的制作

为了支持 XIP,需要选择Linear CRAMFS 作为根文件系统。系统使用过程中的其他需要,可以采用其他类型的文件系统,如系统的临时文件可以采用RAMFS/TMPFS,系统中可修改的配置数据可以采用JFFS2 文件系统挂载。最终定制的文件系统类型如表1 所示:



本文采用嵌入式系统常用的 Busybox 方法制作根文件系统映像[7]。先编译生成系统应用程序,再建立完整的顶层目录和必要的其他文件。然后使用的Linux2.6 自带的mkfs.cramfs工具制作rootfs_cramfs.img 映像。至此根文件系统制作完毕。

6 系统与性能测试

6.1 系统启动

完成整个系统的制作并逐步调整后,使用 Jflash 烧写Bootloader,然后利用Bootloader的tftp 工具,从宿主机下载内核映像和根文件系统映像并烧写到闪存上,最后启动开发板,引导系统。从串口输出系统中的启动信息可以看出,系统依次进行CPU 片级初始化、板级初始化和一些子系统初始化、并加载根文件系统,进入Busybox 的Shell 命令行,说明系统启动成功。

6.2 系统启动时间测试

本文采用开发板上 OSCR 寄存器测量内核映像解压所节省的时间,使用内核全局变量jiffies 测量启动过程各个部分的时间,测量所得时间数据如表2 所示:

从表中可以看出, Bootloader 启动时间与内核映像无关,当Bootloader 引导非压缩的Image 时,把内核映像拷贝到主存RAM 中需要耗费拷贝的时间。对于zImage,解压缩过程需要耗费545ms,而xipImage 则不需要。在xipImage 执行过程中,需要额外拷贝内核映像中可读写的数据段部分,因而内核启动时间要比zImage 要略长一下,但综合整体时间,使用Kernel XIP 执行方式的系统能有效的缩短系统启动时间。

6.3 系统内存使用测试

本文利用 RAMUST 和free 工具,测量系统使用的主存情况如表3 所示:

从表中可以看出,采用 Kernel XIP 的xipImage 内核映像通过增加对Flash 的使用需求,可以显著减少主存SDRAM 的使用量,Flash 上的内核代码的执行,不需要持续间断的动态刷新,从而降低了系统的整体功耗和成本。

总结:本文在通用Linux 2.6.12 内核基础上,以深圳亿道公司的XSBase255 开发板为硬件平台,研究并实现了以Kernel XIP 方式运行的ARM Linux 系统的移植,通过系统与性能测试,取得了较为理想的效果。

linux操作系统文章专题:linux操作系统详解(linux不再难懂)

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top