• <li id="00i08"><input id="00i08"></input></li>
  • <sup id="00i08"><tbody id="00i08"></tbody></sup>
    <abbr id="00i08"></abbr>
  • 新聞中心

    EEPW首頁 > 消費電子 > 設計應用 > 面向嵌入式視頻處理平臺的Linux移植

    面向嵌入式視頻處理平臺的Linux移植

    作者: 時間:2010-01-07 來源:網絡 收藏

      5設備驅動程序開發

      5.1 設備驅動程序開發步驟

      系統設備分為字符設備、塊設備和網絡設備3種。其設備驅動的開發主要包括:

      a)在驅動程序源文件中定義file_opera-tions結構,并編寫出設備需要的各個操作函數,對于設備不需要的操作函數用NULL初始化,這些操作函數將被注冊到內核中。

      b)定義一個初始化函數,在初始化時會調用此函數。此函數包含:初始化驅動程序要用到的硬件寄存器;初始化與設備相關的參數;注冊設備;注冊設備使用的中斷和函數;其他一些初始化工作。

      c)對于驅動程序的使用,可以進行靜態編譯,也可以進行動態編譯。靜態編譯是指將設備驅動程序添加到內核中,動態編譯是指將設備驅動程序編譯成驅動模塊。

      本系統主要用于,涉及到的外設主要是顯示設備和輸入設備。這里采用的顯示設備是LCD,而輸入設備是通過USB接口與系統相連的。

      5.2 LCD顯示驅動程序開發

      LCD的設備驅動程序屬于字符設備的驅動,應按照字符設備的規則編寫。在Linux下進行LCD顯示用Framebuffer技術,這是提取圖形的設備,是用戶進入圖形界面很好的接口。Linux內核根據硬件描述抽象出Framebuffer設備,供用戶態的進程直接進行寫屏。可以將 Framebuffer看成是顯示內存的一個映像,將其映射到進程地址空間之后,就可以直接進行讀寫操作,寫操作立即反應在屏幕上。 Framebuffer的設備文件一般存放在/dev這個目錄下,對此設備文件進行操作即可實現圖像的顯示。

      LCD顯示驅動程序主要包括:

      a)LCD驅動的文件結構:包括打開設備文件、設備文件其它操作、關閉設備文件等;

      b)LCD的打開:LCD設備以讀寫的方式打開;

      c)LCD設備的硬件初始化:包括注冊LCD設備、卸載LCD設備等;

      d)LCD相關結構的設置:以獲取顯存起始地址、分別率、色深等;

      e)映射內存區的操作:包括初始化顯存清零等,將攝像頭采集到的圖像數據讀至顯存處,以顯示圖像;

      f)LCD控制輸出:包括得到命令、畫水平線、畫垂直線、畫圓等;

      g)LCD的關閉。

      將上面的內容用程序實現,進行動態編譯。通過后,將LCD驅動模塊進行加載,一個完整的LCD驅動就開發完畢了。

      5.3 USB驅動程序開發

      與LCD設備不同,USB既不屬于字符設備,也不屬于塊設備,而是一個新的設備類別,設計框架和流程如下:首先,提供一個“.o”的驅動模塊文件,且在一開始就加載運行。USB驅動就會根據其類型向系統注冊。注冊成功后,系統會反饋一個主設備號,這個主設備號就是其唯一標識。USB驅動就是根據主設備號創建一個放置在/dev目錄下的設備文件。要訪問此硬件,可用open、read和write等命令訪問相應的設備文件,驅動就會接收到相應的 read或write函數,根據模塊中相對應的函數進行操作。驅動流程見圖6。


      USB驅動的具體設計過程如下:

      a)USB驅動的注冊。USB驅動程序在注冊時會發送一個命令給函數register_chrdev,通常在驅動程序的初始化函數中。當USB 設備插入時,為了使linux-hotplug(Linux中USB等設備熱插拔支持)系統自動裝載驅動程序,需創建 MODULE_DEVICE_TABLE,在此過程中需將USB的主設備號傳遞給相應的函數。

      b)USB設備的打開。打開設備是通過調用file_operations結構中的函數open()來完成的。其主要完成的任務是:檢查設備相關錯誤,如果是第一次打開,則初始化硬件設備;識別次設備號;使用計數增1。

      c)USB設備的釋放。釋放設備是通過調用file_operations結構中的函數release()來完成的。它的作用正好與open()相反,通常要完成這樣的工作:使用計數減1,如果使用計算為0,則關閉設備。

      d)USB設備的控制信息與數據讀寫。USB設備驅動程序可以通過文件操作結構中的函數向應用程序提供對硬件進行控制的接口,同時讀寫操作也要通過此函數來完成。

      e)USB驅動的注銷。當從系統卸載驅動程序時,需要注銷USB設備,這樣必須編寫一個注銷函數unregister_chrdev。

      6結束語

      本文基于TMS320DM*6平臺實現了Linux,包括創建交叉編譯環境、BootLoader的設計、Linux內核以及LCD、 USB設備驅動程序開發,為實時應用開發創建了一個良好的平臺,在此平臺上可進一步進行應用程序、GUI及算法開發與測試。

    linux操作系統文章專題:linux操作系統詳解(linux不再難懂)

    上一頁 1 2 3 4 下一頁

    評論


    相關推薦

    技術專區

    關閉
    主站蜘蛛池模板: 洛川县| 嘉禾县| 小金县| 巴塘县| 布拖县| 天等县| 科技| 饶阳县| 丹阳市| 南溪县| 辽宁省| 双江| 邯郸县| 德庆县| 天全县| 临安市| 长丰县| 安平县| 瑞金市| 普宁市| 吉安县| 南澳县| 莎车县| 东海县| 五大连池市| 莱芜市| 贵阳市| 清远市| 潜江市| 开平市| 北辰区| 淮北市| 洞头县| 康定县| 枣强县| 凯里市| 克拉玛依市| 南澳县| 佛冈县| 威海市| 桃江县|