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

发布者:创新之梦最新更新时间:2012-11-26 来源: 维库开发网关键字:XIP技术  ARM  Linux系统 手机看文章 扫描二维码
随时随地手机看文章

  1 研究背景

  ARM Linux 嵌入式系统在不同应用领域应用的日趋广泛,它们存储容量相对较小、系统的电能消耗及启动速度要求严格。为了满足它们对启动速度和低能耗的要求,本文采用内核XIP 方式运行ARM Linux 系统,避免把内核从Nor Flash 拷贝到主存SDRAM 空间,让内核运行在低功耗的NOR Flash 上,节省系统启动时间,降低系统对SDRAM 的需要,减少电能消耗,使产品能够持续使用更长时间。

  2 开发工具及相关技术介绍

  2.1 硬件平台

  本文选择深圳亿道公司的XSBase255 开发板,其处理器采用的是Intel? XScalePXA255,400MHz,SDRAM 为Samsung 64Mbyte,Flash 为Intel? strata flash 32Mbyte。

  2.2 软件工具

  Linux-2.6.12 linux-2.6.13-kgdb-2.3 Cramfs-linear-xip-4-patch busybox-1.10.0 ramust-arm2.3XIP 技术介绍XIP 全称eXecute-In-Place(就地执行),是一种代码执行方式,分为Kernel XIP[1]和Application XIP[2]两种。Kernel XIP 适用于操作系统启动过程,而Application XIP 主要用于系统启动后应用程序的执行。

  Kernel XIP 原理如下,内核映像在Flash 设备上执行以后,只把映像中要读写的.data和.bss 拷贝到SDRAM 主存中,同时设置好系统的MMU,内核运行过程中,代码段.text 指向Flash 空间,.data 和.bss 指向SDRAM 主存空间。相对于全映射的执行方式,系统节省了解压缩和拷贝代码段的时间,节省了代码段占用的RAM 主存空间。


  Application XIP 原理与Kernel XIP 类似,管理NOR Flash 空间的文件系统必须具有线性的一致的地址空间,可执行的应用程序的代码段在NOR Flash 中线性连续,且地址能够从文件系统知晓。操作系统执行应用程序时,系统的程序加载器(loader)在建立虚拟进程空间后,只需要把应用程序的数据段和未初始化段等要读写的段装入SDRAM 主存空间,并建立好映射,而对于可执行文件的只读的代码段空间则无需装入,直接映射到NOR Flash 设备上应用程序文件的代码段,程序执行时直接从NOR Flash 设备上获取代码执行。

  3 ARM Linux 启动过程分析

  开发板上电启动后,首先执行Bootloader 程序,Bootloader 进行初步的环境初始化并准备好内核参数。对于本文采用的内核XIP 执行方式,Bootloader 不需要从Flash 设备中解压拷贝内核映像到SDRAM主存中,运行内核映像后,把需要读写操作的数据段拷贝到SDRAM主存的适当位置,并进行片级初始化、板级初始化等内核运行的硬件环境初始化工作,最后是根据内核参数执行内核各个子系统的初始化。

  3.1 执行映像生成过程及关系

  生成内核映像的一般过程是,使用 make menuconfig 配置内核,再使用make zImage 或make bzImage 生成压缩的内核映像zImage 或bzImage,这样生成的是压缩的内核映像。本文通过配置CONFIG_XIP_KERNEL,使系统生成xipImage,其生成图如图2 所示:


  3.2 获得内核启动过程函数关系调用图

  这里使用 KFT 工具来获得。KFT 全称Kernel Function Trace[3],主要功能是跟踪函数调用事件。KFT 收集调用数据后,把数据保存在/proc/kft_data,在XScale 平台上配置KFT 时,KFT 需要使用cmpxchg 函数,而原始内核不支持,所以需要修改源代码,添加__cmpxchg_u3和__cmpxchg 函数的声明和定义,以及宏cmpxchg 和arch_align_stack(x)。准备工作完成后,下载到开发板上运行并获取原始跟踪数据。然后,调用addr2sym 工具对原始跟踪数据进行格式化,可以获取函数调用顺序图,再使用kd 工具将获得的内容格式化为树状关系图,最终获得内核启动过程函数关系调用图kft.tree,为下面的工作提供很好的指引和帮助。[page]

  3.3 Bootloader 的修改

  Bootloader 分为两个阶段,第1 阶段采用汇编语言实现。第2 阶段采用C 语言实现。除了进行普通Bootloader 所需的片级和板级初始化之外,针对内核XIP 执行方式所做的主要工作有以下2 个:

  1:通过查看体系Makefile 得到XIP 方式的DATAADDR 和TEXTADDR。

  2:建立初始页表时,为.data 和.bss 段建立好3MB 连续空间以存放xipImage。

  4 基于XIP 的ARM Linux 内核移植

  本文采用的标准 Linux 内核2.6.12 版本不支持在XSBASE255 上直接运行,需要根据开发板硬件体系结构进行相关移植和订制裁减工作。

  4.1 内核链接脚本

  生成内核映像的链接脚本是在 arch/arm/kernel/vmlinux.lds 中,而vmlinux.lds 是由同目录下的vmlinux.lds.S 生成,查看脚本内容,可以获知内核映像各节的虚拟地址取决于内核符号TEXTADDR和DATAADDR,以及各节的大小。对于xipImage,其.init,.text 和__ext_table都是在NOR Flash 上,只有.data 节.bss 节在主存上,因而根据配置过程中设置的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 映像。至此根文件系统制作完毕。[page]

  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 系统的移植,通过系统与性能测试,取得了较为理想的效果。

关键字:XIP技术  ARM  Linux系统 引用地址:基于XIP技术的ARM Linux系统的研究与移植

上一篇:ARM乘法指令
下一篇:Windows CE.NET下ADC驱动开发设计

推荐阅读最新更新时间:2024-03-16 13:14

揭秘如何保证EPS稳定可靠
汽车行业蓬勃发展,驾驶汽车的人越来越多,操作汽车方向盘也变得尤为熟悉和重要,其稳定可靠直接影响驾驶员的驾驶体验,而助力转向系统起到关键的作用,本文我们来聊聊当今主流的电子助力转向系统如何保证稳定可靠。 一、汽车助力转向系统发展历程 汽车助力转向系统从最早操作费力的传统机械转向系统,发展到机械液压助力转向系统,到当下普遍的电子液压助力转向系统,已经是在助力转向系统的发展历程中有了质的飞跃。现如今随着节能环保与智慧安全已成为时代发展的主题,电子助力转向系统(Electronic Power Steering,简称 EPS)随之诞生。在电子液压助力转向系统的基础上去除了液压助力系统,使得汽车助力转向系统变得更环保,更节能,更人性化
[嵌入式]
揭秘如何保证EPS稳定可靠
ARM单片机超声波监测预警系统电路设计
随着信息化、智能化、网络化的发展,嵌入式系统技术获得广阔的发展空间,工业控制领域也进行着一场巨大的变革,以32位高端处理器为平台的实时嵌入式软硬件技术将应用在工业控制的各个角落。嵌入控制器因其体积小、可靠性高、功能强、灵活方便等许多优点,其应用已深入到工业、农业、教育、国防、科研以及日常生活等各个领域,对各行各业的技术改造、产品更新换代、加速自动化化 进程、提高生产率等方面起到了极其重要的推动作用。 障碍物距离检测电路的设计 在本系统中超声波测距电路是由MICROCHIP的PIC16C57设计而成的,选用的超声波传感器是T/R40-16压电陶瓷传感器。在工作中,主控器PIC16C57发出信号使发射端的超声波换能器发
[单片机]
<font color='red'>ARM</font>单片机超声波监测预警系统电路设计
基于ARM核的音频解码器单芯片系统
摘 要: 简要介绍Cirrus Logic公司的嵌入式处理器产品EP7209的结构、功能、接口特性等,并给出基于EP7209所能构建的最大系统。对使用EP7209构建嵌入式系统有一定参考价值,也有助于了解ARM核。 关键词: 嵌入式处理器 嵌入式系统 ARM核 引 言    EP7209是世界上第一片既支持流行的MP3标准,也支持诸如Microsoft Audio等快速涌现的互联网音频压缩标准的数字音频解码器片上系统。EP7209在74MHz下运行时其性能与基于100MHz英特尔奔腾芯片的个人计算机相同,且消耗的功率特别小:
[嵌入式]
ARM CPU CS89712与C5510 DSP 的接口设计
  引 言   目前嵌入式系统已被广泛地应用到电子产品领域和无线通信、网络通信等高端设备领域。32 位ARM嵌入式处理器具有高性能、低功耗的特性,DSP芯片由于功能强大,加上接口方便、软件可用资源丰富、编程方便、稳定性好、精度高等优点,应用也越来越广泛。通常在嵌入式系统的设计中,由ARM嵌入式处理器实现整个系统的协调控制和网络功能,由DSP 芯片来执行复杂计算,因此需要实现ARM处理器和DSP 之间的数据交换。从某种程度上来说,ARM嵌入式处理器和DSP 之间数据交换的速度决定了整个系统的运行速度和性能。   ARM CPU CS89712 的特点   CS89712 是Cirrus Logic 公司一款基于ARM7TDM
[单片机]
<font color='red'>ARM</font> CPU CS89712与C5510 DSP 的接口设计
ARM第二季度营收增长17%至3.5亿美元
7月27日消息,据美国媒体报道,英国芯片设计公司ARM控股当日公布了第二季度业绩,由于新许可协议和ARM芯片出货增长,许可收入和版税收入都在增长,推动每股利润同比上升18%。不久前软银提出了以310亿美元收购ARM。 总部位于英国剑桥的ARM称,在6月30日结束的季度里,每股利润同比增长18%至8.6便士,营收增长17%至2.676亿英镑(约合3.5亿美元),许可收入增长24%,版税收入增长19%。调整后的税前利润为1.3亿英镑(约合1.7亿美元),同比增长5%。第二季度ARM设计的芯片出货量为36亿块,其中42%为物联网芯片,60%的芯片针对非移动应用。 ARM首席执行官西蒙 希格斯(Simon Segars)
[单片机]
基于ARM嵌入式最小系统的软硬件架构的改进研究
1. 引言 随着嵌入式相关技术的迅速发展,嵌入式系统的功能越来越强大,应用接口更加丰富,根据实际应用的需要设计出特定的嵌入式最小系统和应用系统,是嵌入式系统设计的关键。目前在嵌入式系统开发的过程中,开发者往往把大量精力投入到嵌入式微处理器MPU(Micro Processing Unit)与众多外设的连接方式以及应用代码的开发之中,而忽视了对嵌入式系统最基本、最核心部分的研究。 当前在嵌入式领域中,ARM(Advanced RISC Machines)处理器被广泛应用于各种嵌入式设备中。由于ARM嵌入式体系结构类似并且具有通用的外围电路,同时ARM内核的嵌入式最小系统的设计原则及方法基本相同,这使得对嵌入式最小系统的研究在
[单片机]
基于<font color='red'>ARM</font>嵌入式最小系统的软硬件架构的改进研究
基于ARM11和DSP协作视频流处理技术的3G视频安全帽设计
  1.引言   为提高在高危工作场所现场作业的可控性,本文采用仿生学原理和高集成度设计实现了与人眼同视角的3G视频安全帽。本设计由视频安全帽和腰跨式数据处理终端两部分组成,采用高可靠性航空插头连接。其中图像处理采用三星公司的S3C6410ARM11处理器和TMS320DM642 DSP处理器组成。本设计结合DSP处理器在视频压缩方面的优势和运行于ARM之上的Linux操作系统在数据管理与任务调度机制方面的出色表现,由DSP完成图像处理功能,并通过高速接口把视频数据传输给嵌入式微处理系统,完成视频数据的传输、存储功能。   2.系统构成   本设计由视频安全帽和腰跨式视频终端两部分组成。视频安全帽中包含1路视频输入、1路音频
[单片机]
基于<font color='red'>ARM</font>11和DSP协作视频流处理<font color='red'>技术</font>的3G视频安全帽设计
基于ARM处理器的MVB 2类设备研究
1 引 言 列车需要传输大量的设备控制和旅客服务信息,随着这些信息的数量和种类不断地增长,迫切需要一种大容量,高速度的信息传输系统。为此,国际电工委员会(IEC)制定了一项用于规范车载设备数据通信的标准——IEC61375(列车通信网标准),即TCN标准,该标准于1999年6月成为国际标准。目前国际上主要的TCN产品供应商是德国西门子和瑞士Duagon公司,国内的株洲电力机车研究所和大连北车集团电力牵引研究所等单位进行了大量的TCN相关研究工作并取得了丰硕的科研成果。 TCN标准推荐在机车上层使用绞线式列车总线WTB,在下层使用多功能车辆总线MVB。MVB总线和机车中的各种电气设备相连,这些设备按性能可以分为5类,其中二类设备
[应用]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
  • 学习ARM开发(16)
    ARM有很多东西要学习,那么中断,就肯定是需要学习的东西。自从CPU引入中断以来,才真正地进入多任务系统工作,并且大大提高了工作效率。采 ...
  • 学习ARM开发(17)
    因为嵌入式系统里全部要使用中断的,那么我的S3C44B0怎么样中断流程呢?那我就需要了解整个流程了。要深入了解,最好的方法,就是去写程序 ...
  • 学习ARM开发(18)
    上一次已经了解ARM的中断处理过程,并且可以设置中断函数,那么它这样就可以工作了吗?答案是否定的。因为S3C44B0还有好几个寄存器是控制中 ...
  • 嵌入式系统调试仿真工具
    嵌入式硬件系统设计出来后就要进行调试,不管是硬件调试还是软件调试或者程序固化,都需要用到调试仿真工具。 随着处理器新品种、新 ...
  • 最近困扰在心中的一个小疑问终于解惑了~~
    最近在驱动方面一直在概念上不能很好的理解 有时候结合别人写的一点usb的例子能有点感觉,但是因为arm体系里面没有像单片机那样直接讲解引脚 ...
  • 学习ARM开发(1)
  • 学习ARM开发(2)
  • 学习ARM开发(4)
  • 学习ARM开发(6)
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved