当前位置:首页 > 嵌入式 > 嵌入式硬件

摘 要:文章在以ARMS3C2440为核的硬件平台上应用Linux操作系统开发了船舶导航系统,完成了系统的硬件设计、软件设计、交叉编译环境的建立、引导程序的移植、内核的移植、驱动程序的编写和根文件系统的建立等,实现了系统的功能。

关键词:嵌入式;S3C2440;Linux; 船舶;导航;

1.前言

集计算机技术、通信技术、微电子技术等多种技术为一体的嵌入式技术进入到了一个飞速发展的阶段,嵌入式系统已被广泛应用到了航空、消费电子、信息家电、网络通信等各个领域。ARMS3C2440ARM是嵌入式处理器是性价比较优秀的芯片,在各个领域的开发应用有着广阔的应用前景。

船舶导航技术也应随着科学技术背景的改变不断地向着高性能稳定性的方面发展,潜入式技术,为其提供了优质的开发资源。

嵌入式系统需要一套高度简练、易开发、多任务,价格低廉的操作系统。源码开放的Linux满足这些要求。并且标准Linux操作系统比较庞大,因此,需要根据实际应用对标准Linux进行重新的移植、裁剪和配置,生成代码紧凑、代码量小的特定操作系统。

2.导航系统的硬件设计

所设计的车载导航系统的硬件平台以基于ARM902T的SAMSUNG公司的32位高性能嵌入式微处理器S3C2440A为核心,包含了LCD液晶显示模块、存储器模块(Flash、SDRAM)、GPS模块、串行接口、USB接口、IrDA红外通讯接口、网络接口等外围部分。

S3C2440A嵌入式微处理器采用16/32位精简指令集,具有高性价比,低功耗,高性能的特点,为掌上设备和一般类型应用提供了小型微控制器的解决方案。为了减少总的系统消耗,S3C2440A包括了以下部分:独立的16KB指令缓存和16KB数据缓存,MMU,LCD控制器(STN/TFT),NAND Flash启动加载器,存储管理器(片选逻辑与SDRAM控制器),3通道的UART,4通道的DMA,4通道的脉宽调制定时器,I/O端口,RTC实时时钟,8通道10位的A/D控制器及触摸屏接口,IIC接口,IIS接口,音频接口,USB主机,USB设备,SD主机/多媒体卡接口,2通道的SPI,摄像头接口,PLL时钟发生器以及电源管理等。

3.船舶导航系统的软件设计

3.1软件功能与组成

船舶导航系统的软件包括嵌入式操作系统、GUI图形用户界面、应用程序三个部分,其中嵌入式操作系统和GUI图形用户界面属于关键技术,它们的好坏决定了系统能否得到成功的应用。应用程序建立在嵌入式操作系统和GUI图形用户界面之上,上电之后启动过程如图2所示。在软件设计中,操作系统采用使用广泛的内核源代码开放的嵌入式Linux,GUI图形用户界面采用源代码开发的Micro windows。

3.2 交叉编译环境的建立

在满足系统稳定、安全、可靠的基础上,嵌入式产品的体积要尽可能小,从而不能够提供足够的资源供编译过程使用,因此,必须建立一种交叉编译的环境,即在高性能的宿主机上对即将运行于目标机上的程序进行编译,生成可在目标机上可以运行的代码格式,然后下载到目标机中运行。Linux环境下使用GNU工具完成编译、链接等过程,包括针对目标系统的编译器gcc、针对目标系统的二进制工具binutils、针对目标系统的标准c库glibc和针对目标系统的Linux内核头文件。

在linux的根目录下,通过命令tar Ixvf cross-2.95.3.tar.bz2进行解压缩,执行完毕之后在/usr/local/目录下自动生成arm/2.95.3目录,进入2.93.3目录下可以看到arm-linux、bin、include、lib等各种目录,说明交叉编译工具安装完毕,编译环境已经建立起来了。

3.3 引导程序的移植

受嵌入式系统资源的限制,嵌入式系统的引导程序并不像PC机上的引导程序一样是由BIOS和位于硬盘MBR中的引导程序组成,整个系统的引导加载任务主要是由BootLoader的引导程序来完成的。BootLoader是系统复位后首先要执行的代码,主要作用是初始化硬件设备、建立内存空间的映射等,将系统的软硬件环境带到一个合适的状态,从而为操作系统和应用程序的调用建立一个良好的环境。

系统的软件设计中采用的引导程序是韩国Mizi公司开发的BootLoader----vivi。在嵌入式系统中,BootLoader是高度依赖于硬件的,在嵌入式系统中建立一个通用的BootLoader几乎是不可能,因此对于每一种特定的平台,都要移植一个BootLoader。

针对系统的引导程序移植的思路是找到一个与所设计的平台最相近的平台的BootLoader,然后根据所设计平台的硬件参数对BootLoader进行修改,从而完成BootLoader的移植。首先根据实际情况修改vivi工程管理文件Makefile文件中的相关参数,包括交叉编译器库和头文件路径,交叉编译开关选项设置,Linux内核代码中的库和头文件路径等。然后根据硬件平台的参数修改相应的配置,如处理器时钟、存储器初始化、通用I/O初始化。然后进行配置、编译生成可执行的代码。

3.4 内核的移植

由于嵌入式系统是针对特定应用的,而且资源有限,所以标准Linux无法应用到嵌入式系统中,因此必须根据实际情况对Linux进行裁剪、配置,从而产生一个适用的嵌入式Linux操作系统。Linux内核的移植包括获取源代码、修改设置、裁减配置和编译。

3.4.1获取源代码

Linux内核源代码一般都有专门的机构负责维护,我们可以从这些机构的网站上下载下来使用。修改设置

嵌入式系统的应用的针对性很强,从站点上下载下来的内核不可能包含针对所有嵌入式系统的代码,因此需要对代码进行修改设置,从而适合目标平台。一般包含下面几步。

① 编写与处理器相关的代码。主要包括时钟设置、中断设置、存储器分配及其他一些寄存器的设置等等,这些与S3C2440处理器相关的代码放在/arch/arm/mach-S3C2440目录下。

② 修改根目录下的工程管理文件Makefile,指定所移植的硬件平台和交叉编译器的路径。

③ 修改/ arch/arm目录下的工程管理文件Makefile,指定内核运行的虚拟地址,修改该目录下的配置文件config.in,以便在执行配置命令时能够显示S3C2440的相关信息。

④在/arch/arm/def-configs目录下添加配置好的S3C2440的配置文件。在/arch/arm/boot/compressed目录下添加处理器的初始化代码head-S3C2440.s。

⑤ 修改/arch/arm/kernel目录下的工程管理文件Makefile,确定文件类型之间的依赖关系。

3.4.2裁减配置及编译

修改完内核设置后,就可以对内核进行裁减配置及编译了,在配置中剪裁掉冗余的部分,使编译生成的最终的内核的映像文件代码量尽可能小。执行如下命令:

# make menuconfig

进入配置菜单,选择处理器类型和所需要的各种外设、协议的支持等等, 包含了LCD、触摸屏、串口、声音、EXT2、FAT和JFFS2文件系统以及TCPIP协议的支持.

# make dep

搜索Linux编译输出与源代码之间的依赖关系,并生成依赖文件。

# make zImage

编译Linux内核,生成压缩的内核映像文件zImage。存放在/arch/arm/boot/目录下。

3.5 驱动程序的编写

驱动程序是操作系统内核和底层硬件之间的接口,驱动程序为应用程序屏蔽了硬件的细节,通过驱动程序,应用程序对硬件的操作可以像对普通的文件操作一样方便。驱动程序的主要作用是初始化和释放硬件设备,检测和处理硬件设备出现的问题,在应用程序、内核和底层硬件之间传输数据。

由于嵌入式系统是针对具体应用的,因此,应该根据具体的平台编写相应设备的驱动程序,以方便应用程序对底层硬件的访问。每一个系统调用都对应着file_operations结构的每一个成员,编写驱动程序主要是编写底层设备需要的各个操作函数并填充结构file_operations,该结构在/include/Linux/fs.h文件中定义。

驱动程序通过设备名、主设备号和从设备号与具体的硬件相联系。驱动程序可以以动态或者静态方式加载到内核当中,在调试阶段,一般以动态的方式加载驱动程序,而在最终形成产品时,添加到内核当中,每次启动内核时自动加载。

3.6 根文件系统

一个嵌入式产品的稳定运行,除了引导程序、内核之外,还必须有一个区域用来为用户提供支持架构和用户使用的应用软件,存放数据读写的结果,这个区域就是根文件系统。嵌入式系统中通常使用的根文件系统有:Romfs、Cramfs、Ramfs、JFFS2、EXT2等,另外根文件系统既可以建立在RAMDISK上,也可以建立在Flash上,在RAMDISK上建立根文件系统Cramfs。

4.结束语

在船舶导航系统中采用源代码完全开放的嵌入式Linux完全可以代替WinCE等商业操作系统,从而减低了系统的成本,增加了市场的竞争力。通过对系统的开发,笔者有以下创新点:

(1)在程序中加入一些输出语句,以便在调试过程中,在超级终端上显示一些通过串口打印的调试信息,可以对程序运行情况进行观察。

(2)由于串口下载速度较慢,BootLoader要尽可能支持网络,通过网络下载内核和文件系统,加快开发进度。

参考文献:

[1] 田 泽.嵌入式系统开发与应用教程[M].北京:北京航空航天大学出版社,2005.

[2] 韩俊淑,曾锐利,李长安.PID算法在蓄电池充电控制系统中的应用[J].自动化技术与应用,2005,24(9):48~51.

[3] 黄进.含摩擦环节伺服系统的分析及控制补偿研究[D].西安电子科技大学博士论文.西安:西安电子科技大学,1998.

[4] 李卓,萧德云等. 基于神经网络的模糊自适应PID控制方法. 控制与决策,1996(3):340-345

[5] 苏义鑫,王子毅,张素文.μClinux在潜入式系统中的移植研究[J].微计算机信息,2006.11-2:58-61.

[6] 卢剑翔,刘成安,胡和智,等.基于S3C2410的CramFS根文件系统的移植[J]. 微计算机信息,2006.11-2:133-135.

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

9月2日消息,不造车的华为或将催生出更大的独角兽公司,随着阿维塔和赛力斯的入局,华为引望愈发显得引人瞩目。

关键字: 阿维塔 塞力斯 华为

加利福尼亚州圣克拉拉县2024年8月30日 /美通社/ -- 数字化转型技术解决方案公司Trianz今天宣布,该公司与Amazon Web Services (AWS)签订了...

关键字: AWS AN BSP 数字化

伦敦2024年8月29日 /美通社/ -- 英国汽车技术公司SODA.Auto推出其旗舰产品SODA V,这是全球首款涵盖汽车工程师从创意到认证的所有需求的工具,可用于创建软件定义汽车。 SODA V工具的开发耗时1.5...

关键字: 汽车 人工智能 智能驱动 BSP

北京2024年8月28日 /美通社/ -- 越来越多用户希望企业业务能7×24不间断运行,同时企业却面临越来越多业务中断的风险,如企业系统复杂性的增加,频繁的功能更新和发布等。如何确保业务连续性,提升韧性,成...

关键字: 亚马逊 解密 控制平面 BSP

8月30日消息,据媒体报道,腾讯和网易近期正在缩减他们对日本游戏市场的投资。

关键字: 腾讯 编码器 CPU

8月28日消息,今天上午,2024中国国际大数据产业博览会开幕式在贵阳举行,华为董事、质量流程IT总裁陶景文发表了演讲。

关键字: 华为 12nm EDA 半导体

8月28日消息,在2024中国国际大数据产业博览会上,华为常务董事、华为云CEO张平安发表演讲称,数字世界的话语权最终是由生态的繁荣决定的。

关键字: 华为 12nm 手机 卫星通信

要点: 有效应对环境变化,经营业绩稳中有升 落实提质增效举措,毛利润率延续升势 战略布局成效显著,战新业务引领增长 以科技创新为引领,提升企业核心竞争力 坚持高质量发展策略,塑强核心竞争优势...

关键字: 通信 BSP 电信运营商 数字经济

北京2024年8月27日 /美通社/ -- 8月21日,由中央广播电视总台与中国电影电视技术学会联合牵头组建的NVI技术创新联盟在BIRTV2024超高清全产业链发展研讨会上宣布正式成立。 活动现场 NVI技术创新联...

关键字: VI 传输协议 音频 BSP

北京2024年8月27日 /美通社/ -- 在8月23日举办的2024年长三角生态绿色一体化发展示范区联合招商会上,软通动力信息技术(集团)股份有限公司(以下简称"软通动力")与长三角投资(上海)有限...

关键字: BSP 信息技术
关闭
关闭