亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

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

        2015-10-13 12:57:56劉建設(shè)楊俊飛
        船電技術(shù) 2015年3期
        關(guān)鍵詞:記錄儀驅(qū)動程序內(nèi)核

        劉建設(shè),楊俊飛

        ?

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

        劉建設(shè),楊俊飛

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

        為了滿足當(dāng)前船舶車鐘記錄儀對實時性強、人機交互性好等要求,設(shè)計了以ARM9處理器為硬件平臺,以嵌入式Linux操作系統(tǒng)為核心的船舶車鐘記錄儀。詳細(xì)描述了該系統(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è)置以及在線進行模擬量輸入信號的標(biāo)定等。

        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)的核心。它負(fù)責(zé)管理系統(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)用程序屏蔽了硬件的細(xì)節(jié),應(yīng)用程序通過驅(qū)動程序提供的操作接口,就可以像處理普通文件一樣,對硬件設(shè)備進行打開、關(guān)閉、讀寫等操作[5]。Linux設(shè)備分為字符設(shè)備、塊設(shè)備和網(wǎng)絡(luò)設(shè)備。字符設(shè)備是指設(shè)備發(fā)送和接收數(shù)據(jù)以字符的形式進行,如串口、鍵盤、鼠標(biāo)等。文中涉及到的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ū)動程序,會在當(dāng)前目錄下生成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)速標(biāo)定程序。

        5)車鐘和轉(zhuǎn)速標(biāo)定程序:根據(jù)觸摸屏界面輸入的參數(shù)設(shè)置值,將采集到的特定檔位和轉(zhuǎn)速的數(shù)據(jù)保存到指定的數(shù)據(jù)標(biāo)定文件中,供數(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ù)。

        猜你喜歡
        記錄儀驅(qū)動程序內(nèi)核
        萬物皆可IP的時代,我們當(dāng)夯實的IP內(nèi)核是什么?
        強化『高新』內(nèi)核 打造農(nóng)業(yè)『硅谷』
        做夢記錄儀
        基于GPS的便攜式汽車行駛記錄儀的研制
        基于嵌入式Linux內(nèi)核的自恢復(fù)設(shè)計
        Linux內(nèi)核mmap保護機制研究
        汽車記錄儀保險絲搭接轉(zhuǎn)換裝置及其模具設(shè)計
        大容量Flash在井下記錄儀中的應(yīng)用
        驅(qū)動程序更新與推薦
        驅(qū)動程序更新與推薦
        久久亚洲精品成人无码| 免费女同毛片在线不卡| av网站免费观看入口| 国产成人无码av一区二区在线观看| 18禁黄久久久aaa片| 久久成年片色大黄全免费网站 | 蜜臀av午夜一区二区三区| 午夜精品一区二区三区在线观看| 红杏性无码免费专区| 国产色视频在线观看了| 久久亚洲精品情侣| 中文字幕乱码人妻一区二区三区| 国产精品白浆视频免费观看| 国产av一区二区三区天美| 亚洲国产精品久久久久久无码| 大陆极品少妇内射aaaaa| 欧美 亚洲 国产 日韩 综AⅤ| 国产一区二区三区av观看| 亚洲一区二区女搞男| 国产在线观看www污污污| 色欧美与xxxxx| 日本人妻高清免费v片| 呦系列视频一区二区三区| 台湾佬综合网| 无码中文字幕专区一二三| 熟妇人妻精品一区二区视频| 欧美人妻aⅴ中文字幕| 久久97精品久久久久久久不卡| 亚洲在线一区二区三区四区| 精品国产亚洲第一区二区三区| 亚洲国产成人片在线观看| 欧美成aⅴ人高清免费| 一本色道亚州综合久久精品| 日本饥渴人妻欲求不满| 日日噜噜噜夜夜爽爽狠狠视频| 国产目拍亚洲精品一区二区| av在线一区二区精品| 成人特黄a级毛片免费视频| chinese国产乱在线观看| 风韵丰满妇啪啪区老老熟女杏吧 | 国产视频一区二区三区观看|