APP下载

基于ARM-Linux车载多媒体软件设计

2019-09-10王松

现代信息科技 2019年24期
关键词:移植

摘  要:本文以飞思卡尔公司的i.MX6 Dual微处理器为硬件平台,应用嵌入式Linux系统完成了车载多媒体系统的设计。对Bootloader程序进行了移植,后引导Linux内核编译以及裁剪移植,最后完成Linux系统文件系统的配置。在系统内核移植成功的基础上,完成了LCD驱动、触摸屏驱动、USB驱动等系统各个模块驱动程序的设计,实现了系统的基本功能。

关键词:车载多媒体;嵌入式Linux;移植

中图分类号:TN919.82;U463.6      文献标识码:A 文章编号:2096-4706(2019)24-0036-04

Abstract:Based on the i.MX6 Dual microprocessor of Freescale company as the hardware platform,this paper completed the design of vehicle multimedia system by using embedded Linux system. After porting the Bootloader program,booting the Linux kernel to compile and prune the porting program,and finally completing the configuration of the Linux system file system. On the basis of the successful transplantation of the system kernel,the design of LCD driver,touch screen driver,USB driver and other modules of the system is completed,and the basic functions of the system are realized.

Keywords:vehicle multimedia;embedded Linux;porting

0  引  言

目前,国内生产的产品功能上多数比较单一,结构相对简单。比较常见为车载的多媒体播放器、车载电话以及倒车雷达等产品。国内汽车电子产品中很少有整合了可视的倒车系统、音乐广播的播放以及智能导航的多媒体信息平台。目前国内的多功能车载多媒体系统总体还不稳定,而国内大型汽车电子厂商自主研发的产品无论在功能上还是在性能上与国外产品都有较大差距。

由于Linux系统是完全开源的操作系统,开发人员可以根据项目的实际需要来进行系统的裁剪以及移植,满足相关专业用户对自己的汽车多媒体操作系统的定制需求,而Linux操作系统的开源性质,会大大降低汽车多媒体系统的制作成本。本文以飞思卡尔公司的i.MX6 Dual微处理器为硬件平台,应用嵌入式Linux系统完成了车载多媒体软件设计与实现。

1  系统软件总体设计

系统软件框架图如图1所示,本设计以嵌入式Linux软件为系统软件,在此基础上进行相关应用程序、驱动程序的开发。后续工作包括嵌入式Linux内核的裁剪以及移植,LCD驱动、USB驱动、音频驱动以及蓝牙驱动的设计以及修改。最终完成相关应用软件对硬件的操作控制。

2  嵌入式Linux软件平台建立

在嵌入式Linux系统开发中由于目标机的容量通常比较小,在嵌入式软件开发当中通常遵循宿主机搭建交叉编译环境和TFTP以及NFS环境的搭建,在将相关项目编译完成后下载至目标机进行软件运行。本设计采用的宿主机为Ubuntu18.04系统。

2.1  交叉编译环境的搭建

交叉编译是指在某个主机平台上通常开发都在PC端进行,采用交叉编译器编译出可以在ARM平台上运行的代码过程。本文应用交叉编译器的相关版本arm-linux-gcc-4.5.1.tgz,在硬件方面应用基于ARM Cortex-A9为核心的硬件系统。下载好的arm-linux-gcc-4.5.1.tgz经过U盘拷贝至系统目录当中,应该放置在根目录之下。

2.2  搭建TFTP传输的环境

TFTP是基于传统C/S的模式进行工作的,TFTP的开发环境构建分为两个部分:其一是宿主机端的tftp-server的支持;其二是目标板的tftp-client的支持。

2.3  NFS的开发环境搭建

首先进行NFS服务器的安装,其次对服务器端的防火墙进行关闭。再则对NFS服务器进行配置,用root的身份登录到主机端。应用vi的编辑器进行/etc/exports文件的編辑。其次,建立目标机NFS开发环境。如果目标机对NFS不支持,那么应在交叉编译的环境中重新进行内核的编译,并增加支持的选项。

3  Linux内核在i.MX6 Dual上的移植

3.1  嵌入式Linux系统组成

嵌入式Linux系统内核是一个稳定性的代码,也是整个系统的核心软件。内核要为多个程序进行服务,为了程序的稳定运行,防止因为某个程序代码出错而影响其他程序,内核向所有的应用程序提供函数接口,为符合接口函数的应用程序提供服务。嵌入式Linux系统内核可以分为进程管理、内存管理、文件系统、设备控制、网络接口五部分,具体组成结构图如图2所示。

3.1.1  进程管理

进程管理主要担负着创建进程和销毁进程的职责,与此同时会处理进程和外部通讯之间的信息。不同进程之间通信通过进程调度来完成处理。从基本机理上讲进程调度实际上是进程管理中的一部分。

3.1.2  内存管理

内存作为计算机的核心资源,其是决定系统的性能优劣的关键性因素。在嵌入式的Linux系统当中支持虚拟内存,也允许有多个进程一起共享主内存的区域。Linux系统的内存管理可以分为硬件相关的部分和硬件无关的部分。对于硬件无关的部分为系统逻辑内存的对换和提供的进程映射的部分,而硬件相关的部分为内存管理相关硬件提供虚拟接口。

3.1.3  文件系统

Linux和Unix差不多,它们均把对象当中文件来进行操作,其中包含了FAT、EXT2/EXT3等相关逻辑文件的系统,同时包括了设备驱动程序。

3.1.4  设备控制

系统操作很多时候都需要相关指令映射到对应的设备上,相关外设设备需要有相关的驱动程序来作为控制指令进行相关工作。在嵌入式系统中的每个外部的设备要实现正常的功能,都应有相应的驱动程序。

3.1.5  网络接口

网络接口的主要作用是保存互联网各种网络标准,并对相应的网络硬件正常工作提供相应的支持,这种接口包含了网络驱动的程序以及网络协议两部分。操作系统负责管理这些接口,来实现应用程序和网络接口之间的数据传递。

3.2  Linux系统内核下载

本设计采用Git工具在Linux内核源代码的仓库来下载Linux内核源码,Linux内核源码主目录简介如表1所示。

在嵌入式系统中存储空间较小,而系统内核需要在内存空间进行程序的调度以及相关的控制,系统内核大小对目标系统的运行效率和稳定起到了很重要的作用。本文使用的是含有设备树的Linux内核,因此在内核移植时就不需要在内核源码目录arch/arm/plat-xxx以及arch/arm/mach-xxx修改相关板级的硬件信息,Linux内核通过eg和interrupts设备树文件节点属性,可以得到硬件设备的相关信息。所以,在移植设计的ARM Linux内核时,只要添加相关的配置文件,而不用根据硬件信息修改内核源码目录下大量的板级文件,这样可以大量减少Linux内核移植的工作量。

本文使用的Exyson4412芯片属于Exyson4系列的产品。而4.4.4版本的Linux内核已经对Exyson4系列的芯片相关硬件支持较为完善。在进行相关移植时有些代码可以直接复用。在将Linux-4.4.4内核移植到相关目标板之前,需要在Linux内核的源码下增加目标板相关的设备树文件以及目标板的配置文件。相对于ARM架构系列的芯片,相关的设备树文件被存放在Linux内核的源码根目录下arch/arm/boot/dts的目录下,而目标板配置文件被存放在Linux内核的源码根目录下的arch/arm/configs的目录下。

4  各模块驱动设计

4.1  LCD 驱动程序的实现

Linux为显示的设备提供了帧缓冲的接口。该接口是一个抽象内存的设备。通过该接口,上层应用程序在图形模式下运行,直接读写显示缓冲区。应用程序开发人员不关心显示页面更改机制和实际物理现有位置。具体操作全部由Framebuffer设备驱动来实现。

Framebuffer设备的驱动程序一般使用文件层-驱动器层相关接口的模式。系统文件层应用和其他的字符设备相同的文件操作界面。如果涉及硬件有关驱动的程序层,则要定义函数指针以及数据结构。帧缓冲的设备最终将通过它们实现底层相关的显示驱动的程序。Linux 4.4.4内核当中提供了LCD驱动程序相应的接口函数,帧缓冲的设备给LCD 驱动提供了相应文件操作的接口。

本文采用的LCD属于彩色反射有源矩阵TFT宽视角、高亮度液晶的模块。每个像素由RGB三种颜色组成,每种颜色是6位,最大显示为260,000种颜色。方法是:

(1)对$KERNEL/arch/arm/mach-exynos4412/mach -smdk4412.c进行修改,并添加LCD寄存器相关头文件。

(2)添加LCD初始化的代码,设置LCD的控制寄存器。完成LCD驱动程序代码修改后,还应将LCD驱动程序代码添加到内核中。在系统当中,LCD显示器将在系统启动时连续工作,并且没有加载LCD设备驱动程序的问题。因此选择将LCD驱动程序静态编译到内核中,从而提高系统的效率。

4.2  USB 接口驱动移植

Linux内核系统提供了与USB设备驱动程序开发直接相关的核心数据结构,它在整个设备驱动程序的框架中起着重要作用。linux/fs.h中定义的File_operation数据结构为内核的其余部分提供了标准接口。

与此同时,在Linux kernel源碼的driver/usb/usb-skeleton.c目录中为设计开发人员,提供了一个最基础的USB驱动程序,可以称为USB骨架。通过对USB骨架少量的修改,就可以完成本设计的对USB设备驱动的需求。它提供了USB驱动的file_operations函数具体实现,从而有效降低了USB驱动程序的开发难度。本设计的USB驱动开发在它的基础上进行相关改进设置,仅需要对USB进行必要的初始化就可以使用。

4.3  触摸屏驱动的实现

本设计采用电容式五点触控触摸屏,采用IIC接口管理芯片为FT5206来连接4412的核心板,FT5206触摸芯片与核心板之间通过三条线数据线进行连接:两条为用于IIC数据传输,另外一条为中断引脚。由于,驱动触摸芯片与主机之间是通过IIC接口进行连接的,因此需要采用IIC驱动框架;同时考虑到触摸屏最终是经过输入子系统的方式进行输入事件的上报,因此还需要采用输入子系统的驱动框架。

5  结  论

综上所述,随着汽车行业的快速发展,对车载多媒体技术提出了更高的要求。在这种技术发展背景基础上,本文设计了一种基于以飞思卡尔公司的i.MX6 Dual微处理器为硬件平台嵌入式Linux车载多媒体系统。该系统集合了车载多媒体、导航系统、倒车影像系统等功能,最大程度的阐述整个车载多媒体系统的实现过程,为实际车载多媒体系统的开发和设计提供基本框架。

参考文献:

[1] Paul Scherz,Simon Monk. Practical Electronics for Inventors,Second Edition [M].USA:McGraw-Hill/TAB Electronics,2016.

[2] 谭沛锟.A汽车影音业务竞争战略研究 [D].广州:广东工业大学,2014.

[3] 魏政典.汽车驾驶多媒体教学系统的交互界面设计与开发 [D].上海:上海交通大学,2014.

[4] LOPATTANAKIJ P,TIWATTHANONT P. Development of seismic data acquisition based on ARM-Linux [C]//Electric Information and Control Engineering (ICEICE),2011 International Conference on. IEEE,2011.

[5] CAO J,YIN L,ZHAO H. Design and Development of Embedded Multimedia Terminal [C]//电子商务、工程及科学领域的分布计算和应用国际会议,2010.

[6] MOSNEANG C,MISCHIE S,PAZSITKA R. Integrating the accelerometer of the AM335X Sitara Starter Kit in a QT application [C]//Education & Research Conference. IEEE,2014.

[7] RUBANOV V,SILAKOV D . Ensuring portability of Linux applications through standardization and knowledge base driven analysis [J].Science of Computer Programming,2014,91:234-248.

作者簡介:王松(1983-),男,汉族,湖北襄阳人,开放工程师,硕士,研究方向:集成电路工程。

猜你喜欢

移植
多维视野观照中的矛盾与张力阐释
干细胞移植对扩张型心肌病模型兔心肌胶原及血管影响
基于FreeRTOS系统和LwIP协议栈的网络通讯
西方音乐元素在二胡演奏中的移植
脐带间充质干细胞移植治疗难治性系统性红斑狼疮患者的疗效分析
心脏自体干细胞移植治疗心肌梗死新进展
“移植”瘦人粪便能减肥?
浅析大树移植养护管理技术
基于μC/OS—II 和 DSP 的伺服控制系统的应用研究
基于Cortex—M4内核的μCOS—Ⅱ移植