新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 設計應用 > 基于嵌入式硬件平臺的劃片機視覺系統(tǒng)設計

基于嵌入式硬件平臺的劃片機視覺系統(tǒng)設計

作者: 時間:2016-12-02 來源:網絡 收藏

3.2 ARM Linux設備驅動編寫

Linux的內核是由設備管理、進程管理、文件系統(tǒng)和內存管理一起組成,Linux設備驅動可以分為字符類設備,網絡接口類設備,塊類設備和其他非標準驅動。PCI設備被看作是字符型設備。每個PCI外設都由一個總線號、一個設備號和一個功能號來標示,共有3個訪問空間,即I/O端口、內存空間和配置寄存器。PCI配置空間由256個字節(jié)組成,且每個設備功能都有一個配置空間,用于決定PCI器件的工作方式和映射到系統(tǒng)中的地址。

添加系統(tǒng)的PCI設備驅動主要步驟:

(1)創(chuàng)建1個PCI設備,命令:mknod pci_dev c247 0,其中c表示字符設備,247表示主設備號,0代表次設備號。

(2)初始化外部設備,將函數(shù)pci_ dev_ init()添加到ARMlinux/linux/drivers/chal/mem.c文件的chr _dev_ init()中,chr _dev _init()將在系統(tǒng)啟動時被調用,會完成設備驅動的初始化工作:

(3)設備驅動文件pci__dev.c的編寫。設備注冊接口函數(shù),中斷處理函數(shù)等構成了PCI設備驅動主要代碼。即file_operationgs根據(jù)S3C2510的PCI配置寄存器所給定的基址來讀寫數(shù)據(jù)。PCI定義的I/O空間是32位地址空間,內存和I/O可使用相同的配置接口。

(4)PCI設備的加載。ARMlinux不支持設備驅動的動態(tài)加載,因此需要把驅動編譯到ARM Linux內核中,首先需修改makefile文件,添加下行:obj_$(CONFIG_ PCI_ DEV)+=pci _dev.o接著修改config.in, 添 加 :boolpci _dev installCONFIGPCI DEV,添加這行的目的是為了在配置目標板Linux系統(tǒng)內核時以便對這個設備進行選擇。最后在目標系統(tǒng)的makefile中添加設備節(jié)點:pci _dev,C,247,0這樣在配置Linux內核時就可以選擇pci_dev install,然后進行編譯,這樣PCI設備驅動就加載到了ARM Linux系統(tǒng)中。

4 主控單元圖像采集編程

內核針對數(shù)碼攝像頭等視頻設備提供V4L函數(shù)接口,V4L提供針對視頻設備進行基本的I/O操作的接口函數(shù)如:open、read、write、close,中斷處理,內存映射及I/O通道的控制ioctl等,并定義在struct file_operations數(shù)據(jù)結構體中。當應用程序對設備進行諸如open、read、Write、close等系統(tǒng)調用操作時,內核將通過file_operation結構訪問驅動程序提供的函數(shù)接口.具體的采集程序如下:

PCI接口視頻采集流程如圖5所示。

V4L為視頻采集圖像提供兩種方案①:read()直接讀取,②:mmap()內存映射。read()通過內存緩沖區(qū)


上一頁 1 2 3 下一頁

評論


技術專區(qū)

關閉