新聞中心

        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ū)分開(kāi)來(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)用程序打開(kāi)設(shè)備的時(shí)候,利用子設(shè)備號(hào)可以找到總線對(duì)應(yīng)的底層適配器,也就是說(shuō),子設(shè)備號(hào)兼具了適配器索引的功能,其具體如程序片段三所示。
        程序片段三:
        h.JPG
        事實(shí)上,buses_dev是設(shè)備層和適配器層的橋梁,在open操作里被賦值給文件指針的私有數(shù)據(jù)域。那么,在讀與寫(xiě)函數(shù)中,就可以反其道而行,通過(guò)文件指針的私有數(shù)據(jù)域就可獲得buses_dev數(shù)據(jù)結(jié)構(gòu)體。
        2.3 適配器接口層
        適配器負(fù)責(zé)對(duì)底層數(shù)據(jù)的操作,由于不同的總線之間存在共性,所以,一般來(lái)說(shuō),它們都包含了單字節(jié)讀、單字節(jié)寫(xiě)、多字節(jié)讀、多字節(jié)寫(xiě)以及一些特殊控制。綜上所述,該數(shù)據(jù)結(jié)構(gòu)如程序片段四所示。
        程序片段四:
        i.JPG
        linux操作系統(tǒng)文章專題:linux操作系統(tǒng)詳解(linux不再難懂)


        評(píng)論


        相關(guān)推薦

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

        關(guān)閉
        主站蜘蛛池模板: 武城县| 靖边县| 丰原市| 正蓝旗| 策勒县| 罗甸县| 南皮县| 东平县| 鹤峰县| 元朗区| 迭部县| 红桥区| 台湾省| 永年县| 永靖县| 渝中区| 双牌县| 荣成市| 静海县| 营山县| 茂名市| 博野县| 龙里县| 永丰县| 清河县| 抚州市| 黔南| 广昌县| 青铜峡市| 泊头市| 偃师市| 普兰县| 邯郸县| 崇义县| 平南县| 嘉禾县| 昆明市| 灌阳县| 株洲市| 罗田县| 东山县|