新聞中心

EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 基于Linux系統(tǒng)的多種串行總線統(tǒng)一接口的實(shí)現(xiàn)

基于Linux系統(tǒng)的多種串行總線統(tǒng)一接口的實(shí)現(xiàn)

作者: 時(shí)間:2012-08-10 來(lái)源:網(wǎng)絡(luò) 收藏

2.1 注冊(cè)一個(gè)新設(shè)備號(hào)
首先可為定義一個(gè)新的設(shè)備號(hào)240,而且以后注冊(cè)的子設(shè)備都以此為主設(shè)備號(hào)。假如現(xiàn)在注冊(cè)了一個(gè)1-Wire和一個(gè)I2C,那么,它們兩者的主設(shè)備號(hào)都為240,而次設(shè)備號(hào)不同。如果1-Wire的次設(shè)備號(hào)為0,而I2C的次設(shè)備號(hào)為1,那么就可將兩條總線區(qū)分開來(lái)了。此時(shí)的程序如程序片段一所示。
程序片段一:
e.JPG
2.2 設(shè)備
為了的接口,有必要定義一個(gè)的字符設(shè)備接口buses_ops,應(yīng)用程序訪問(wèn)總線都通過(guò)這個(gè)接口,這樣,所討論的統(tǒng)一接口問(wèn)題也就了。該接口的主要函數(shù)成員如程序片段二所示。
程序片段二:
f.JPG
g.JPG
應(yīng)用程序打開設(shè)備的時(shí)候,利用子設(shè)備號(hào)可以找到總線對(duì)應(yīng)的底層適配器,也就是說(shuō),子設(shè)備號(hào)兼具了適配器索引的功能,其具體如程序片段三所示。
程序片段三:
h.JPG
事實(shí)上,buses_dev是設(shè)備層和適配器層的橋梁,在open操作里被賦值給文件指針的私有數(shù)據(jù)域。那么,在讀與寫函數(shù)中,就可以反其道而行,通過(guò)文件指針的私有數(shù)據(jù)域就可獲得buses_dev數(shù)據(jù)結(jié)構(gòu)體。
2.3 適配器接口層
適配器負(fù)責(zé)對(duì)底層數(shù)據(jù)的操作,由于不同的總線之間存在共性,所以,一般來(lái)說(shuō),它們都包含了單字節(jié)讀、單字節(jié)寫、多字節(jié)讀、多字節(jié)寫以及一些特殊控制。綜上所述,該數(shù)據(jù)結(jié)構(gòu)如程序片段四所示。
程序片段四:
i.JPG
linux操作系統(tǒng)文章專題:linux操作系統(tǒng)詳解(linux不再難懂)


評(píng)論


相關(guān)推薦

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

關(guān)閉