色婷婷AⅤ一区二区三区|亚洲精品第一国产综合亚AV|久久精品官方网视频|日本28视频香蕉

          新聞中心

          EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 基于PXA310平臺(tái)的溫濕度傳感器設(shè)計(jì)

          基于PXA310平臺(tái)的溫濕度傳感器設(shè)計(jì)

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

          本文引用地址:http://cafeforensic.com/article/201612/324471.htm

          ▲圖2 驅(qū)動(dòng)程序流程圖


            上述函數(shù)中start_trans; write_byte; read_data; read_byte 分別利用PXA310 引腳模擬時(shí)序完成啟動(dòng)傳輸、寫字節(jié),讀一位數(shù)據(jù)和讀字節(jié)的操作。

            內(nèi)核tasklet_schedule() 調(diào)度執(zhí)行指定的tasklet,在獲得運(yùn)行機(jī)會(huì)之前只會(huì)調(diào)度一次,如果在運(yùn)行時(shí)被調(diào)度, 則完成后會(huì)被再次運(yùn)行。
            wait_for_completion()這個(gè)函數(shù)進(jìn)行一個(gè)不可打斷的等待,如果有代碼調(diào)用它,并且沒(méi)有完成這個(gè)任務(wù),結(jié)果會(huì)是一個(gè)不可殺死的進(jìn)程。copy_to_user()將內(nèi)核空間數(shù)據(jù)傳向上層用戶空間,并讓上層測(cè)試程序做進(jìn)一步處理。
            3.3 Linux 溫濕度傳感器設(shè)備阻塞操作
            由于溫濕度傳感器測(cè)量需要一定時(shí)間,為提高系統(tǒng)運(yùn)行效率和實(shí)時(shí)性,在驅(qū)動(dòng)程序中阻塞線程,交出內(nèi)核控制權(quán),等待操作完成后喚醒線程,提高系統(tǒng)利用率。complete()在函數(shù)中就是喚醒一個(gè)等待的讀取線程。任務(wù)隊(duì)列實(shí)現(xiàn)函數(shù)如下所示。

            Tasklet可以使測(cè)量操作在系統(tǒng)負(fù)荷不重時(shí)被調(diào)用,或是被立即執(zhí)行,但始終不會(huì)晚于下一個(gè)CPU clock.
            Tasklet 始終在中斷期間運(yùn)行,并且在調(diào)度他的同一CPU 上運(yùn)行。對(duì)比單片機(jī)系統(tǒng),在單線程情況下,一般在sht10_read()中調(diào)用2 次measure_ sht10()來(lái)等待測(cè)量完成,測(cè)量效率依賴2 次測(cè)量消耗的時(shí)間;但在Linux 驅(qū)動(dòng)程序中,使用Tasklet 方式操作,2 次測(cè)量過(guò)程不會(huì)對(duì)其他線程產(chǎn)生影響,在有其他實(shí)時(shí)事件需要及時(shí)處理時(shí)(如網(wǎng)絡(luò),視頻),可以更有效提高驅(qū)動(dòng)運(yùn)行效率,降低對(duì)其他實(shí)時(shí)處理產(chǎn)生的影響。
            4 溫濕度傳感器測(cè)試與驗(yàn)證
            驅(qū)動(dòng)程序完成以后,需要相應(yīng)測(cè)試程序驗(yàn)證驅(qū)動(dòng)程序編寫的正確性。由于驅(qū)動(dòng)程序中不能對(duì)數(shù)據(jù)進(jìn)行浮點(diǎn)數(shù)運(yùn)算,所以測(cè)試程序必須將驅(qū)動(dòng)程序傳遞來(lái)的數(shù)據(jù)進(jìn)行浮點(diǎn)數(shù)運(yùn)算才能得到相應(yīng)的溫濕度值。


          評(píng)論


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

          關(guān)閉