基于嵌入式Linux的船舶车钟记录仪设计
刘建设;杨俊飞
【摘 要】为了满足当前船舶车钟记录仪对实时性强、人机交互性好等要求,设计了以ARM9处理器为硬件平台,以嵌入式Linux操作系统为核心的船舶车钟记录仪.详细描述了该系统的主要功能、硬件结构与软件设计方法.完成了嵌入式Linux操作系统移植、驱动程序设计和应用程序设计.应用程序采用多线程的设计方法,实现了数据的采集、显示与打印的同步执行.实践证明该系统操作方便,满足车钟记录仪的设计要求.
【期刊名称】《船电技术》
【年(卷),期】2015(035)003
【总页数】4页(P40-43)
【关键词】车钟记录仪;ARM;嵌入式Linux
【作 者】刘建设;杨俊飞
【作者单位】武汉船用电力推进装置研究所,武汉430064;武汉船用电力推进装置研究所,武汉430064
【正文语种】中 文
【中图分类】TP368.2
0  引言
船舶车钟记录仪主要用于接收、显示和保存船舶航行过程中的一些重要数据,如主航车钟车令、应急车钟车令、螺旋桨转速等,并能够进行历史数据查询和数据打印[1]。
随着信息技术、计算机技术的迅速发展,嵌入式系统有了广泛的应用。嵌入式Linux是应用于嵌入式设备上的一种操作系统。可运行在X86、MIPS、ARM、Motorola、NEC  等多种硬件平台, 而且开放源代码,在新兴的嵌入式操作系统领域获得了飞速的发展。本文基于ARM9硬件平台,完成了嵌入式Linux操作系统的移植,并实现了船舶车钟记录仪的应用程序设计。
1 系统硬件设计
1.1 系统功能
本文设计的车钟记录仪主要实现了以下四个功能:数据采集、数据保存、数据打印、人机界面显示和设置。其中:
数据采集:主要实现1)船舶驾控室与集控室左/右主航车钟车令信号、螺旋桨转速信号的采集,共六路4~20 mA信号。2)左/右应急车钟信号的读取,为两路485信号。
数据保存:定时对采集到的数据进行保存,并能在主航车钟或应急车钟车令发生变化、螺旋桨转速变化超过设定值时自动进行数据保存。
数据打印:能够根据用户设置的时间范围,自动打印该段时间内保存的所有数据。打印过程中系统能同时进行数据采集与显示。
人机界面和设置:通过图形化人机界面显示采集到的数据,并能进行系统时钟设置、打印时间设置以及在线进行模拟量输入信号的标定等。
1.2 硬件方案设计
嵌入式系统的核心部件是嵌入式微处理器,目前嵌入式处理器的品种总量已经超过1000多种,流行体系结构有三十几个系列,就目前来看,32位的ARM微处理器是嵌入式处理器的主流[2]。其中ARM9系列的微处理器能充分满足本系统对实时性的要求,对外围接口电路和今后扩展系统的要求等,而且ARM9系列的微处理器价格相对同类产品价格不高,所以无论从技术应用方面,还是在性价比方面,ARM9系列都是本系统最佳选择。本系统选择ARM9系列微处理器中型号为S3C2410的芯片。
S3C2410片上集成了丰富的外设资源:存储器管理单元、NAND FLASH接口、LCD控制器、3通道串行接口、2通道SPI接口、触摸屏接口的8通道10位ADC、带日历功能的实时时钟控制器、USB接口、SD接口等,简化了系统外围电路的设计[3]。
本系统采用核心板+底板的控制方案。其中核心板主要实现嵌入式Linux的最小系统,包括电源、时钟、处理器、存储器、JTAG接口以及网络接口。系统中的其它功能主要通过底板实现,方便今后系统的扩展。整个系统结构如图1所示。
在核心板上,扩展了64 MB 的NAND  FLASH和64 MB的SDRAM作为存储单元,用来存储嵌入式Linux操作系统以及应用程序。系统中通过信号调理电路将接收到的4~20 mA信号
转换为0~3.3 V电压信号,然后输出到S3C2410的AD采集接口。3通道串行接口中的串口0用作调试串口,串口1用作打印机接口,打印机为支持RS232串行接口的热敏打印机,串口2用作触摸屏的通信接口。系统所需的两路RS485信号通过UART器件TL16C554进行转换,该器件能够将并行数据转换成4路的串行输出,软件设计时采用轮询的方式读取RS485通信数据。
2 软件设计
2.1 嵌入式Linux操作系统设计
linux在线命令查询平台
嵌入式Linux操作系统从软件角度看通常分为三部分: 引导程序、Linux 内核、文件系统。
引导程序是在操作系统内核运行之前运行的一段小程序。该程序在系统运行时主要用来初始化硬件设备、加载操作系统映像,另外还具有下载功能,支持通过串口或网线等通信方式从宿主机下载内核映像和根文件系统映像[4]。文中采用U-Boot 1.3.2做为Linux系统的引导程序。
内核是Linux 操作系统的核心。它负责管理系统的进程和进程调度、CPU、内存、设备驱
动程序、文件、I/O 处理等,  决定着系统的性能和稳定性。其它系统程序都必须通过内核才可以使用系统资源, 获取系统服务。文中采用的内核版本为Linux-2.6.24。
Linux 系统中的文件不仅包括普通的文件和目录, 每个具体的设备也都被映射为一个文件, 例如磁盘、打印机、终端等。所以Linux 下的文件是操作系统服务和设备的统一接口。一个基本的文件系统主要包括Linux基本命令、库文件、配置文件、设备文件。文中采用Busybox工具包,建立一个完整的嵌入式Linux文件系统。Busybox是集成了一百多个Linux常用命令和工具的软件,用户可以根据需要,在Busybox中编译需要的应用程序的功能。
2.2 驱动程序设计
2.2.1驱动程序的编写
Linux操作系统将内存空间分为内核空间和用户空间,驱动程序运行在内核空间,应用程序运行在用户空间。驱动程序为应用程序屏蔽了硬件的细节,应用程序通过驱动程序提供的操作接口,就可以像处理普通文件一样,对硬件设备进行打开、关闭、读写等操作[5]。Linux设备分为字符设备、块设备和网络设备。字符设备是指设备发送和接收数据以字符的
形式进行,如串口、键盘、鼠标等。文中涉及到的A/D转换驱动和TL16C554串口通信驱动均属于字符设备驱动。
file_operations数据结构式Linux驱动程序中重要的数据结构,该数据结构提供给应用程序访问硬件设备的各种方法,针对AD驱动程序,主要实现了该数据结构中的open、read、release、ioctl四个函数。主要代码如下:

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。