• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

      基于GT2440和Linux的CAN總線驅(qū)動(dòng)開發(fā)設(shè)計(jì)

      2012-03-15 07:45:56
      電子世界 2012年11期
      關(guān)鍵詞:開發(fā)板驅(qū)動(dòng)程序內(nèi)核

      1.引言

      由于CAN總線的高性能和可靠性,所以被廣泛地應(yīng)用于工業(yè)自動(dòng)化、船舶、醫(yī)療設(shè)備、工業(yè)設(shè)備等方面。而目前多數(shù)嵌入式處理器都不帶CAN總線控制器,本文基于深圳恒天智信科技公司的GT2440開發(fā)板和MSG-3CM型CAN總線模塊開發(fā)板,在linux操作系統(tǒng)環(huán)境下,詳細(xì)介紹了開發(fā)CAN總線設(shè)備驅(qū)動(dòng)程序的方法與過程。

      2.硬件部分

      2.1 GT2440嵌入式開發(fā)系統(tǒng)

      GT2440是一款具有極高性價(jià)比的嵌入式開發(fā)系統(tǒng),CPU處理器采用Samsung S3C2440A,主頻400MHz;板載64M SDRAM、256M Nand Flash、2 M Nor Flash;板載5線異步串行口(UART0)、10M以太網(wǎng)RJ-45接口、USB HOST接口、USB Slave B型接口和一個(gè)SD卡存儲(chǔ)接口;集成了4線電阻式觸摸屏接口和JTAG接口等。

      2.2 S3C2440A處理器

      S3C2440A是由三星公司推出的16/32位RISC微處理器,最高主頻可達(dá)533MHz,處理器內(nèi)部集成SDRAM控制器、LCD控制器、4通道DMA、3通道UART、I2C總線接口、I2S音頻編解碼器接口、SD接口、2路SPI接口、8通道10位A/D控制器和camera接口等。

      2.3 CAN總線模塊

      CAN通信電路主要由CAN控制器和CAN收發(fā)器組成,本文采用的是MSG-3CM型CAN總線模塊開發(fā)板,其原理圖如圖1所示。圖中13~16引腳連著CPU,其余的除了INT和中斷相關(guān)之外,都連著TJA1050收發(fā)器。

      MSG-3CM型CAN總線模塊開發(fā)板的控制芯片是MICROCHIP公司的MCP2515[1],MCP2515是Microchip Technology Inc.(美國微芯科技有限公司)生產(chǎn)的一款控制局域網(wǎng)絡(luò)(CAN)協(xié)議的控制器,完全支持CAN總線V2.0A/B技術(shù)規(guī)范;能夠發(fā)送和接收標(biāo)準(zhǔn)和擴(kuò)展報(bào)文。它還同時(shí)具備驗(yàn)收過濾以及報(bào)文管理功能;該器件包含三個(gè)發(fā)送緩沖器和兩個(gè)接收緩沖器。其與GT2440開發(fā)板的通訊是通過行業(yè)標(biāo)準(zhǔn)串行外設(shè)接口(SPI)來實(shí)現(xiàn)的,其數(shù)據(jù)傳輸速率高達(dá)5Mb/s。

      TJA1050作為CAN總線收發(fā)器芯片,提供了CAN控制器與物理總線之間的接口,有對(duì)CAN總線的差動(dòng)發(fā)送和接受功能[2]。當(dāng)CAN控制器要從TJA1050接受一個(gè)數(shù)據(jù)時(shí),首先RXnBF信號(hào)必須有效(為低電平),然后TJA1050收發(fā)器將數(shù)據(jù)通過RXCAN引腳傳入到對(duì)應(yīng)的第n+1個(gè)緩沖區(qū);同理,當(dāng)CAN控制器要發(fā)送數(shù)據(jù)給TJA1050時(shí),TXnRTS信號(hào)必須有效(為低電平),然后控制器將第n+1個(gè)緩沖區(qū)的數(shù)據(jù)通過TXCAN引腳傳入到收發(fā)器TJA1050。

      3.CAN總線驅(qū)動(dòng)程序設(shè)計(jì)

      3.1 搭建嵌入式Linux系統(tǒng)開發(fā)環(huán)境

      搭建開發(fā)環(huán)境的過程為:

      (1)在Win7系統(tǒng)下安裝虛擬機(jī)vmware6.0,在虛擬機(jī)里安裝RHEL5操作系統(tǒng)。在RHEL5操作系統(tǒng)下用交叉編譯工具編譯開發(fā)板所需的鏡像和文件,使用Samba服務(wù)器實(shí)現(xiàn)了Win7和RHEL5的文件共享,在Win7系統(tǒng)下可以通過串口或USB直接下載鏡像和文件到GT2440開發(fā)板上。

      (2)由于win7系統(tǒng)不帶超級(jí)終端,所以串口終端使用的是SecureCRT5.5軟件,SecureCRT是一款支持SSH(SSH1和SSH2)的終端仿真程序,同時(shí)支持Telnet和rlogin協(xié)議,SecureCRT是一款用于連接運(yùn)行包括Windows、UNIX和VMS的遠(yuǎn)程系統(tǒng)的理想工具。筆記本電腦和開發(fā)板之間使用USB轉(zhuǎn)串口線連接,這樣就可以在筆記本電腦上對(duì)開發(fā)板進(jìn)行開發(fā)操作。

      3.2 Linux內(nèi)核的移植

      本設(shè)計(jì)使用的bootloader是深圳恒天智信科技公司自己開發(fā)的u-boot,用J-LINK V8仿真器連接好開發(fā)板和筆記本電腦,打開j-flash進(jìn)行相關(guān)的配置,然后將u-boot燒寫進(jìn)NOR Flash,然后重啟就可以在secureCRT串口終端打印出u-boot相關(guān)信息,根據(jù)提示就可以進(jìn)行下載操作了。從官方網(wǎng)站上下載Linux2.6.38內(nèi)核源代碼,通過Samba服務(wù)器將源代碼復(fù)制到RHEL5操作系統(tǒng)共享目錄下,使用tar命令解壓到/opt目錄。在/opt/linux-2.6.38.6/目錄下使用交叉編譯工具對(duì)內(nèi)核進(jìn)行修改、配置和編譯。在移植CAN總線驅(qū)動(dòng)之前,需要移植板載256M NAND Flash的驅(qū)動(dòng)、yaffs2文件系統(tǒng)等。

      3.3 CAN總線驅(qū)動(dòng)程序

      Linux系統(tǒng)設(shè)備[3]分為三種基本類型:字符設(shè)備、塊設(shè)備、網(wǎng)絡(luò)設(shè)備。CAN總線屬于字符設(shè)備,是個(gè)能夠像字節(jié)流(類似文件)一樣被訪問的設(shè)備。在Linux系統(tǒng)中,以文件名的形式在/dev目錄下建立CAN總線設(shè)備文件,應(yīng)用程序可以通過系統(tǒng)調(diào)用函數(shù)open()打開此文件,建立起與設(shè)備的連接,然后通過函數(shù)read()、write()、release()、ioctl()等函數(shù)調(diào)用對(duì)目標(biāo)設(shè)備進(jìn)行操作。內(nèi)核是通過主設(shè)備號(hào)將設(shè)備驅(qū)動(dòng)程序和設(shè)備文件相連的,而構(gòu)成驅(qū)動(dòng)程序的一個(gè)重要數(shù)據(jù)結(jié)構(gòu)就是file_operations,內(nèi)核就是通過這個(gè)結(jié)構(gòu)來訪問驅(qū)動(dòng)程序的。file_operations中的成員為一系列指向各操作函數(shù)的指針,這些操作函數(shù)主要負(fù)責(zé)系統(tǒng)調(diào)用的實(shí)現(xiàn),不同類型的設(shè)備文件系統(tǒng)有不同類型file_operations結(jié)構(gòu)。

      CAN總線的file_operations結(jié)構(gòu)[4]定義為:

      圖1 MSG-3CM型CAN總線模塊開發(fā)板原理圖

      根據(jù)CAN通信協(xié)議和系統(tǒng)應(yīng)用的需要,在驅(qū)動(dòng)程序中定義了CanData的數(shù)據(jù)結(jié)構(gòu)以傳輸數(shù)據(jù),結(jié)構(gòu)如下:

      根據(jù)需要定義一個(gè)Mcp2515_DEV的數(shù)據(jù)結(jié)構(gòu),用于記錄接收緩沖區(qū)運(yùn)行的各種狀態(tài):

      定義并初始化完成file_operations結(jié)構(gòu)后,必須定義一個(gè)初始化函數(shù),在這里定義了一個(gè)名為GT2440_MCP2515_init()的函數(shù),主要完成的工作有:

      (1)軟件復(fù)位,進(jìn)入配置模式,設(shè)置CAN總線波特率,清空接收和發(fā)送緩沖區(qū),切換MCP2515到正常狀態(tài),聲明CAN的數(shù)據(jù)格式等。

      (2)注冊(cè)設(shè)備。注冊(cè)設(shè)備所使用的函數(shù)原型是:int register_chrdev(unsigned int major,const char*name,struct file_operations *fops)其中major是主設(shè)備號(hào),name是設(shè)備名稱,fops就是內(nèi)核訪問設(shè)備的接口。

      (3)注冊(cè)設(shè)備使用的中斷。因?yàn)橹袛嘈盘?hào)往往是通過特定的中斷信號(hào)線傳輸?shù)?,任何一款芯片留給中斷信號(hào)的接口都是有限的,所以內(nèi)核會(huì)維護(hù)一個(gè)中斷信號(hào)線注冊(cè)表,模塊要使用中斷就得向它申請(qǐng)一個(gè)中斷通道,當(dāng)它使用完該通道之后要釋放該通道。這里使用的就是函數(shù)request_irq(MCP2515_IRQ,s3c2440_isr_mcp2515,SA_INTERRUPT,DEVICE_NAME,s3c2440_isr_mcp2515)。

      對(duì)驅(qū)動(dòng)程序的編譯添加一般有兩種方式:靜態(tài)編譯進(jìn)內(nèi)核和模塊方式。為了便于調(diào)試,本文選擇模塊方式,首先將驅(qū)動(dòng)程序復(fù)制到/linux-2.6.38.6/drivers/char中,然后經(jīng)過相關(guān)配置后,使用insmod工具將編譯好的模塊加載到內(nèi)核中,然后編寫CAN總線測(cè)試程序,經(jīng)過交叉編譯后將測(cè)試程序下載到GT2440開發(fā)板中,最后在SecureCRT終端運(yùn)行測(cè)試程序,驗(yàn)證了方案的可行性。

      4.結(jié)束語

      本文介紹了在GT2440和linux平臺(tái)下擴(kuò)展CAN總線控制器的具體方法,同時(shí)詳細(xì)給出了開發(fā)CAN總線驅(qū)動(dòng)程序的過程。隨著嵌入式系統(tǒng)的發(fā)展,CAN通信設(shè)備與嵌入式系統(tǒng)的實(shí)際應(yīng)用結(jié)合會(huì)越來越廣泛。

      [1]Microchip.帶有SPI接口的獨(dú)立CAN控制器[M].Microchip,2005.

      [2]饒運(yùn)濤.現(xiàn)場(chǎng)總線CAN原理與應(yīng)用技術(shù)[M].北京:北京航空航天大學(xué)出版社,2007.

      [3]宋寶華.linux設(shè)備驅(qū)動(dòng)開發(fā)詳解[M].北京:人民郵電出版社,2008.

      [4]佟鳴宇,彭開香.基于ARM芯片的CAN總線接口設(shè)計(jì)與實(shí)現(xiàn)[J].計(jì)算機(jī)工程與設(shè)計(jì),2009,30(7):1574-1576.

      猜你喜歡
      開發(fā)板驅(qū)動(dòng)程序內(nèi)核
      萬物皆可IP的時(shí)代,我們當(dāng)夯實(shí)的IP內(nèi)核是什么?
      強(qiáng)化『高新』內(nèi)核 打造農(nóng)業(yè)『硅谷』
      基于嵌入式Linux內(nèi)核的自恢復(fù)設(shè)計(jì)
      Linux內(nèi)核mmap保護(hù)機(jī)制研究
      Microchip最新推出兩款PIC32 Curiosity開發(fā)板
      淺析單片機(jī)開發(fā)板的設(shè)計(jì)與制作
      電子制作(2017年22期)2017-02-02 07:10:14
      Mouser為您呈上開發(fā)關(guān)鍵之STMicroelectronics Nucleo開發(fā)板
      Arduino和Atmel發(fā)布Arduino Zero開發(fā)板
      驅(qū)動(dòng)程序更新與推薦
      驅(qū)動(dòng)程序更新與推薦
      蒲城县| 福安市| 都江堰市| 贵德县| 教育| 神木县| 罗城| 花莲县| 游戏| 吴忠市| 广河县| 琼中| 南涧| 比如县| 荔波县| 饶平县| 唐山市| 循化| 隆安县| 冕宁县| 无锡市| 南涧| 安远县| 邮箱| 盐亭县| 呼玛县| 体育| 锦州市| 伊宁县| 陆丰市| 新沂市| 三门峡市| 涿鹿县| 巫溪县| 读书| 铁岭市| 阳朔县| 遵义县| 鄂伦春自治旗| 平乡县| 颍上县|