如何驅(qū)動(dòng)GPIO及對(duì)應(yīng)設(shè)備
出處:yhhdsp 發(fā)布于:2008-12-24 13:47:21
一般的ARM都提供超過(guò)100路的GPIO復(fù)用管腳,要使用這些管腳,就必須首先將其驅(qū)動(dòng)起來(lái)。如果使用的芯片帶有MMU內(nèi)存管理,那么在寫驅(qū)動(dòng)模塊的時(shí)候不能直接去操作物理地址,必須利用io rem ap命令重新映射。
1.I/O端口
和硬件打交道離不開I/O端口,老的ISA設(shè)備經(jīng)常是占用實(shí)際的I/O端口,在Linux下,操作系統(tǒng)沒(méi)有對(duì)I/O端口屏蔽。也就是說(shuō),任何驅(qū)動(dòng)程序都可以對(duì)任意的I/O端口操作,這樣就很容易引起混亂。每個(gè)驅(qū)動(dòng)程序都應(yīng)該自己避免誤用端口,有兩個(gè)重要的kernel函數(shù)可以保證驅(qū)動(dòng)程序做到這一點(diǎn)。
check_reglon(int io_ port' int off_set)
這個(gè)函數(shù)用來(lái)查看系統(tǒng)的I/0表,看是否有別的驅(qū)動(dòng)程序占用某一段I/O口。參數(shù)1:I/O端口的基地址;參數(shù)2:I/O端口占用的范圍。返回值:0,沒(méi)有占用;非0,己經(jīng)被占用。
request_reglon(int io_port' int off_set、char *devname)
如果這段I/O端口沒(méi)有被占用,那么在驅(qū)動(dòng)程序中就可以使用它。在使用之前,必須向系統(tǒng)登記,以防止被其他程序占用;登記后,在/proc/ioports文件中可以看到登記的I/O口。參數(shù)1:I/O端口的基地址;參數(shù)2:I/O端口占用的范圍;參數(shù)3:使用這段I/O地址的設(shè)備名。在對(duì)I/O口登記后,就可以放心地用inb0,outb()之類的函數(shù)來(lái)訪問(wèn)了。
2.和設(shè)備文件對(duì)話
驅(qū)動(dòng)程序提供了對(duì)設(shè)備操作的接口,同時(shí)在程序中實(shí)現(xiàn)了基本操作所需要的基本函數(shù)。用戶程序通過(guò)訪問(wèn)設(shè)備文件的方式對(duì)設(shè)備間接操作,Linux系統(tǒng)提供了ioctl(input outputcontrol的縮寫)函數(shù)可以很方便地實(shí)現(xiàn)這一操作。
int ioctl(int fd' ind cmd、……);
其中,fd就是用戶程序打開設(shè)備時(shí)使用open函數(shù)返回的文件標(biāo)識(shí)符;cmd就是用戶程序?qū)υO(shè)備的控制命令:后面的省略號(hào),那是一些補(bǔ)充參數(shù),一般多一個(gè),有或沒(méi)有是和cmd的意義相關(guān)的。
選擇設(shè)備的控制命令時(shí),需要根據(jù)Linux文檔所提供的標(biāo)準(zhǔn)控制字(Documentation/ioctl-number.txt)中選擇的合適控制字,如果選擇不合適會(huì)和系統(tǒng)中的其他設(shè)備發(fā)生沖突。
上一篇:用戶程序訪問(wèn)GPIO
下一篇:GPIO應(yīng)用舉例
版權(quán)與免責(zé)聲明
凡本網(wǎng)注明“出處:維庫(kù)電子市場(chǎng)網(wǎng)”的所有作品,版權(quán)均屬于維庫(kù)電子市場(chǎng)網(wǎng),轉(zhuǎn)載請(qǐng)必須注明維庫(kù)電子市場(chǎng)網(wǎng),http://www.udpf.com.cn,違反者本網(wǎng)將追究相關(guān)法律責(zé)任。
本網(wǎng)轉(zhuǎn)載并注明自其它出處的作品,目的在于傳遞更多信息,并不代表本網(wǎng)贊同其觀點(diǎn)或證實(shí)其內(nèi)容的真實(shí)性,不承擔(dān)此類作品侵權(quán)行為的直接責(zé)任及連帶責(zé)任。其他媒體、網(wǎng)站或個(gè)人從本網(wǎng)轉(zhuǎn)載時(shí),必須保留本網(wǎng)注明的作品出處,并自負(fù)版權(quán)等法律責(zé)任。
如涉及作品內(nèi)容、版權(quán)等問(wèn)題,請(qǐng)?jiān)谧髌钒l(fā)表之日起一周內(nèi)與本網(wǎng)聯(lián)系,否則視為放棄相關(guān)權(quán)利。
- 什么是氫氧燃料電池,氫氧燃料電池的知識(shí)介紹2025/8/29 16:58:56
- SQL核心知識(shí)點(diǎn)總結(jié)2025/8/11 16:51:36
- 等電位端子箱是什么_等電位端子箱的作用2025/8/1 11:36:41
- 基于PID控制和重復(fù)控制的復(fù)合控制策略2025/7/29 16:58:24
- 什么是樹莓派?一文快速了解樹莓派基礎(chǔ)知識(shí)2025/6/18 16:30:52