新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 基于μCLinux的USB芯片F(xiàn)T245BL驅(qū)動程序?qū)崿F(xiàn)

基于μCLinux的USB芯片F(xiàn)T245BL驅(qū)動程序?qū)崿F(xiàn)

作者: 時(shí)間:2011-09-14 來源:網(wǎng)絡(luò) 收藏

讀取函數(shù)ft245bl_read通過判斷RXF管腳的狀態(tài)來處理接收到的數(shù)據(jù),如果RXF為0,表示接收緩沖區(qū)(RX FIFO)中至少有1個(gè)數(shù)據(jù),處理器讀取一個(gè)數(shù)據(jù)后重新回到判斷;如果RXF為1,表示沒有接收到數(shù)據(jù),這時(shí)程序啟動中斷等待事件函數(shù)wait_event_interruptible,內(nèi)核從設(shè)備驅(qū)動中釋放出來,運(yùn)行其他程序,直到有新的數(shù)據(jù)到來時(shí),內(nèi)核首先執(zhí)行中斷處理函數(shù)ft245bl_rx_handler,將中斷標(biāo)志位irqflag置1,喚醒等待隊(duì)列ft245bl_waitqueue,然后再回到讀取函數(shù)中繼續(xù)運(yùn)行。
2.5 中斷處理
設(shè)備通過調(diào)用中斷申請函數(shù)申請中斷,其格式為:

本文引用地址:http://m.butianyuan.cn/article/150214.htm


函數(shù)調(diào)用成功返回0值,返回-INVAL表示中斷號超出范圍或者h(yuǎn)andler=NULL;返回-BUSY表示中斷已經(jīng)被占用且不能共享。其中,handler是中斷處理子程序指針,中斷產(chǎn)生時(shí)自動調(diào)用該函數(shù);參數(shù)irq為中斷號;pt_regs為中斷發(fā)生之前寄存器的映像,很少使用;irqflags控制中斷行為。irqflags=SA_INTER-RUPT表示它在運(yùn)行時(shí)將禁止所有的中斷;irqflags=SA_SHIRQ表示共享此中斷處理程序;devname為設(shè)備名稱;dev_id用于支持中斷的共享,它將作為第2個(gè)參數(shù)傳遞給中斷處理函數(shù),可以利用它來傳遞一些必要的信息。該中斷處理程序如下:

3 的加載
可以按照兩種方式編譯:一種是靜態(tài)編譯進(jìn)內(nèi)核;另一種是編譯成模塊以供動態(tài)加載。該設(shè)備驅(qū)動程序采用靜態(tài)編譯進(jìn)μClinux內(nèi)核。下面以在嵌入式μClinux系統(tǒng)中需新增一個(gè)字符型設(shè)備為例,介紹設(shè)備驅(qū)動程序的添加的一系列步驟。
3.1 配置相關(guān)信息
首先,將編寫好的驅(qū)動程序復(fù)制到μClinux系統(tǒng)的文件目錄中。新建ft245bl目錄統(tǒng)一管理USB設(shè)備的驅(qū)動文件包括C文件、頭文件、編譯文件、配置文件,存放于目錄μClinux-dist/linux-2.6.x/drivers/char/下,在ft245bl下新建Makefile,并在下面兩個(gè)編譯文件中添加編譯指令:


在ft245bl下新建配置文件Kconfig,添加驅(qū)動名_DRIVER、菜單選項(xiàng)名稱USB ft245bl Driv-er、菜單有效選項(xiàng)DRIVER_及驅(qū)動說明,代碼如下:


第1項(xiàng)是μClinux系統(tǒng)為設(shè)備驅(qū)動創(chuàng)建的驅(qū)動文件名及所在目錄;第2項(xiàng)是設(shè)備類型;第3項(xiàng)是設(shè)備驅(qū)動文件的權(quán)限;第4,5項(xiàng)分別為用戶ID和組ID;第6,7項(xiàng)為主設(shè)備號和次設(shè)備號;第8,9,10項(xiàng)分別為次設(shè)備號的起始號碼、增量和數(shù)量。
3.2 編譯驅(qū)動程序
在/home/μClinux/μClinux-dist目錄下運(yùn)行make menueonfig進(jìn)行配置,在字符設(shè)備選項(xiàng)中可以看見剛剛添加的FT245BL Driver選項(xiàng),選中它。通過make的一系列編譯,所有內(nèi)核和應(yīng)用程序源代碼將被編譯,編譯結(jié)束后將產(chǎn)生二進(jìn)制文件uImage。
3.3 加載驅(qū)動程序
這里的BF533主板中數(shù)據(jù)存儲器SDRAM大小為32 MB,地址為0~Ox02000000;異步存儲區(qū)BootFLASH大小為4 MB,地址為0x20000000~0x203FFFFF。在/home/μClinux/μClinux-dist運(yùn)行指令下,把uImage文件拷貝到/svr/tftp目錄,tftp是一個(gè)簡單的ftp下載:
cp images/uImage/svr/tftp
打開超級終端μClinux,接通目標(biāo)板電源或按復(fù)位鍵,目標(biāo)板上的u-boot自動啟動,通過超級終端的串口輸入命令:


到此,在μClinux中添加設(shè)備驅(qū)動程序的工作已經(jīng)完成。


4 結(jié) 語
介紹了Blackfin ADSP-BF533開發(fā)板,在μClinux環(huán)境下USBFT245BL驅(qū)動程序的設(shè)計(jì)與加載。簡述了設(shè)備驅(qū)動程序開發(fā)的過程,并給出了讀函數(shù)和中斷函數(shù)的實(shí)例,說明了在μiClinux下如何添加FT245BL驅(qū)動程序的方法,了DSP主板的USB端口通信。


上一頁 1 2 下一頁

評論


相關(guān)推薦

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

關(guān)閉