色婷婷AⅤ一区二区三区|亚洲精品第一国产综合亚AV|久久精品官方网视频|日本28视频香蕉

          新聞中心

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

          Android系統(tǒng)下CAN總線驅(qū)動程序的設計與實現(xiàn)

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

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

          本文引用地址:http://cafeforensic.com/article/148042.htm

          c.JPG


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

          d.JPG



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

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


          評論


          相關(guān)推薦

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

          關(guān)閉