<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

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

          基于PXA310平臺的溫濕度傳感器設(shè)計

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

          本文引用地址:http://www.ex-cimer.com/article/201612/324471.htm

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


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

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

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


          評論


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

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();