1. gzyueqian
      13352868059

      嵌入式開發(fā):編寫外部設(shè)備驅(qū)動(dòng)程序的 3 個(gè)技巧

      更新時(shí)間: 2022-02-13 07:00:00來源: 粵嵌教育瀏覽量:11347

        今天使用微控制器的一個(gè)主要優(yōu)勢是嵌入式軟件開發(fā)人員通常不必再編寫自己的驅(qū)動(dòng)程序。微控制器供應(yīng)商提供軟件框架來抽象硬件并允許開發(fā)人員進(jìn)行簡單的函數(shù)調(diào)用來初始化、讀取和寫入外圍設(shè)備(如 SPI、UART、模數(shù)轉(zhuǎn)換器等)是很常見的。然而,嵌入式開發(fā)人員仍然經(jīng)常需要編寫驅(qū)動(dòng)程序來與外部集成電路進(jìn)行交互,這些集成電路可能是傳感器、執(zhí)行器、電機(jī)控制器等。在今天的文章中,我們將探討幾個(gè)編寫自己的外部設(shè)備驅(qū)動(dòng)程序的最佳實(shí)踐。


        最佳實(shí)踐 #1——將實(shí)現(xiàn)與配置分開


        編寫任何驅(qū)動(dòng)程序的一個(gè)關(guān)鍵方面是將實(shí)現(xiàn)與配置分開。這種分離有助于確保驅(qū)動(dòng)程序可重用和靈活。例如,驅(qū)動(dòng)程序可以很容易地編譯成一個(gè)目標(biāo)文件,這樣開發(fā)人員就看不到內(nèi)部,因此它可以用于多個(gè)項(xiàng)目。開發(fā)人員仍然可以訪問配置模塊,他們可以使用該模塊來配置驅(qū)動(dòng)程序以滿足其特定的應(yīng)用程序需求。如果配置需要機(jī)會,它不會影響驅(qū)動(dòng)程序設(shè)計(jì)或強(qiáng)制使用驅(qū)動(dòng)程序的其他項(xiàng)目不同步或被迫接受新更改并經(jīng)歷驗(yàn)證周期。


        將實(shí)現(xiàn)與配置分開還允許抽象外部硬件,以便開發(fā)人員不需要完全了解硬件中發(fā)生的事情,就像在微控制器上一樣。我經(jīng)常希望集成電路供應(yīng)商停止提供配置工具 GUI,而是花精力為他們的設(shè)備編寫可重用和便攜的驅(qū)動(dòng)程序。他們的每個(gè)客戶都很難通過閱讀大約 100 頁的數(shù)據(jù)表來編寫驅(qū)動(dòng)程序并理解他們的模塊。


        最佳實(shí)踐#2——?jiǎng)?chuàng)建一個(gè)簡單的底層接口


        在編寫驅(qū)動(dòng)程序時(shí),嵌入式開發(fā)人員試圖在他們的實(shí)現(xiàn)中做太多事情,驅(qū)動(dòng)程序成為驅(qū)動(dòng)程序和應(yīng)用程序代碼的混合體,驅(qū)動(dòng)程序的接口應(yīng)該包含一個(gè)簡單的接口,其中包括:


        一個(gè)初始化函數(shù)

        寫函數(shù)

        讀取功能


        除此之外的任何東西都真正開始進(jìn)入應(yīng)用程序領(lǐng)域!這背后的邏輯很簡單,驅(qū)動(dòng)程序應(yīng)該簡單地提供與設(shè)備通信并允許讀取和寫入操作的能力,然后,應(yīng)用程序模塊將訪問這些讀取和寫入功能,以構(gòu)建更高級別應(yīng)用程序代碼所需的可重用應(yīng)用程序組件。



        最佳實(shí)踐#3——提供錯(cuò)誤檢測


        不幸的是,許多嵌入式開發(fā)人員編寫的代碼只是假設(shè)一切都會好起來的,在為外部設(shè)備編寫驅(qū)動(dòng)程序時(shí),我們沒有那么奢侈。設(shè)備驅(qū)動(dòng)程序應(yīng)考慮潛在的錯(cuò)誤和故障。例如驅(qū)動(dòng)程序可以超時(shí)并提供錯(cuò)誤嗎?如果執(zhí)行了讀操作,函數(shù)能否返回讀是否成功?如果發(fā)生奇偶校驗(yàn)錯(cuò)誤怎么辦?


        有幾種不同的方法可以在驅(qū)動(dòng)程序中提供錯(cuò)誤和故障檢測。首先,每個(gè)函數(shù)都可能返回錯(cuò)誤代碼。如果操作成功,則此錯(cuò)誤代碼將簡單地為真,如果發(fā)生問題,則此錯(cuò)誤代碼將簡單地為假。其次,如果確實(shí)發(fā)生了問題,那么可以在設(shè)備接口中添加一個(gè)允許檢查錯(cuò)誤的附加功能,會包括以下附加操作:


        返回驅(qū)動(dòng)錯(cuò)誤狀態(tài)

        清除驅(qū)動(dòng)錯(cuò)誤狀態(tài)


        同樣,這為驅(qū)動(dòng)程序提供了靈活性和故障檢測能力,并允許應(yīng)用程序代碼仔細(xì)監(jiān)控驅(qū)動(dòng)程序操作是否成功。


        為微控制器之外的集成電路編寫設(shè)備驅(qū)動(dòng)程序是嵌入式開發(fā)人員的最后一個(gè)前沿領(lǐng)域之一,我們?nèi)匀槐仨毦帉懽约旱尿?qū)動(dòng)程序。在今天的帖子中,我們研究了為外部集成電路編寫驅(qū)動(dòng)程序的幾個(gè)最佳實(shí)踐,這些最佳實(shí)踐將幫助讀者開發(fā)可擴(kuò)展和可重用的驅(qū)動(dòng)程序,這些驅(qū)動(dòng)程序可以檢測故障并允許應(yīng)用程序代碼做出適當(dāng)?shù)捻憫?yīng)。

      免費(fèi)預(yù)約試聽課

      亚洲另类欧美综合久久图片区_亚洲中文字幕日产无码2020_欧美日本一区二区三区桃色视频_亚洲AⅤ天堂一区二区三区

      
      

      1. 日韩国产欧美中文综合 | 中文字幕亚洲乱码精品 | 午夜男女爽爽刺激视频在线观看 | 一本精品99久久精品66 | 性开放网站在线网站在线 | 日本一区二区三区三州在线观看视频 |