999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于嵌入式Linux的船舶車鐘記錄儀設(shè)計

2015-10-13 12:57:56劉建設(shè)楊俊飛
船電技術(shù) 2015年3期
關(guān)鍵詞:嵌入式設(shè)備系統(tǒng)

劉建設(shè),楊俊飛

?

基于嵌入式Linux的船舶車鐘記錄儀設(shè)計

劉建設(shè),楊俊飛

(武漢船用電力推進裝置研究所,武漢 430064)

為了滿足當前船舶車鐘記錄儀對實時性強、人機交互性好等要求,設(shè)計了以ARM9處理器為硬件平臺,以嵌入式Linux操作系統(tǒng)為核心的船舶車鐘記錄儀。詳細描述了該系統(tǒng)的主要功能、硬件結(jié)構(gòu)與軟件設(shè)計方法。完成了嵌入式Linux操作系統(tǒng)移植、驅(qū)動程序設(shè)計和應(yīng)用程序設(shè)計。應(yīng)用程序采用多線程的設(shè)計方法,實現(xiàn)了數(shù)據(jù)的采集、顯示與打印的同步執(zhí)行。實踐證明該系統(tǒng)操作方便,滿足車鐘記錄儀的設(shè)計要求。

車鐘記錄儀 ARM 嵌入式Linux

0 引言

船舶車鐘記錄儀主要用于接收、顯示和保存船舶航行過程中的一些重要數(shù)據(jù),如主航車鐘車令、應(yīng)急車鐘車令、螺旋槳轉(zhuǎn)速等,并能夠進行歷史數(shù)據(jù)查詢和數(shù)據(jù)打印[1]。

隨著信息技術(shù)、計算機技術(shù)的迅速發(fā)展,嵌入式系統(tǒng)有了廣泛的應(yīng)用。嵌入式Linux是應(yīng)用于嵌入式設(shè)備上的一種操作系統(tǒng)。可運行在X86、MIPS、ARM、Motorola、NEC 等多種硬件平臺, 而且開放源代碼,在新興的嵌入式操作系統(tǒng)領(lǐng)域獲得了飛速的發(fā)展。本文基于ARM9硬件平臺,完成了嵌入式Linux操作系統(tǒng)的移植,并實現(xiàn)了船舶車鐘記錄儀的應(yīng)用程序設(shè)計。

1 系統(tǒng)硬件設(shè)計

1.1 系統(tǒng)功能

本文設(shè)計的車鐘記錄儀主要實現(xiàn)了以下四個功能:數(shù)據(jù)采集、數(shù)據(jù)保存、數(shù)據(jù)打印、人機界面顯示和設(shè)置。其中:

數(shù)據(jù)采集:主要實現(xiàn)1)船舶駕控室與集控室左/右主航車鐘車令信號、螺旋槳轉(zhuǎn)速信號的采集,共六路4~20 mA信號。2)左/右應(yīng)急車鐘信號的讀取,為兩路485信號。

數(shù)據(jù)保存:定時對采集到的數(shù)據(jù)進行保存,并能在主航車鐘或應(yīng)急車鐘車令發(fā)生變化、螺旋槳轉(zhuǎn)速變化超過設(shè)定值時自動進行數(shù)據(jù)保存。

數(shù)據(jù)打印:能夠根據(jù)用戶設(shè)置的時間范圍,自動打印該段時間內(nèi)保存的所有數(shù)據(jù)。打印過程中系統(tǒng)能同時進行數(shù)據(jù)采集與顯示。

人機界面和設(shè)置:通過圖形化人機界面顯示采集到的數(shù)據(jù),并能進行系統(tǒng)時鐘設(shè)置、打印時間設(shè)置以及在線進行模擬量輸入信號的標定等。

1.2 硬件方案設(shè)計

嵌入式系統(tǒng)的核心部件是嵌入式微處理器,目前嵌入式處理器的品種總量已經(jīng)超過1000多種,流行體系結(jié)構(gòu)有三十幾個系列,就目前來看,32位的ARM微處理器是嵌入式處理器的主流[2]。其中ARM9系列的微處理器能充分滿足本系統(tǒng)對實時性的要求,對外圍接口電路和今后擴展系統(tǒng)的要求等,而且ARM9系列的微處理器價格相對同類產(chǎn)品價格不高,所以無論從技術(shù)應(yīng)用方面,還是在性價比方面,ARM9系列都是本系統(tǒng)最佳選擇。本系統(tǒng)選擇ARM9系列微處理器中型號為S3C2410的芯片。

S3C2410片上集成了豐富的外設(shè)資源:存儲器管理單元、NAND FLASH接口、LCD控制器、3通道串行接口、2通道SPI接口、觸摸屏接口的8通道10位ADC、帶日歷功能的實時時鐘控制器、USB接口、SD接口等,簡化了系統(tǒng)外圍電路的設(shè)計[3]。

本系統(tǒng)采用核心板+底板的控制方案。其中核心板主要實現(xiàn)嵌入式Linux的最小系統(tǒng),包括電源、時鐘、處理器、存儲器、JTAG接口以及網(wǎng)絡(luò)接口。系統(tǒng)中的其它功能主要通過底板實現(xiàn),方便今后系統(tǒng)的擴展。整個系統(tǒng)結(jié)構(gòu)如圖1所示。

在核心板上,擴展了64 MB 的NAND FLASH和64 MB的SDRAM作為存儲單元,用來存儲嵌入式Linux操作系統(tǒng)以及應(yīng)用程序。系統(tǒng)中通過信號調(diào)理電路將接收到的4~20 mA信號轉(zhuǎn)換為0~3.3 V電壓信號,然后輸出到S3C2410的AD采集接口。3通道串行接口中的串口0用作調(diào)試串口,串口1用作打印機接口,打印機為支持RS232串行接口的熱敏打印機,串口2用作觸摸屏的通信接口。系統(tǒng)所需的兩路RS485信號通過UART器件TL16C554進行轉(zhuǎn)換,該器件能夠?qū)⒉⑿袛?shù)據(jù)轉(zhuǎn)換成4路的串行輸出,軟件設(shè)計時采用輪詢的方式讀取RS485通信數(shù)據(jù)。

2 軟件設(shè)計

2.1 嵌入式Linux操作系統(tǒng)設(shè)計

嵌入式Linux操作系統(tǒng)從軟件角度看通常分為三部分: 引導(dǎo)程序、Linux 內(nèi)核、文件系統(tǒng)。

引導(dǎo)程序是在操作系統(tǒng)內(nèi)核運行之前運行的一段小程序。該程序在系統(tǒng)運行時主要用來初始化硬件設(shè)備、加載操作系統(tǒng)映像,另外還具有下載功能,支持通過串口或網(wǎng)線等通信方式從宿主機下載內(nèi)核映像和根文件系統(tǒng)映像[4]。文中采用U-Boot 1.3.2做為Linux系統(tǒng)的引導(dǎo)程序。

內(nèi)核是Linux 操作系統(tǒng)的核心。它負責管理系統(tǒng)的進程和進程調(diào)度、CPU、內(nèi)存、設(shè)備驅(qū)動程序、文件、I/O 處理等, 決定著系統(tǒng)的性能和穩(wěn)定性。其它系統(tǒng)程序都必須通過內(nèi)核才可以使用系統(tǒng)資源, 獲取系統(tǒng)服務(wù)。文中采用的內(nèi)核版本為Linux-2.6.24。

Linux 系統(tǒng)中的文件不僅包括普通的文件和目錄, 每個具體的設(shè)備也都被映射為一個文件, 例如磁盤、打印機、終端等。所以Linux 下的文件是操作系統(tǒng)服務(wù)和設(shè)備的統(tǒng)一接口。一個基本的文件系統(tǒng)主要包括Linux基本命令、庫文件、配置文件、設(shè)備文件。文中采用Busybox工具包,建立一個完整的嵌入式Linux文件系統(tǒng)。Busybox是集成了一百多個Linux常用命令和工具的軟件,用戶可以根據(jù)需要,在Busybox中編譯需要的應(yīng)用程序的功能。

2.2 驅(qū)動程序設(shè)計

2.2.1驅(qū)動程序的編寫

Linux操作系統(tǒng)將內(nèi)存空間分為內(nèi)核空間和用戶空間,驅(qū)動程序運行在內(nèi)核空間,應(yīng)用程序運行在用戶空間。驅(qū)動程序為應(yīng)用程序屏蔽了硬件的細節(jié),應(yīng)用程序通過驅(qū)動程序提供的操作接口,就可以像處理普通文件一樣,對硬件設(shè)備進行打開、關(guān)閉、讀寫等操作[5]。Linux設(shè)備分為字符設(shè)備、塊設(shè)備和網(wǎng)絡(luò)設(shè)備。字符設(shè)備是指設(shè)備發(fā)送和接收數(shù)據(jù)以字符的形式進行,如串口、鍵盤、鼠標等。文中涉及到的A/D轉(zhuǎn)換驅(qū)動和TL16C554串口通信驅(qū)動均屬于字符設(shè)備驅(qū)動。

file_operations數(shù)據(jù)結(jié)構(gòu)式Linux驅(qū)動程序中重要的數(shù)據(jù)結(jié)構(gòu),該數(shù)據(jù)結(jié)構(gòu)提供給應(yīng)用程序訪問硬件設(shè)備的各種方法,針對AD驅(qū)動程序,主要實現(xiàn)了該數(shù)據(jù)結(jié)構(gòu)中的open、read、release、ioctl四個函數(shù)。主要代碼如下:

static int adc_open(struct inode * inode, struct file * filp)

{

writel((readl(base_addr1 ) | S3C2410_CLKCON_ADC),base_addr1);//AD時鐘使能

return 0;

}

其中base_addr1為CLKCON的映射地址。

int adc_ioctl(struct inode *inode, struct file *filp, unsigned int cmd, unsigned long arg)

{

ch=cmd & 0x7; //set up channel

return 0;

}

通過adc_ioctl函數(shù)實現(xiàn)對AD采集通道的控制。

static ssize_t adc_read(struct file *filp, char __user *buf, size_t count, loff_t *ppos)

{

int data;

int i;

int loop = 1000;

//預(yù)分頻使能,分頻值為49,采樣周期5us,通道號為ch,普通操作模式, writel((1<<14)|S3C2410_ADCCON_PRSCVL(49)|(ch<<3)| (0<<2) |(0<<1)|(0<<0),base_addr+S3C2410_ADCCON);

for(i=0;i

writel((readl(base_addr+S3C2410_ADCCON)|0x1),base_addr+S3C2410_ADCCON); //start ADC

while((readl(base_addr+S3C2410_ADCCON) & 0x1)); //check if enable start flag is low

while(!(readl(base_addr+S3C2410_ADCCON) & 0x8000)); writel(0,base_addr+S3C2410_ADCCON); //stop ADC

data = readl(base_addr+S3C2410_ADCDAT0) & 0x3ff;

if(copy_to_user(buf, &data, sizeof(int)))

return -EFAULT;

return (sizeof(int));

}

TL16C554驅(qū)動的編寫與AD驅(qū)動實現(xiàn)過程類似,區(qū)別在于設(shè)備的控制方式不同。

2.2.2驅(qū)動程序的編譯與加載

Linux驅(qū)動程序可以以模塊的方式與內(nèi)核連接,也可以直接編譯進內(nèi)核。文中采用以模塊方式加載驅(qū)動的方式。該方式在開發(fā)階段不需要頻繁的重新編譯和下載內(nèi)核。

在宿主機上使用交叉編譯器arm-linux-gcc命令編譯驅(qū)動程序,會在當前目錄下生成adc.o的文件,將該文件拷貝到嵌入式文件系統(tǒng)中,使用insmod命令加載該驅(qū)動模塊。另外,還需要在/dev目錄下創(chuàng)建應(yīng)用程序訪問的設(shè)備節(jié)點。

通過該命令查看AD設(shè)備的主設(shè)備號:

#cat /proc/devices

然后使用如下命令創(chuàng)建設(shè)備節(jié)點:

#mknod /dev/adc c 252 0

2.3 應(yīng)用程序設(shè)計

在應(yīng)用程序中,根據(jù)系統(tǒng)的功能,本文主要編制了以下子程序:

1)數(shù)據(jù)采集與處理程序:AD采集部分采用

多次采集求平均值、以及去除最大值最小值等數(shù)字濾波方法實現(xiàn)軟件的濾波。將濾波后數(shù)據(jù)通過計算轉(zhuǎn)換為車鐘車令與轉(zhuǎn)速值。應(yīng)急車鐘數(shù)據(jù)通信部分采用校驗碼方式保證數(shù)據(jù)接收的正確性。

2)數(shù)據(jù)存儲程序:將采集的數(shù)據(jù)以文件的方

式存儲在FLASH存儲器中,文件以數(shù)據(jù)保存時間命名。文件個數(shù)超過最大值時,刪除最先保存的數(shù)據(jù)記錄文件。

3)數(shù)據(jù)打印子程序:按照約定的數(shù)據(jù)幀格式

向熱敏打印機傳輸打印數(shù)據(jù)。其中打印子程序采用多線程方式,實現(xiàn)數(shù)據(jù)打印過程中系統(tǒng)能夠同步進行數(shù)據(jù)的采集與顯示功能。

4)數(shù)據(jù)顯示處理子程序:ARM板與觸摸屏

采用Modbus通信協(xié)議進行數(shù)據(jù)傳輸。其中觸摸屏為主站,ARM板為從站。應(yīng)用程序根據(jù)要求向觸摸屏通訊需要顯示的數(shù)據(jù)、執(zhí)行打印程序、車鐘和轉(zhuǎn)速標定程序。

5)車鐘和轉(zhuǎn)速標定程序:根據(jù)觸摸屏界面輸入的參數(shù)設(shè)置值,將采集到的特定檔位和轉(zhuǎn)速的數(shù)據(jù)保存到指定的數(shù)據(jù)標定文件中,供數(shù)據(jù)采集與處理程序使用。

3 結(jié)束語

本文基于ARM S3C2410硬件平臺,進行了船舶車鐘記錄儀的硬件設(shè)計。同時基于嵌入式Linux操作系統(tǒng)進行了系統(tǒng)軟件開發(fā)。成功構(gòu)建了一個集數(shù)據(jù)采集、保存、顯示、打印于一體,并且圖形界面友好、操作方便的車鐘記錄系統(tǒng)。

[1] 陳小米,張浩. 基于ARM 的艦船車鐘記錄儀設(shè)計[J].船電技術(shù),2012,22(3):9-11.

[2] 熊茂華. ARM9嵌入式系統(tǒng)設(shè)計與開發(fā)應(yīng)用.北京:清華大學(xué)出版社,2008.

[3] S3C2410A – 200MHz & 266MHz 32-Bit RISC Microprocessor User's Manual. Revision 1.0[M]. Korea: Samsung Electronics,2004.

[4] 于明,盛俊,劉建設(shè).基于Intel PXA270的系統(tǒng)引導(dǎo)程序移植與實現(xiàn)[J].計算機技術(shù)與發(fā)展,2010,20(6):32-35.

[5] 劉淼.嵌入式系統(tǒng)接口設(shè)計與Linux驅(qū)動程序開發(fā)[M].北京:北京航空航天大學(xué)出版社,2006.


Design of Ship Telegraph Recorder Based on Embedded Linux

Liu Jianshe, Yang Junfei

(Wuhan Institute of Marine Electric Propulsion, Wuhan 430064, China)

The paper presents the design of a ship telegraph recorder based on embedded Linux system with ARM9 as hardware platform in order to meet the requirements of real time and friendly man-machine interaction, analyzes the main function, hardware structure and software design method for the telegraph recorder, and completes the transplantation of embedded Linux system and the design of drives and applications. The applications use multi-thread design to the synchronous course of data collection, displaying and printing. Tests show that the system is easily operated and can meet the demands of telegraph recorder.

telegraph recorder; ARM; embedded Linux

TP368.2

A

1003-4862(2015)03-0040-04

2014-12-18

劉建設(shè)(1985-),男,碩士。研究方向:嵌入式應(yīng)用技術(shù)。

猜你喜歡
嵌入式設(shè)備系統(tǒng)
諧響應(yīng)分析在設(shè)備減振中的應(yīng)用
Smartflower POP 一體式光伏系統(tǒng)
WJ-700無人機系統(tǒng)
ZC系列無人機遙感系統(tǒng)
北京測繪(2020年12期)2020-12-29 01:33:58
基于MPU6050簡單控制設(shè)備
電子制作(2018年11期)2018-08-04 03:26:08
搭建基于Qt的嵌入式開發(fā)平臺
連通與提升系統(tǒng)的最后一塊拼圖 Audiolab 傲立 M-DAC mini
嵌入式軟PLC在電鍍生產(chǎn)流程控制系統(tǒng)中的應(yīng)用
500kV輸變電設(shè)備運行維護探討
原來他們都是可穿戴設(shè)備
消費者報道(2014年7期)2014-07-31 11:23:57
主站蜘蛛池模板: 国产小视频在线高清播放| 国产精品女熟高潮视频| 免费国产小视频在线观看| 精品久久人人爽人人玩人人妻| 成人综合网址| 欧美区一区二区三| 在线亚洲精品福利网址导航| 女同国产精品一区二区| 国产精品无码一二三视频| 五月婷婷中文字幕| 免费人成黄页在线观看国产| 亚洲VA中文字幕| 国产国产人免费视频成18| 成年人久久黄色网站| 久久国产拍爱| 无码中字出轨中文人妻中文中| 免费视频在线2021入口| 成人中文字幕在线| 精品国产一区二区三区在线观看| 久热re国产手机在线观看| 999精品色在线观看| 色综合激情网| 欧洲高清无码在线| 免费观看国产小粉嫩喷水 | 国产在线拍偷自揄观看视频网站| 国产成人做受免费视频| 91国内视频在线观看| 久久精品国产91久久综合麻豆自制| 成人国内精品久久久久影院| 一边摸一边做爽的视频17国产 | 亚洲国语自产一区第二页| 亚洲精品中文字幕午夜| 亚洲高清中文字幕在线看不卡| 99在线视频精品| 97在线碰| h网站在线播放| 亚洲国产无码有码| Jizz国产色系免费| 成年人久久黄色网站| 欧美精品xx| 久久久噜噜噜| 国产第二十一页| 久热这里只有精品6| 国产最爽的乱婬视频国语对白| 日韩中文无码av超清| 国产一区二区三区视频| 欧美激情二区三区| 国产成人一区| 成人午夜亚洲影视在线观看| 亚洲Av综合日韩精品久久久| 亚洲清纯自偷自拍另类专区| 亚洲精品国偷自产在线91正片| 2020国产在线视精品在| 干中文字幕| av一区二区三区在线观看| 国产成人精品午夜视频'| 五月婷婷综合在线视频| 亚洲午夜福利精品无码不卡| 亚洲色中色| 看国产一级毛片| 亚洲精品在线91| 中文字幕在线播放不卡| аv天堂最新中文在线| 中文字幕佐山爱一区二区免费| 精品福利视频网| 一级毛片免费的| 99伊人精品| 久夜色精品国产噜噜| 制服丝袜无码每日更新| 国产成人乱无码视频| 97国产精品视频自在拍| 婷婷久久综合九色综合88| 欧美无遮挡国产欧美另类| 91九色视频网| 久久香蕉欧美精品| 久久国产乱子伦视频无卡顿| 欧美午夜久久| 欧美亚洲国产日韩电影在线| 四虎永久在线精品国产免费| 欧美精品伊人久久| 69av免费视频| 国产在线日本|