新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > Android系統下CAN總線驅動程序的設計與實現

        Android系統下CAN總線驅動程序的設計與實現

        作者: 時間:2013-04-25 來源:網絡 收藏

        2
        2.1 操作驅動原理
        雖然使用了Linux內核,但應用程序是用Java語言開發的,所以應用程序在調用設備驅動不能像Linux應用程序那樣使用調用,必須用Java虛擬機的JNI的本地(Native)方法。另一方面,要成為一個通用性強的平臺,必須加強它的可移植性,這也是在Andr oid架構添加一個(HAL)硬件抽象層的原因,目的是為設備的調用提供一個更高級的封裝。圖3所示為Android的技術結構。

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

        c.JPG


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

        d.JPG



        3 CAN總線驅動程序的實現
        3.1 SPI總線加載和聲明
        系統的CAN總線設備通過S5PV210的SPI總線連接,因此,需要SPI線驅動完成數據接收與發送。關于SPI總線驅動在Linux內核中已有良好的支持,加載并聲明SPI總線就可以直接使用。Linux內核使用包裝后的抽象設備驅動spi_driver,間接與原始設備驅動建立聯系,并最終通過調用driver_register來注冊原始設備驅動,即只需要在內核提供的spi_driver上修改調試,大幅提高了程序效率和可移植性。
        這樣在結構體mop2515_driver里完成了對MCP2515驅動函數probe,remove的賦值。然后就可以通過SPI對MCP2515的寄存器進行設置來實現CAN總線驅動程序。

        塵埃粒子計數器相關文章:塵埃粒子計數器原理


        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 左云县| 高淳县| 简阳市| 大方县| 舞阳县| 锡林郭勒盟| 如东县| 钟祥市| 闻喜县| 怀仁县| 汉川市| 西安市| 赤水市| 从江县| 龙里县| 湖南省| 阳信县| 金山区| 吉林省| 定西市| 集安市| 斗六市| 永德县| 扬中市| 稷山县| 平顶山市| 丰县| 柳江县| 奉贤区| 夏津县| 和田市| 无锡市| 洪雅县| 拉萨市| 隆尧县| 清流县| 镇平县| 安化县| 定安县| 富顺县| 聂荣县|