亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区

Chinaunix

標(biāo)題: 一個驅(qū)動加載多個相同的硬件設(shè)備 [打印本頁]

作者: qks5201314    時間: 2008-08-22 14:15
標(biāo)題: 一個驅(qū)動加載多個相同的硬件設(shè)備
硬件上使用多個I2C總線擴(kuò)展IO口芯片,要求驅(qū)動可以動態(tài)加載,現(xiàn)在已經(jīng)基本實現(xiàn)了為每個芯片進(jìn)行獨立驅(qū)動加載和控制芯片了,
但是這樣操作很繁瑣,如果以后再多擴(kuò)些此類芯片的話,還得再多加載幾個驅(qū)動;請問是否可以用一個驅(qū)動程序來加載許多了同樣的
設(shè)備,如果可以,應(yīng)該如何編寫這樣的驅(qū)動程序呢?
作者: 藍(lán)豆    時間: 2008-08-22 14:35
lz用多個I/O模擬了多個I2C的接口嗎?
作者: qks5201314    時間: 2008-08-22 14:38
不是的,是用一個I2C總線下掛很多個相同的芯片
作者: jeff1115    時間: 2008-08-22 16:29
標(biāo)題: 回復(fù) #1 qks5201314 的帖子
完全可以
同一個驅(qū)動 不同的具體設(shè)備
相當(dāng)于是主設(shè)備號相同 次設(shè)備號不同撒
作者: dreamice    時間: 2008-08-22 16:40
標(biāo)題: 回復(fù) #4 jeff1115 的帖子
是這樣的。主設(shè)備相同,有很多次設(shè)備。
作者: qks5201314    時間: 2008-08-23 07:49
以上兩位朋友說的主設(shè)備號相同,次設(shè)備號不同如何實現(xiàn)呢,我要求動態(tài)加載我的驅(qū)動,而且我指的多個設(shè)備是相同的設(shè)備;
作者: dreamice    時間: 2008-08-23 08:37
標(biāo)題: 回復(fù) #6 qks5201314 的帖子
我覺得你沒有搞明白主設(shè)備與次設(shè)備之間的關(guān)系哦,你在好好看看書
作者: qks5201314    時間: 2008-08-23 09:53
主設(shè)備好和次設(shè)備號的定義我是知道的,我現(xiàn)在的問題是不知道如何進(jìn)行操作?
作者: dreamice    時間: 2008-08-25 08:53
標(biāo)題: 回復(fù) #8 qks5201314 的帖子
一個主設(shè)備號對應(yīng)一個驅(qū)動程序,所以你得所有設(shè)備可以說對應(yīng)與一個驅(qū)動程序。但是,不同的次設(shè)備肯定存在操作差異,所以這個還得有區(qū)別的實現(xiàn)。你得實現(xiàn)于是可以歸結(jié)為:一個驅(qū)動程序——對應(yīng)一個主設(shè)備,但是有很多次設(shè)備,這些次設(shè)備號標(biāo)識了你不同的接口設(shè)備,于是可以根據(jù)此設(shè)備號來訪問不同的接口設(shè)備,而不至于加載多個相同的驅(qū)動程序,被認(rèn)為有多個主設(shè)備。
作者: qks5201314    時間: 2008-08-25 10:50
恩,那么針對我現(xiàn)在的實際應(yīng)用,一個I2C總線,下面掛了許多個相同的設(shè)備(I2C總線擴(kuò)展IO口芯片),這些芯片地址是不同的,應(yīng)用層要對它們的操作幾乎是一樣的,
在這種情況下我如何實現(xiàn)使用一個驅(qū)動來完成如此多個設(shè)備的加載呢?
作者: dreamice    時間: 2008-08-25 11:10
標(biāo)題: 回復(fù) #10 qks5201314 的帖子
在/dev下面應(yīng)該註冊進(jìn)妳的設(shè)備名稱,這樣提供給用戶操作的描述符。至于底層驅(qū)動實現(xiàn),我覺得在于驅(qū)動的open實現(xiàn)問題。
作者: zyangxue    時間: 2008-08-25 11:55
主設(shè)備號是給人看的,那是設(shè)備編號,而次設(shè)備號是給內(nèi)核看的,那就是對應(yīng)的具體實體了。我想您要做的就是:
1. export一個設(shè)備驅(qū)動引用計數(shù)與主設(shè)備ID,然后在申請主設(shè)備之前,測試一下這個引用計數(shù)與ID,如果沒有,則申請主設(shè)備號
2. 在后續(xù)設(shè)備的加載過程中,只用申請次設(shè)備號,新建設(shè)備文件即可了。

歡迎拍磚
作者: qks5201314    時間: 2008-08-25 23:12
標(biāo)題: 回復(fù) #11 dreamice 的帖子
朋友是否可以提供一個例程看下呢
作者: xpdsq    時間: 2008-08-26 10:22
在WIN下,一個驅(qū)動可以供N個設(shè)備使用
那是因為加載進(jìn)相同的驅(qū)動進(jìn)入不同的設(shè)備棧。
所以,在這里也應(yīng)該是這樣。
作者: jeff1115    時間: 2008-08-26 11:29
標(biāo)題: 回復(fù) #13 qks5201314 的帖子
你可以參考一下LDD3里面的scull例程
里面很詳細(xì) 可以解決你的問題
作者: dreamice    時間: 2008-08-26 12:12
標(biāo)題: 回復(fù) #15 jeff1115 的帖子
建議搞驅(qū)動的都認(rèn)真看看LDD3,有些問題在書上直接可以找到答案,而且講解也比較深刻。
作者: qks5201314    時間: 2008-08-26 13:44
好的,謝謝樓上幾位建議,這就去
作者: qks5201314    時間: 2008-08-29 23:52
標(biāo)題: 回復(fù) #15 jeff1115 的帖子
我看了LDD3里的前面幾章,重點看了第三章,也就是您說的那個關(guān)于scull驅(qū)動介紹的開始章節(jié),但是我看了幾遍后也沒想清楚我的應(yīng)該怎么寫,只發(fā)現(xiàn)里面有個結(jié)構(gòu)體好像比較貼近,但是又覺得有點抽象了,不怎么好理解,覺得無從下手;那個結(jié)構(gòu)體是這樣的:
                  static void scull_setup_cdev(struct scull_dev *dev, int index)
{
int err, devno = MKDEV(scull_major, scull_minor + index);

cdev_init(&dev->cdev, &scull_fops);
dev->cdev.owner = THIS_MODULE;
dev->cdev.ops = &scull_fops;
err = cdev_add (&dev->cdev, devno, 1);
/* Fail gracefully if need be */
if (err)
printk(KERN_NOTICE "Error %d adding scull%d", err, index);
}

我想問下是否有跟我一開始提到的我的實際應(yīng)用相關(guān)的驅(qū)動介紹的,這個感覺有點深奧了,而且好像沒有詳細(xì)的源碼嗎?還是
在后面我還沒看到呢?
作者: jeff1115    時間: 2008-09-01 09:54
標(biāo)題: 回復(fù) #18 qks5201314 的帖子
哦 看來我沒有表達(dá)清楚
你的問題其實歸結(jié)為寫一個驅(qū)動程序 能夠在多個“同樣"的設(shè)備使用
實際上scull就是這么一個例子
他把多個同樣的設(shè)備量子數(shù)組的方式來實現(xiàn)
你可以參考他的實現(xiàn)方式 具體的源代碼 可能還得自己動腦筋
作者: dreamice    時間: 2008-09-01 10:31
原帖由 jeff1115 于 2008-9-1 09:54 發(fā)表
哦 看來我沒有表達(dá)清楚
你的問題其實歸結(jié)為寫一個驅(qū)動程序 能夠在多個“同樣"的設(shè)備使用
實際上scull就是這么一個例子
他把多個同樣的設(shè)備量子數(shù)組的方式來實現(xiàn)
你可以參考他的實現(xiàn)方式 具體的源代碼 可能還 ...


你這個說法不太對。一個驅(qū)動程序?qū)?yīng)于多個設(shè)備,是通過主次設(shè)備號來說明的。主設(shè)備號與驅(qū)動程序?qū)?yīng),主設(shè)備號相同的次設(shè)備號對應(yīng)于同一個驅(qū)動程序的多個設(shè)備。參看一下tty可能會有比較深刻的認(rèn)識。
作者: qks5201314    時間: 2008-09-01 22:37
標(biāo)題: 回復(fù) #20 dreamice 的帖子
好像真的有點類似的,研究下再說吧,3ks
作者: eveson    時間: 2008-09-05 14:44
那么中斷來了,驅(qū)動程序怎么知道是哪個設(shè)備產(chǎn)生的中斷?




歡迎光臨 Chinaunix (http://72891.cn/) Powered by Discuz! X3.2