freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

第11課字符設(shè)備驅(qū)動(dòng)-資料下載頁(yè)

2024-09-28 16:41本頁(yè)面

【導(dǎo)讀】式Linux最基本、也是最常用的驅(qū)動(dòng)程序。字符設(shè)備在Linux內(nèi)核中使用structcdev結(jié)構(gòu)。設(shè)計(jì)中起著關(guān)鍵的作用。設(shè)備類(lèi)型和設(shè)備號(hào)。對(duì)字符設(shè)備的訪(fǎng)問(wèn)是通過(guò)文件系統(tǒng)內(nèi)的設(shè)。//指向擁有該結(jié)構(gòu)的模塊的指針,一般初始化為T(mén)HIS_MODULE. //用來(lái)改變文件中的當(dāng)前讀/寫(xiě)位置。//用來(lái)讀取目錄,對(duì)于設(shè)備文件,該成員應(yīng)當(dāng)為NULL. //輪詢(xún)函數(shù),查詢(xún)對(duì)一個(gè)或多個(gè)文件描述符的讀或?qū)懯欠駮?huì)阻塞。//在64位系統(tǒng)上,使用32位的ioctl調(diào)用將使用此函數(shù)代替。//用來(lái)將設(shè)備內(nèi)存映射到進(jìn)程的地址空間。//執(zhí)行并等待設(shè)備的任何未完成的操作。//用來(lái)刷新待處理的數(shù)據(jù)。//通知設(shè)備FASYNC標(biāo)志的改變。//用來(lái)實(shí)現(xiàn)文件加鎖,通常設(shè)備文件不需要實(shí)現(xiàn)此函數(shù)。file結(jié)構(gòu)體在<linux/>中定義。調(diào)用open的mod_tmode參數(shù)。Inode是一個(gè)內(nèi)核文件系統(tǒng)索引節(jié)點(diǎn)對(duì)象,表示打開(kāi)文件的結(jié)構(gòu)體。在ARM里,所有I/O都是通用的,稱(chēng)為GPIO. 每個(gè)GPIO端口一般包含8個(gè)引腳,例如PA端口為

  

【正文】 ct i2c_client *, int kind, struct i2c_board_info *)。 /*檢測(cè)函數(shù) */ ? const struct i2c_client_address_data *address_data。 ? struct list_head clients。 /*鏈表頭 */ ? }。 I2C核心 ? 提供了一套接口函數(shù),允許一個(gè) I2C adapter、 I2C driver和 I2C client在初始化時(shí)在 I2C Core中進(jìn)行注冊(cè),以及在退出時(shí)進(jìn)行注銷(xiāo) 。 – int i2c_add_adapter(struct i2c_adapter *adapter)。 – int i2c_del_adapter(struct i2c_adapter *adapter)。 – int i2c_register_driver(struct module *owner, struct i2c_driver *driver)。 – void i2c_del_driver(struct i2c_driver *driver)。 – int i2c_attach_client(struct i2c_client *)。 – int i2c_detach_client(struct i2c_client *)。 – int i2c_transfer(struct i2c_adapter *adap, struct i2c_msg *msgs, int num)。 – int i2c_master_send(struct i2c_client *client, const char *buf, int count)。 – int i2c_master_recv(struct i2c_client *client, char *buf, int count)。 I2C總線(xiàn)驅(qū)動(dòng) ? I2C總線(xiàn)驅(qū)動(dòng)的任務(wù),是為系統(tǒng)中各個(gè) I2C總線(xiàn)增加相應(yīng)的讀寫(xiě)方法 。 ? I2C總線(xiàn)驅(qū)動(dòng)模塊的加載函數(shù)負(fù)責(zé)初始化 I2C適配器所要使用的硬件資源,例如申請(qǐng) I/O地址、中斷號(hào)等,然后通過(guò) i2c_add_adapter() 函數(shù)注冊(cè) i2c_adapter結(jié)構(gòu)體,此結(jié)構(gòu)體的成員函數(shù)指針已經(jīng)被相應(yīng)的具體實(shí)現(xiàn)函數(shù)初始化 。 ? 當(dāng) I2C總線(xiàn)驅(qū)動(dòng)模塊被卸載時(shí),卸載函數(shù)需要釋放 I2C適配器所占用的硬件資源,然后通過(guò) i2c_del_adapter() 函數(shù)注銷(xiāo) i2c_adapter結(jié)構(gòu)體 。 ? 針對(duì)特定的 I2C適配器,還需要實(shí)現(xiàn)適合其硬件特性的通信方法,即實(shí)現(xiàn) i2c_algorithm結(jié)構(gòu)體 。 主要是 實(shí)現(xiàn) 其 中的 master_xfer() 函數(shù)和 functionality() 函數(shù)。 I2C設(shè)備 驅(qū)動(dòng) ( 1) ? 與 I2C總線(xiàn)驅(qū)動(dòng)對(duì)應(yīng)的是 I2C設(shè)備驅(qū)動(dòng), I2C只有總線(xiàn)驅(qū)動(dòng)是不夠的,必須有設(shè)備才能正常 工作 。 ? I2C設(shè)備驅(qū)動(dòng)也分成兩個(gè)模塊,它們分別是 i2c_driver和i2c_client結(jié)構(gòu)體 。 drivers/i2c/chips目錄下已經(jīng)包含了部分設(shè)備的設(shè)備驅(qū)動(dòng)代碼,負(fù)責(zé)相應(yīng)從設(shè)備的注冊(cè) 。 ? I2C設(shè)備驅(qū)動(dòng)程序,實(shí)現(xiàn)了字符設(shè)備的文件操作接口,對(duì)設(shè)備的具體訪(fǎng)問(wèn)是通過(guò) I2C適配器來(lái)實(shí)現(xiàn)的。構(gòu)造一個(gè)針對(duì) I2C核心層接口的數(shù)據(jù)結(jié)構(gòu),即 i2c_driver結(jié)構(gòu)體,通過(guò)接口函數(shù)向 I2C核心注冊(cè)一個(gè) I2C設(shè)備驅(qū)動(dòng)。同時(shí)構(gòu)造一個(gè)對(duì)用戶(hù)層接口的數(shù)據(jù)結(jié)構(gòu),并通過(guò)接口函數(shù)向內(nèi)核注冊(cè)一個(gè)主設(shè)備號(hào)為 89的字符 設(shè)備。 I2C設(shè)備驅(qū)動(dòng) ( 2) ? 該文件提供了用戶(hù)層對(duì) I2C設(shè)備的訪(fǎng)問(wèn),包括 open、release、 read、 write、 ioctl等常規(guī)文件操作,應(yīng)用程序可以通過(guò) open函數(shù)打開(kāi) I2C的設(shè)備文件,通過(guò)ioctl函數(shù)設(shè)定要訪(fǎng)問(wèn)從設(shè)備的地址,然后就可以通過(guò) read和 write函數(shù)完成對(duì) I2C設(shè)備的讀寫(xiě)操作 。 ? i2cdev_read() 和 i2cdev_write() 函數(shù)分別實(shí)現(xiàn)了用戶(hù)空間的 read和 write操作,這兩個(gè)函數(shù)又分別會(huì)調(diào)用 I2C核心的 i2c_master_recv() 和 i2c_master_send() 函數(shù)來(lái)構(gòu)造一條 I2C消息,并且最終調(diào)用 i2c_algorithm提供的函數(shù)接口來(lái)完成消息的傳輸。 Thanks
點(diǎn)擊復(fù)制文檔內(nèi)容
教學(xué)課件相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1