新聞中心

        EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > Android系統(tǒng)下CAN總線驅(qū)動(dòng)程序的設(shè)計(jì)與實(shí)現(xiàn)

        Android系統(tǒng)下CAN總線驅(qū)動(dòng)程序的設(shè)計(jì)與實(shí)現(xiàn)

        作者: 時(shí)間:2013-04-25 來源:網(wǎng)絡(luò) 收藏

        2
        2.1 操作驅(qū)動(dòng)原理
        雖然使用了Linux內(nèi)核,但應(yīng)用程序是用Java語言開發(fā)的,所以應(yīng)用程序在調(diào)用設(shè)備驅(qū)動(dòng)不能像Linux應(yīng)用程序那樣使用調(diào)用,必須用Java虛擬機(jī)的JNI的本地(Native)方法。另一方面,要成為一個(gè)通用性強(qiáng)的平臺(tái),必須加強(qiáng)它的可移植性,這也是在Andr oid架構(gòu)添加一個(gè)(HAL)硬件抽象層的原因,目的是為設(shè)備的調(diào)用提供一個(gè)更高級(jí)的封裝。圖3所示為Android的技術(shù)結(jié)構(gòu)。

        本文引用地址:http://www.104case.com/article/148042.htm

        c.JPG


        HAL Stub以*.so庫的形式存在,在整個(gè)驅(qū)動(dòng)架構(gòu)中,它是驅(qū)動(dòng)運(yùn)行在用戶空間的一部分,它往上為Dalvik虛擬機(jī)提供硬件設(shè)備的抽象接口,往下通過調(diào)用與Linux內(nèi)核中的交互數(shù)據(jù),在這個(gè)過程中HAL可以對(duì)驅(qū)動(dòng)程序的數(shù)據(jù)進(jìn)行處理,即在Linux內(nèi)核中的驅(qū)動(dòng)程序只需提供一個(gè)與硬件設(shè)備傳輸數(shù)據(jù)的功能,而具體的操作可以由HAL完成。Android下驅(qū)動(dòng)程序的,不但要在Linux內(nèi)核中添加驅(qū)動(dòng)模塊,還必須在用戶空間和應(yīng)用框架中添加對(duì)應(yīng)的支持。
        2.2 CAN驅(qū)動(dòng)程序流程
        主控制器S5PV210通過其自身的SPI接口與MCP2515的連接,若要使平臺(tái)正常工作,軟件的實(shí)現(xiàn)是必需的。首先要確保S5PV210的SPI口可以正常收發(fā)數(shù)據(jù),然后利用SPI口對(duì)MCP2515的寄存器進(jìn)行設(shè)置。CAN驅(qū)動(dòng)程序流程圖如圖4所示,第一步是實(shí)現(xiàn)S5PV210的SPI的加載和聲明;第二步是Linuxkernel中CAN驅(qū)動(dòng)的實(shí)現(xiàn),包括MCP2515的初始化、MCP2515的讀寫、CAN驅(qū)動(dòng)的加載。第三步是Android HAL層的調(diào)用。

        d.JPG



        3 CAN總線驅(qū)動(dòng)程序的實(shí)現(xiàn)
        3.1 SPI總線加載和聲明
        系統(tǒng)的CAN總線設(shè)備通過S5PV210的SPI總線連接,因此,需要SPI線驅(qū)動(dòng)完成數(shù)據(jù)接收與發(fā)送。關(guān)于SPI總線驅(qū)動(dòng)在Linux內(nèi)核中已有良好的支持,加載并聲明SPI總線就可以直接使用。Linux內(nèi)核使用包裝后的抽象設(shè)備驅(qū)動(dòng)spi_driver,間接與原始設(shè)備驅(qū)動(dòng)建立聯(lián)系,并最終通過調(diào)用driver_register來注冊(cè)原始設(shè)備驅(qū)動(dòng),即只需要在內(nèi)核提供的spi_driver上修改調(diào)試,大幅提高了程序效率和可移植性。
        這樣在結(jié)構(gòu)體mop2515_driver里完成了對(duì)MCP2515驅(qū)動(dòng)函數(shù)probe,remove的賦值。然后就可以通過SPI對(duì)MCP2515的寄存器進(jìn)行設(shè)置來實(shí)現(xiàn)CAN總線驅(qū)動(dòng)程序。

        塵埃粒子計(jì)數(shù)器相關(guān)文章:塵埃粒子計(jì)數(shù)器原理


        評(píng)論


        相關(guān)推薦

        技術(shù)專區(qū)

        關(guān)閉
        主站蜘蛛池模板: 青海省| 合阳县| 宜昌市| 洱源县| 七台河市| 通城县| 政和县| 嘉禾县| 黔西县| 贵州省| 沾化县| 琼结县| 潞西市| 巫溪县| 新余市| 前郭尔| 罗田县| 观塘区| 翁源县| 晋中市| 丰城市| 资中县| 香港| 洞头县| 广州市| 县级市| 原阳县| 兴文县| 屏东县| 达日县| 永清县| 肥东县| 仙居县| 奉化市| 历史| 纳雍县| 南京市| 呼伦贝尔市| 孟津县| 保定市| 宝兴县|