freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

基于arm的智能機器人圖像采集系統(tǒng)(編輯修改稿)

2025-02-14 16:08 本頁面
 

【文章內(nèi)容簡介】 upervivi,點擊“USB PortTransmit”選項,選擇supervivi。(6) 選擇功能號[k]下載內(nèi)核文件,點擊“USB PortTransmit”選項,選擇編譯好的內(nèi)核文件zImage。(7) 選擇功能號[y]下載根文件系統(tǒng),點擊“USB PortTransmit”選項。(8) 選擇NandFlash模式,重新啟動開發(fā)板。 驅(qū)動程序設(shè)計 Linux設(shè)備驅(qū)動程序設(shè)備驅(qū)動最通俗的解釋就是“驅(qū)使硬件設(shè)備行動”。驅(qū)動與底層硬件直接打交道,按照硬件設(shè)備的具體工作方式,讀寫設(shè)備的寄存器,完成設(shè)備的輪詢、中斷處理、DMA通信,進行物理內(nèi)存向虛擬內(nèi)存的映射等[7],最終讓通信設(shè)備能收發(fā)數(shù)據(jù),讓顯示設(shè)備能顯示文字和畫面,讓存儲設(shè)備能記錄文件和數(shù)據(jù)。驅(qū)動針對的對象是存儲器和外設(shè),Linux把存儲器和外設(shè)分成字符設(shè)備、塊設(shè)備和網(wǎng)絡(luò)設(shè)備三個基礎(chǔ)大類。字符設(shè)備指那些必須以串行順序依次進行訪問的設(shè)備,如觸摸屏、磁帶驅(qū)動器、鼠標等。塊設(shè)備可以用任意順序進行訪問,以塊為單位進行操作,如硬盤、軟驅(qū)等。字符設(shè)備不經(jīng)過系統(tǒng)的快速緩沖,而塊設(shè)備經(jīng)過系統(tǒng)的快速緩沖。但是,字符設(shè)備和塊設(shè)備并沒有明顯的界限,如Flash設(shè)備符合塊設(shè)備的特點,但是仍然可以把它作為一個字符設(shè)備來訪問[8]。Linux設(shè)備驅(qū)動與整個軟硬件系統(tǒng)的關(guān)系如圖9所示圖9 Linux設(shè)備驅(qū)動與軟硬件系統(tǒng)的關(guān)系 PWM驅(qū)動程序設(shè)計根據(jù)功能劃分,設(shè)備驅(qū)動程序可分為以下幾部分:(1) 驅(qū)動程序的注冊和注銷。(2) 設(shè)備的打開和釋放。(3) 設(shè)備的讀寫操作。(4) 設(shè)備的控制操作。(5) 設(shè)備的中斷和輪詢處理。,如串口驅(qū)動、USB攝像頭驅(qū)動、LCD驅(qū)動、按鍵驅(qū)動等,這樣有效的節(jié)約了開發(fā)時間。但是linux提供的驅(qū)動不一定能完全滿足設(shè)計的需求,以下為PWM驅(qū)動程序結(jié)構(gòu):(1) 設(shè)置PWM波占空比為50%,頻率為freq函數(shù)static void PWM_Set_Freq(unsigned long freq)。(2) 設(shè)置PWM波頻率為freq函數(shù)static void PWM_Set_FreqAndRatio_Freq(unsigned long freq)。(3) 結(jié)合第二個子函數(shù)設(shè)置PWM波占空比為ratiostatic void PWM_Set_FreqAndRatio_Ratio(unsigned long ratio)。(4) 停止產(chǎn)生PWM波函數(shù)void PWM_Stop( void )。(5) Open調(diào)用具體函數(shù)static int s3c24xx_pwm_open(struct inode *inode, struct file *file)。(6) Read調(diào)用具體函數(shù)static int s3c24xx_pwm_close(struct inode *inode, struct file *file)。(7) Ioctl調(diào)用具體函數(shù)static int s3c24xx_pwm_ioctl(struct inode *inode, struct file *file, unsigned int cmd, unsigned long arg)。(8) file_operations 結(jié)構(gòu)體,驅(qū)動程序與操作系統(tǒng)內(nèi)核的接口static struct file_operations dev_fops = { .owner = THIS_MODULE, .open = s3c24xx_pwm_open, .release = s3c24xx_pwm_close, .ioctl = s3c24xx_pwm_ioctl,}。(9) 設(shè)備注冊和注銷static struct miscdevice misc = { .minor = MISC_DYNAMIC_MINOR, .name = DEVICE_NAME, .fops = amp。dev_fops,}。static int __init dev_init(void)。static void __exit dev_exit(void)。(10) 模塊創(chuàng)建時的入口點module_init(dev_init)。(11) 模塊卸載時的入口點module_exit(dev_exit)。 驅(qū)動程序安裝驅(qū)動程序安裝有模塊方式和直接編譯進內(nèi)核兩種方式,第一種方法所用的時間短主要用于驅(qū)動程序開發(fā)階段,第二種方法需要重新編譯所有內(nèi)核文件所用時間長主要用于發(fā)布階段[9]。(1) 模塊方式:l 創(chuàng)建Makefile文件,文件內(nèi)容如下ifneq ($(KERNELRELEASE),)objm := elseKDIR := /lib/modules/all: make C $(KDIR) M=$(PWD) modules ARCH=arm CROSS_COMPILE=armlinuxclean: rm f *.ko *.o *. *. *.symversendif第六行和第八行必須用Tab鍵來空格,否則無法編譯。l 。l 進入目錄,運行make 。l ,在開發(fā)板上新建/lib/modules/。l 在開發(fā)板/pwm目錄下運行insmod ,在/pwm目錄下運行rmmod mini2440_pwm以卸載驅(qū)動模塊。(2) 直接編譯進內(nèi)核:通過動態(tài)加載驅(qū)動模塊方式測試驅(qū)動程序無誤后將驅(qū)動程序直接編譯進內(nèi)核可以避免重復加載和卸載的工作。l 將驅(qū)動程序拷貝到內(nèi)核文件drivers/char目錄下。l 修改Kconfig文件sudo gedit Kconfig,在文件中按照格式加入config mini2440_pwm_DRIVER bool my pwm driver 保存退出,修改過后會在menuconfig配置界面中生成my pwm driver選項。l 修改Makefile文件,sudo gedit Makefile,按照格式加入以下內(nèi)容:obj$(CONFIG_mini2440_pwm_DRIVER) +=l 按照內(nèi)核定制步驟,在menuconfig配置界面中選上my pwm driver,重新編譯內(nèi)核并移植系統(tǒng)。 4 應(yīng)用程序設(shè)計應(yīng)用程序是指為了完成某項或某幾項特定任務(wù)而被開發(fā)運行于操作系統(tǒng)之上的計算機程序。它位于嵌入式系統(tǒng)軟件最頂層。本設(shè)計主要涉及到按鍵開發(fā)、LCD顯示、圖像采集、圖像處理、控制策略等幾部分,圖10是系統(tǒng)總體流程圖。圖10系統(tǒng)總體流程圖 按鍵應(yīng)用程序開發(fā)開發(fā)板總共有6個用戶測試用按鍵,它們均從核心板的CPU中斷引腳直接引出,屬于低電平觸發(fā),Linux內(nèi)核中自帶有按鍵驅(qū)動程序,中斷等操作都在驅(qū)動程序里實現(xiàn)。如圖11為按鍵應(yīng)用程序流程圖:圖11 按鍵程序流程圖 LCD液晶顯示程序開發(fā) Linux的幀緩沖設(shè)備FramebufferFrameBuffer 是出現(xiàn)在 內(nèi)核當中的一種驅(qū)動程序接口。這種接口將顯示設(shè)備抽象為幀緩沖區(qū)。用戶可以將它看成是顯示內(nèi)存的一個映像,將其映射到進程地址空間之后,就可以直接進行讀寫操作,寫操作可以立即反應(yīng)在屏幕上。該驅(qū)動程序的設(shè)備文件一般是 /dev/fb0、/dev/fb1 等等[10]。對于用戶而言,它和/dev下面的其他設(shè)備沒有什么區(qū)別,,也可以從這塊內(nèi)存中讀取數(shù)據(jù)。顯示器將根據(jù)相應(yīng)指定內(nèi)存塊的數(shù)據(jù)來顯示對應(yīng)的圖形界面。而這一切都由LCD控制器和相應(yīng)的驅(qū)動程序來完成,如圖12所示。從圖12可以看出,幀緩沖設(shè)備在Linux中也可以看做是一個完整的子系統(tǒng)。向上給應(yīng)用程序提供完善的設(shè)備文件操作接口(即對FrameBuffer設(shè)備進行read、write、ioctl等操作),;向下提供了硬件操作的接口,只是這些接口Linux并沒有提供實現(xiàn),因為這要根據(jù)具體的LCD控制器硬件進行設(shè)置。通過/dev/fb,應(yīng)用程序的操作主要有以下幾種: (1) 讀/寫(read/write) /dev/fb。(2) 映射(map)操作。(3) I/O控制。圖12 幀緩沖設(shè)備驅(qū)動程序結(jié)構(gòu)圖 液晶顯示流程,大小為240*320,液晶顯示分為兩部分,一部分用于顯示圖像(240*240),一部分用于顯示速度、轉(zhuǎn)角等參數(shù)。如圖13為液晶顯示程序流程圖。(1) 打開/dev/fb設(shè)備文件:screen_fbd=screen_fbd=open(/dev/fb0,O_RDWR)。(2) 用ioctrl函數(shù)獲取當前顯示屏幕的分辨率,每個像素點的比特數(shù):/*獲取屏幕相關(guān)參數(shù)*/ioctl(screen_fbd, FBIOGET_FSCREENINFO, amp。finfo)。 ioctl(screen_fbd, FBIOGET_VSCREENINFO, amp。vinfo)。 /*計算屏幕緩沖區(qū)大小*/ fb_size = *。 (3) 將屏幕緩沖區(qū)映射到用戶空間:fb_addr=(char *)mmap(NULL,fb_size,PROT_READ|PROT_WRITE,MAP_SHARED, screen_fbd, 0)。(4) 顯示圖片和參數(shù):print_screen(unsigned short *buf,int width,int height);Draw_ASCII(int line,int row,unsigned short color,unsigned short value)(5) 解除內(nèi)存映射關(guān)閉設(shè)備:munmap(fb_addr, fb_size)。close(screen_fbd)。 圖13液晶顯示程序流程圖 圖像采集 Video4Linux2 Video4linux2簡稱V4L2,是linux中關(guān)于視頻設(shè)備的內(nèi)核驅(qū)動,在linux中,視頻設(shè)備是設(shè)備文件,可以像訪問普通文件一樣對其進行讀寫,攝像頭在/dev/videoN下,N可能為0,1,2,3,…一
點擊復制文檔內(nèi)容
規(guī)章制度相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖片鄂ICP備17016276號-1