五月天青色头像情侣网名,国产亚洲av片在线观看18女人,黑人巨茎大战俄罗斯美女,扒下她的小内裤打屁股

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊

ioremap在linux驅(qū)動(dòng)中應(yīng)用實(shí)例--S3C2440開發(fā)板LED驅(qū)動(dòng)

2023-06-12 10:42 作者:有AI野心的電工和碼農(nóng)  | 我要投稿

又一篇講老版本內(nèi)核驅(qū)動(dòng)的,多年沒寫過內(nèi)核驅(qū)動(dòng)了,也不知這些技術(shù)現(xiàn)在還適用不,權(quán)當(dāng)紀(jì)念吧。

剛開始學(xué)字符設(shè)備驅(qū)動(dòng),感覺最難的是驅(qū)動(dòng)和底層硬件的連接。

linux上的驅(qū)動(dòng)程序,是基于操作系統(tǒng)之上的,他并不直接和底層的硬件打交道,但是我們寫的驅(qū)動(dòng)必須能使硬件“跑”起來,即與硬件緊密相連。

就拿最簡單的LED驅(qū)動(dòng)來說,我們的驅(qū)動(dòng)程序是在虛擬的內(nèi)存上面跑的,但是最終,LED的點(diǎn)亮還是必須靠GPIO管腳的高低電平來控制。

那么,我們的虛擬的內(nèi)存怎么才能和實(shí)際的硬件上面的寄存器對應(yīng)起來呢?

這篇要寫的就是ioremap這個(gè)映射函數(shù),他可以將我們硬件上面的寄存器,映射為虛擬的內(nèi)存,從而使驅(qū)動(dòng)程序在我們的虛擬的內(nèi)存中運(yùn)行。

void * __ioremap(unsigned long phys_addr, unsigned long size, unsigned long flags)

入口:

  • phys_addr:要映射的起始的IO地址,即:物理地址

  • size:要映射的空間的大??;

  • flags:要映射的IO空間的和權(quán)限有關(guān)的標(biāo)志;

下面是我用ioremap函數(shù)寫的第一個(gè)LED 的驅(qū)動(dòng):(硬件是S3C2440的開發(fā)板)

實(shí)驗(yàn)現(xiàn)象

啟動(dòng)開發(fā)板,在命令行模式下將編譯好的ioremap_driver.ko模塊加載到內(nèi)核中

# insmod ioremap_driver.ko

這時(shí),我們可以看到,開發(fā)板上面的LED4個(gè)燈全亮了。

# rmmod ioremap_driver 卸載模塊

這時(shí),我們的LED燈就滅了。


ioremap在linux驅(qū)動(dòng)中應(yīng)用實(shí)例--S3C2440開發(fā)板LED驅(qū)動(dòng)的評論 (共 條)

分享到微博請遵守國家法律
中江县| 肇庆市| 交口县| 南投县| 汤原县| 封开县| 嘉鱼县| 罗城| 喀喇沁旗| 苍山县| 沅陵县| 青田县| 吕梁市| 饶平县| 安多县| 恩平市| 锡林浩特市| 温州市| 高淳县| 澄迈县| 措勤县| 南康市| 宽城| 枣庄市| 子洲县| 利津县| 驻马店市| 海宁市| 阳江市| 栖霞市| 瑞昌市| 绿春县| 伊金霍洛旗| 河间市| 东莞市| 汝州市| 安新县| 霞浦县| 邵阳县| 七台河市| 成武县|