<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

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

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

作者: 時(shí)間:2010-01-07 來(lái)源:網(wǎng)絡(luò ) 收藏

  5設備驅動(dòng)程序開(kāi)發(fā)

  5.1 設備驅動(dòng)程序開(kāi)發(fā)步驟

  系統設備分為字符設備、塊設備和網(wǎng)絡(luò )設備3種。其設備驅動(dòng)的開(kāi)發(fā)主要包括:

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

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

  c)對于驅動(dòng)程序的使用,可以進(jìn)行靜態(tài)編譯,也可以進(jìn)行動(dòng)態(tài)編譯。靜態(tài)編譯是指將設備驅動(dòng)程序添加到內核中,動(dòng)態(tài)編譯是指將設備驅動(dòng)程序編譯成驅動(dòng)模塊。

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

  5.2 LCD顯示驅動(dòng)程序開(kāi)發(fā)

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

  LCD顯示驅動(dòng)程序主要包括:

  a)LCD驅動(dòng)的文件結構:包括打開(kāi)設備文件、設備文件其它操作、關(guān)閉設備文件等;

  b)LCD的打開(kāi):LCD設備以讀寫(xiě)的方式打開(kāi);

  c)LCD設備的硬件初始化:包括注冊L(fǎng)CD設備、卸載LCD設備等;

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

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

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

  g)LCD的關(guān)閉。

  將上面的內容用程序實(shí)現,進(jìn)行動(dòng)態(tài)編譯。通過(guò)后,將LCD驅動(dòng)模塊進(jìn)行加載,一個(gè)完整的LCD驅動(dòng)就開(kāi)發(fā)完畢了。

  5.3 USB驅動(dòng)程序開(kāi)發(fā)

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


  USB驅動(dòng)的具體設計過(guò)程如下:

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

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

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

  d)USB設備的控制信息與數據讀寫(xiě)。USB設備驅動(dòng)程序可以通過(guò)文件操作結構中的函數向應用程序提供對硬件進(jìn)行控制的接口,同時(shí)讀寫(xiě)操作也要通過(guò)此函數來(lái)完成。

  e)USB驅動(dòng)的注銷(xiāo)。當從系統卸載驅動(dòng)程序時(shí),需要注銷(xiāo)USB設備,這樣必須編寫(xiě)一個(gè)注銷(xiāo)函數unregister_chrdev。

  6結束語(yǔ)

  本文基于TMS320DM*6平臺實(shí)現了Linux,包括創(chuàng )建交叉編譯環(huán)境、BootLoader的設計、Linux內核以及LCD、 USB設備驅動(dòng)程序開(kāi)發(fā),為實(shí)時(shí)應用開(kāi)發(fā)創(chuàng )建了一個(gè)良好的平臺,在此平臺上可進(jìn)一步進(jìn)行應用程序、GUI及算法開(kāi)發(fā)與測試。

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

上一頁(yè) 1 2 3 4 下一頁(yè)

評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>