由X86 构架到ARM 构架的应用移植流程平台研究

2022-06-29 06:08迪,陈瑞,李
电子设计工程 2022年12期
关键词:驱动程序构架内核

冷 迪,陈 瑞,李 英

(深圳供电局有限公司,广东 深圳 518000)

早期开发任务少,嵌入式系统功能单一,不需要操作系统支持[1]。但随着功能和复杂性的增加,对系统的要求也越来越高。所以,像普通计算机一样在处理器中引入操作系统就成了一个必然的趋势[2]。由于操作系统的引入,能够充分利用处理器有限的资源,实现不同CPU 进程间的最佳切换,因此必然会把嵌入式系统引入到更广阔的领域[3]。目前X86架构虚拟化逐渐完善,但是仍然有些问题需要解决。小型机原CPU 单核数量较少,但单核率较高。但PC 服务器的CPU 内核较多,单一CPU 内核性能较差[4]。一些应用在移植过程中表现出不同的性能,这是小型机过渡到PC 服务器时不可避免的共同问题。

以ARM 为基础的嵌入式操作系统是目前信息市场的主流,也是一个热门话题。由于应用迁移过程平台公开了源代码,使其他人可以在自己喜欢的平台系统中移植代码和使用它,所以嵌入式操作系统受到关注,选择该系统作为应用迁移过程操作平台。为此,提出了由X86 构架到ARM 构架的应用移植流程平台研究。

1 应用移植流程平台结构层次化设计

由X86 构架到ARM 构架的应用移植流程平台结构如图1 所示。

图1 应用移植流程平台结构

图1是把内核分成两层,底层是驱动程序层,上层是虚拟文件系统层。这些层对应于内核的两个主要功能,驱动程序层负责管理底层硬件[5]。虚拟文件系统层为Linux上层应用程序提供对L1的访问。核心代码按照其功能可分为进程管理、内存管理、文件系统、设备控制、网络功能等模块[6]。每一个模块都很大,迁移过程中的主要工作是驱动设备控制。各开发板的硬件结构不同,需要增加或改进硬件驱动程序[7]。

1.1 平台设备驱动

驱动程序通常与应用程序迁移过程平台内核中的一个通用总线连接,例如USB、I2C等驱动程序[8]。但在嵌入式芯片中,很多设备都没有与公共总线连接。

平台设备驱动如图2 所示。

由图2 可知,使用USB 和I2C 总线控制器来控制主板上的设备,并通过一条廉价但功能强大的总线(包括两根导线)收集相关信息;LCD 控制器的作用是接收总线发送的信息,计数器通过计算数字系统中脉冲数来实现测量、计数和控制[9-10]。声道控制器采用联机音乐控制方式,输出DMX512/1990 信号,保证了系统的安全可靠[11]。

图2 平台设备驱动

1.2 LCD控制器

LCD 控制器结构如图3 所示。

图3 LCD控制器结构

由图3 可知,FCT 接收来自初始化、屏幕间隙和显示器等参数的指令。它根据指令生成一系列控制信号和相应的时序,并通过控制LCD 显示模块来完成相应的操作[12]。在FCT 输入LCD_FCT 为低电平时,对复位电路进行初始化,对复位标志和状态进行复位,并设置相关常数[13]。

LCD 控制器的主要功能是为计时器提供高品质的时间设定,LCD_FCT 中的微秒和毫秒计时器是为了满足不同时间的工作要求而设计的[14-15]。

定时器的时间常数存放在时间常数寄存器中,将MP 中的地址和控制信息发送给解码器。该解码器可根据不同的地址和控制信息产生相应的复位指令标志,将指示符号发送到控制电路[16]。

1.3 Apache服务器

Apache 服务器是指Apache 服务器端口中的嵌入式系统。在HTTP 端口上,当客户端向服务器发出连接请求时,服务器软件守护程序在客户端和服务器之间建立连接。如果守护程序从客户端收到HTTP 请求消息,那么就对其进行解析,并将解析的请求传递给后台处理程序。这个后端程序是PHP 和CGI。在对后端程序进行处理之后,客户端所需数据就会传送到服务器端,最终呈现在网页中。

1.4 触摸屏驱动层次结构

R2R 平台中,触摸屏驱动层次结构如图4 所示。

图4 触摸屏驱动层次结构

由图4 可知,如果高层应用程序需要获得触摸屏坐标,需要首先调用I2C 总线驱动程序,这些驱动程序的分层开放式系统调用打开文件界面,然后使用ioctl 或read 系统调用获取所需的坐标值。

由于输入设备具有多个触摸屏,因此鼠标和键盘都是输入设备。其基本工作机制是产生中断,然后内核将数据存储在缓冲区中。硬件方面,设置数据读取、输入事件管理、缓冲区管理共享模块;所有这些常规处理由输入驱动完成,剩下的是中断管理、数据读取和其他硬件驱动。

2 移植流程方案设计

Android 系统移植分析了UBOOT、Android 内核、用户空间的层次结构;下一步,根据层次结构找到与迁移最相关的代码。修改代码以适应硬件特性,完成代码移植。开始运行系统前,编译修改的UBOOT代码,并使用RENEWS 刻录机将BIN 文件(编译结构)刻录到R2R 平台的引导风扇上。修改后的内核随后被编译,内核镜像被拷贝到端口主机的TFTP 目录中;最后编译成Android 文件系统,拷贝到U 盘。该系统首先启动应用程序,下载内核,然后分析数据,最后内核从U 盘读取初始化文件,开始初始化操作,最后将初始进程加载到Android 用户空间。

2.1 引导程序移植

启动程序是与架构相关的一部分,是在运行操作系统内核和应用程序之前启动并加载系统的一小部分。一般情况下,不可能在嵌入式系统中建立通用的启动迁移。用户必须编写此小程序,完成硬件设备的初始化,建立存储空间映射,使系统软硬件达到适当的状态,才能使操作系统内核良好运行。

通常引导程序移植分为两步:

步骤一:CPU 依赖代码使用汇编语言实现。其中主要包括对硬件设备进行初始化;准备内存空间将引导程序复制到引导迁移设备上,设置堆栈读取ARM 空间,完成检测系统内存映射;

步骤二:将内核和根文件系统镜像从Flash 读取到ARM 空间;设置内核启动参数,调用内核。引导程序移植的工作流程如图5 所示。

图5 引导程序移植工作流程

2.2 内核移植

内核移植启动操作系统,执行内存管理任务调度,然后执行应用程序,或者等待用户的指令。尽管在功能间存在着复杂的调度关系,但应用迁移平台的层次结构使硬件相关代码具有独立性。在迁移过程中,只需要对进程、内存、设备等进行管理。对内核代码的修改包括以下部分:

1)在内核目录树中修改项目构建工具,设置环境变量,找到交叉编译工具链,重新登录。

2)建立灰色分区区域,修改ARM 表示的分区信息,使用灰色分区表创建文件内容;修改ARM 文件,根据分区设置指定初始化和内核启动程序。

通过执行MakeMenucon 命令,配置内核生成卡,选择SBC2410 位卡的处理器类型,将卡保存在串口中。在进入配置管理界面时,必须先验证用户的身份。验证是访客访问权的标志,不同权限验证对应不同的数据信息。

3 实验分析

3.1 交叉开发环境构建

移植之前,需确保主机上正确安装了操作系统和GCC 跨工具编译器链连接了目标板上的USB、串行和JTAG 接口,并且成功安装了驱动程序。该实验使用安装在主机上的RedHat9 和主机上的Linux 操作系统,以及ARM-Linux-GCC3 交叉编译工具。

3.2 实验结果与分析

单独使用X86架构、ARM架构与移植流程平台对比分析信息存储空间占用情况、重复信息剔除效率。

3.2.1 存储空间

添加Flash 分区信息,在目标板中的存储空间为64 MB,将其划分为4个区域,分别是分区1(占用1 MB空间)、分区2(占用3 MB 空间)、分区3(占用40 MB空间)、分区4(占用20 MB 空间)。

分别使用X86 架构、ARM 架构与移植流程平台对空间占用情况进行对比分析,对比结果如图6所示。

图6 不同架构空间占用情况对比分析

由图6 可知,使用X86 架构,分区1 所占空间为3 MB,分区2 所占空间为6 MB,分区3 所占空间为43 MB,分区4 所占空间为12 MB;使用ARM 架构,分区1 所占空间为2 MB,分区2 所占空间为6 MB,分区3 所占空间为32 MB,分区4 所占空间为24 MB;使用移植流程平台,分区1 所占空间为1 MB,分区2 所占空间为3 MB,分区3 所占空间为40 MB,分区4 所占空间为20 MB。由此可知,使用移植流程平台在目标板中的存储空间分区结果与实际需求一致。

3.2.2 重复信息剔除效率

分别使用X86 架构、ARM 架构与移植流程平台对比分析重复信息剔除效率,对比结果如表1 所示。

表1 不同架构重复信息剔除效率对比分析

由表1 可知,使用X86 架构最高剔除效率为60%;使用ARM 架构最高剔除效率为75%;使用移植流程平台最高剔除效率为99%,由此可知,使用移植流程平台重复信息剔除效率较高。

4 结束语

该文设计了一个由X86 构架到ARM 构架的应用移植流程平台,以满足当前社会发展的需要,具有良好的市场前景和强大的扩展能力。通过实验可知,该平台存储空间分区结果与实际需求一致,其最高重复信息剔除效率高达99%,移植效果较好,具有较强的性能。根据平台后期开发和运行的需要,提出了初步解决方案,为平台的后期运行和产品开发提供了依据。

猜你喜欢
驱动程序构架内核
构架云中《金桥》 打造强势期刊
人民情怀:柳青为文为人的内核(评论)
构架云中《金桥》 打造强势期刊
建筑安装造价控制核心要点构架
活化非遗文化 承启设计内核
避免Windows系统更新反复安装显示驱动
阻止Windows Update更新驱动程序
微软发布新Edge浏览器预览版下载换装Chrome内核
略论意象间的主体构架
妙用鼠标驱动