[發(fā)明專利]一種I2C控制器驅(qū)動(dòng)方法及系統(tǒng)有效
| 申請(qǐng)?zhí)枺?/td> | 201810073571.6 | 申請(qǐng)日: | 2018-01-25 |
| 公開(公告)號(hào): | CN108287804B | 公開(公告)日: | 2021-12-28 |
| 發(fā)明(設(shè)計(jì))人: | 王鵬 | 申請(qǐng)(專利權(quán))人: | 鄭州云海信息技術(shù)有限公司 |
| 主分類號(hào): | G06F13/40 | 分類號(hào): | G06F13/40;G06F13/42 |
| 代理公司: | 濟(jì)南誠(chéng)智商標(biāo)專利事務(wù)所有限公司 37105 | 代理人: | 李修杰 |
| 地址: | 450018 河南省鄭州市*** | 國(guó)省代碼: | 河南;41 |
| 權(quán)利要求書: | 查看更多 | 說(shuō)明書: | 查看更多 |
| 摘要: | |||
| 搜索關(guān)鍵詞: | 一種 i2c 控制器 驅(qū)動(dòng) 方法 系統(tǒng) | ||
本發(fā)明提供一種I2C控制器驅(qū)動(dòng)方法及系統(tǒng),所述方法包括:I2C控制器結(jié)構(gòu)體的實(shí)例化;I2C總線發(fā)送和接收數(shù)據(jù)方法的實(shí)現(xiàn);設(shè)備樹的描述。通過對(duì)i2c_adapter的實(shí)例化、i2c_algorithm方法的實(shí)現(xiàn)以及對(duì)設(shè)備樹的描述,實(shí)現(xiàn)了符合最新Linux內(nèi)核編寫要求的I2C控制器驅(qū)動(dòng),通過采用設(shè)備樹技術(shù)替換老內(nèi)核使用板級(jí)文件的形式來(lái)描述硬件資源,將硬件信息從硬編碼中剔除,減少了無(wú)用代碼的存在,利于驅(qū)動(dòng)的長(zhǎng)期維護(hù)和二次開發(fā);由于本驅(qū)動(dòng)兼容了A3x不同平臺(tái)I2C控制器的硬件特性,實(shí)現(xiàn)了單個(gè)驅(qū)動(dòng)文件支持多個(gè)I2C控制器的功能;本驅(qū)動(dòng)由于嚴(yán)格遵守設(shè)備模型,提供了sys、proc接口,為上層軟件提供了足夠的底層硬件信息,利于上層軟件的編寫調(diào)試。
技術(shù)領(lǐng)域
本發(fā)明涉及服務(wù)器驅(qū)動(dòng)技術(shù)領(lǐng)域,特別是一種I2C控制器驅(qū)動(dòng)方法及系統(tǒng)。
背景技術(shù)
I2C總線是由Philips公司開發(fā)的一種簡(jiǎn)單、雙向二線制同步串行總線。它只需要兩根線即可在連接于總線上的器件之間傳送信息。主器件用于啟動(dòng)總線傳送數(shù)據(jù),并產(chǎn)生時(shí)鐘以開放傳送的器件,此時(shí)任何被尋址的器件均被認(rèn)為是從器件。在總線上主和從、發(fā)和收的關(guān)系不是恒定的,而取決于此時(shí)數(shù)據(jù)傳送方向。如果主機(jī)要發(fā)送數(shù)據(jù)給從器件,則主機(jī)首先尋址從器件,然后主動(dòng)發(fā)送數(shù)據(jù)至從器件,最后由主機(jī)終止數(shù)據(jù)傳送;如果主機(jī)要接收從器件的數(shù)據(jù),首先由主器件尋址從器件,然后主機(jī)接收從器件發(fā)送的數(shù)據(jù),最后由主機(jī)終止接收過程。在這種情況下,主機(jī)負(fù)責(zé)產(chǎn)生定時(shí)時(shí)鐘和終止數(shù)據(jù)傳送。
傳統(tǒng)ARM Linux中,外設(shè)的硬件描述體現(xiàn)在板級(jí)文件中,arch/arm/plat-xxx和arch/arm/mach-xxx中充斥著大量的無(wú)用代碼,很多代碼只是在描述板級(jí)細(xì)節(jié),而這些板級(jí)細(xì)節(jié)對(duì)于內(nèi)核來(lái)講毫無(wú)用處,如板上的platform設(shè)備、resource、i2c_board_info、spi_board_info以及各種硬件的platform_data,且這些無(wú)用代碼給后期維護(hù)帶來(lái)了不便。
發(fā)明內(nèi)容
本發(fā)明的目的是提供一種I2C控制器驅(qū)動(dòng)方法及系統(tǒng),旨在解決當(dāng)前I2C控制器驅(qū)動(dòng)對(duì)于外設(shè)的硬件描述設(shè)置在板級(jí)文件中,無(wú)用代碼過多不方便維護(hù)的問題,實(shí)現(xiàn)剔除無(wú)用的冗余編碼,利于驅(qū)動(dòng)長(zhǎng)期維護(hù)和二次開發(fā)。
為達(dá)到上述技術(shù)目的,本發(fā)明提供了一種I2C控制器驅(qū)動(dòng)方法,包括以下步驟:
S101、I2C控制器結(jié)構(gòu)體的實(shí)例化;
S102、I2C總線發(fā)送和接收數(shù)據(jù)方法的實(shí)現(xiàn);
S103、設(shè)備樹的描述。
優(yōu)選地,所述I2C控制器結(jié)構(gòu)體的實(shí)例化包括:
解析設(shè)備樹,獲取硬件屬性信息;
申請(qǐng)緩沖區(qū),初始化完成量;
獲取I/O內(nèi)存并映射到內(nèi)核空間;
從平臺(tái)獲取中斷信號(hào)、注冊(cè)中斷處理函數(shù);
從平臺(tái)獲取使能時(shí)鐘,設(shè)置分頻系數(shù)并寫入硬件寄存器;
軟件復(fù)位;
實(shí)例化i2c_adapter并調(diào)用i2c_add_adapter注冊(cè)到I2C總線。
優(yōu)選地,所述I2C總線發(fā)送和接收數(shù)據(jù)方法的實(shí)現(xiàn)具體為:
對(duì)于數(shù)組中的每個(gè)消息,先判斷其消息類型,若為讀消息,則賦予從設(shè)備地址為:(msg-addr1)|1,否則為:msg-addr1,對(duì)每個(gè)消息產(chǎn)生一個(gè)開始位,并傳送從設(shè)備地址,然后開始數(shù)據(jù)的發(fā)送或接收,對(duì)最后的消息還需產(chǎn)生一個(gè)停止位。
優(yōu)選地,所述數(shù)據(jù)的發(fā)送或接收,均涉及I2C總線協(xié)議的ack應(yīng)答。
優(yōu)選地,所述設(shè)備樹的描述包括:
I2C控制器的初始化;
該專利技術(shù)資料僅供研究查看技術(shù)是否侵權(quán)等信息,商用須獲得專利權(quán)人授權(quán)。該專利全部權(quán)利屬于鄭州云海信息技術(shù)有限公司,未經(jīng)鄭州云海信息技術(shù)有限公司許可,擅自商用是侵權(quán)行為。如果您想購(gòu)買此專利、獲得商業(yè)授權(quán)和技術(shù)合作,請(qǐng)聯(lián)系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/201810073571.6/2.html,轉(zhuǎn)載請(qǐng)聲明來(lái)源鉆瓜專利網(wǎng)。
- 電流驅(qū)動(dòng)裝置的驅(qū)動(dòng)電路,電流驅(qū)動(dòng)設(shè)備及其驅(qū)動(dòng)方法
- 驅(qū)動(dòng)電路、驅(qū)動(dòng)模塊以及電機(jī)驅(qū)動(dòng)裝置
- 驅(qū)動(dòng)電路、驅(qū)動(dòng)模塊和電機(jī)驅(qū)動(dòng)設(shè)備
- 驅(qū)動(dòng)單元、驅(qū)動(dòng)方法、驅(qū)動(dòng)電路及顯示面板
- 驅(qū)動(dòng)電路、驅(qū)動(dòng)芯片及其驅(qū)動(dòng)方法
- 驅(qū)動(dòng)電機(jī)(電驅(qū)動(dòng))
- 驅(qū)動(dòng)電機(jī)(節(jié)能驅(qū)動(dòng))
- 驅(qū)動(dòng)電機(jī)(設(shè)備驅(qū)動(dòng))
- 驅(qū)動(dòng)機(jī)(驅(qū)動(dòng)軸)
- 驅(qū)動(dòng)機(jī)(電驅(qū)動(dòng))
- 一種數(shù)據(jù)庫(kù)讀寫分離的方法和裝置
- 一種手機(jī)動(dòng)漫人物及背景創(chuàng)作方法
- 一種通訊綜合測(cè)試終端的測(cè)試方法
- 一種服裝用人體測(cè)量基準(zhǔn)點(diǎn)的獲取方法
- 系統(tǒng)升級(jí)方法及裝置
- 用于虛擬和接口方法調(diào)用的裝置和方法
- 線程狀態(tài)監(jiān)控方法、裝置、計(jì)算機(jī)設(shè)備和存儲(chǔ)介質(zhì)
- 一種JAVA智能卡及其虛擬機(jī)組件優(yōu)化方法
- 檢測(cè)程序中方法耗時(shí)的方法、裝置及存儲(chǔ)介質(zhì)
- 函數(shù)的執(zhí)行方法、裝置、設(shè)備及存儲(chǔ)介質(zhì)





