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

        ?

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

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

        劉建設(shè),楊俊飛

        ?

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

        劉建設(shè),楊俊飛

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

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

        車鐘記錄儀 ARM 嵌入式Linux

        0 引言

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

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

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

        1.1 系統(tǒng)功能

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

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

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

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

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

        1.2 硬件方案設(shè)計(jì)

        嵌入式系統(tǒng)的核心部件是嵌入式微處理器,目前嵌入式處理器的品種總量已經(jīng)超過1000多種,流行體系結(jié)構(gòu)有三十幾個系列,就目前來看,32位的ARM微處理器是嵌入式處理器的主流[2]。其中ARM9系列的微處理器能充分滿足本系統(tǒng)對實(shí)時性的要求,對外圍接口電路和今后擴(kuò)展系統(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、帶日歷功能的實(shí)時時鐘控制器、USB接口、SD接口等,簡化了系統(tǒng)外圍電路的設(shè)計(jì)[3]。

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

        在核心板上,擴(kuò)展了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用作打印機(jī)接口,打印機(jī)為支持RS232串行接口的熱敏打印機(jī),串口2用作觸摸屏的通信接口。系統(tǒng)所需的兩路RS485信號通過UART器件TL16C554進(jìn)行轉(zhuǎn)換,該器件能夠?qū)⒉⑿袛?shù)據(jù)轉(zhuǎn)換成4路的串行輸出,軟件設(shè)計(jì)時采用輪詢的方式讀取RS485通信數(shù)據(jù)。

        2 軟件設(shè)計(jì)

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

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

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

        內(nèi)核是Linux 操作系統(tǒng)的核心。它負(fù)責(zé)管理系統(tǒng)的進(jìn)程和進(jìn)程調(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è)備也都被映射為一個文件, 例如磁盤、打印機(jī)、終端等。所以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è)計(jì)

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

        Linux操作系統(tǒng)將內(nèi)存空間分為內(nèi)核空間和用戶空間,驅(qū)動程序運(yùn)行在內(nèi)核空間,應(yīng)用程序運(yùn)行在用戶空間。驅(qū)動程序?yàn)閼?yīng)用程序屏蔽了硬件的細(xì)節(jié),應(yīng)用程序通過驅(qū)動程序提供的操作接口,就可以像處理普通文件一樣,對硬件設(shè)備進(jìn)行打開、關(guān)閉、讀寫等操作[5]。Linux設(shè)備分為字符設(shè)備、塊設(shè)備和網(wǎng)絡(luò)設(shè)備。字符設(shè)備是指設(shè)備發(fā)送和接收數(shù)據(jù)以字符的形式進(jìn)行,如串口、鍵盤、鼠標(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ū)動程序,主要實(shí)現(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ù)實(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ū)動實(shí)現(xiàn)過程類似,區(qū)別在于設(shè)備的控制方式不同。

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

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

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

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

        #cat /proc/devices

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

        #mknod /dev/adc c 252 0

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

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

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

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

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

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

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

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

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

        采用Modbus通信協(xié)議進(jìn)行數(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硬件平臺,進(jìn)行了船舶車鐘記錄儀的硬件設(shè)計(jì)。同時基于嵌入式Linux操作系統(tǒng)進(jìn)行了系統(tǒng)軟件開發(fā)。成功構(gòu)建了一個集數(shù)據(jù)采集、保存、顯示、打印于一體,并且圖形界面友好、操作方便的車鐘記錄系統(tǒng)。

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

        [2] 熊茂華. ARM9嵌入式系統(tǒng)設(shè)計(jì)與開發(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)程序移植與實(shí)現(xiàn)[J].計(jì)算機(jī)技術(shù)與發(fā)展,2010,20(6):32-35.

        [5] 劉淼.嵌入式系統(tǒng)接口設(shè)計(jì)與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)夯實(shí)的IP內(nèi)核是什么?
        強(qiáng)化『高新』內(nèi)核 打造農(nóng)業(yè)『硅谷』
        做夢記錄儀
        基于GPS的便攜式汽車行駛記錄儀的研制
        基于嵌入式Linux內(nèi)核的自恢復(fù)設(shè)計(jì)
        Linux內(nèi)核mmap保護(hù)機(jī)制研究
        汽車記錄儀保險絲搭接轉(zhuǎn)換裝置及其模具設(shè)計(jì)
        大容量Flash在井下記錄儀中的應(yīng)用
        驅(qū)動程序更新與推薦
        驅(qū)動程序更新與推薦
        久久国产精品一区av瑜伽| 少妇太爽了在线观看免费视频| 麻豆精品国产精华液好用吗| 亚洲精品suv精品一区二区| 区久久aaa片69亚洲| 亚洲av熟妇高潮30p| 免费无遮挡无码视频在线观看| 女的把腿张开男的猛戳出浆| 成在线人免费无码高潮喷水| 日本小视频一区二区三区| 丝袜美足在线视频国产在线看| 99re6在线视频精品免费下载| 正在播放老肥熟妇露脸| 日韩人妻无码一区二区三区| 人人妻人人玩人人澡人人爽| 国产亚洲sss在线观看| 日本高清中文一区二区三区| 日本免费一区二区久久久 | 国产无遮挡又黄又爽又色| 亚洲人成在久久综合网站| 91色老久久偷偷精品蜜臀懂色| 大地资源在线影视播放| 影音先锋女人av鲁色资源网久久| 欧美成人精品第一区二区三区| a级福利毛片| 日本精品啪啪一区二区| 国产桃色一区二区三区| 国产色系视频在线观看| 亚洲乱码国产乱码精华 | 久久久久久久99精品国产片| 伊人亚洲综合网色AV另类 | 91日韩东京热中文字幕| 一区二区三区字幕中文| 一区二区三区中文字幕| 一二三四在线视频观看社区| 亚洲综合伊人制服丝袜美腿| 日韩肥熟妇无码一区二区三区| 亚洲av天堂在线免费观看| 亚洲国产国语对白在线观看| 精品含羞草免费视频观看| 亚洲国产精品综合久久网各|