压铸锌铝件厂家
免费服务热线

Free service

hotline

010-00000000
压铸锌铝件厂家
热门搜索:
技术资讯
当前位置:首页 > 技术资讯

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

发布时间:2020-07-21 18:10:27 阅读: 来源:压铸锌铝件厂家

1 研究背景

本文引用地址: 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 工具将获得的内容格式化为树状关系图,最终获得内核启动过程函数关系调用图ee,为下面的工作提供很好的指引和帮助。

合肥碧莲盛电话

南昌碧莲盛医院好不好

北京碧莲盛植发医院怎么样

深圳碧莲盛植发