純軟件轉型嵌入式開發解惑系列(一)嵌入式整體構架及驅動開發流程


   個人是從軟件工程出身,現較成功轉入嵌入式開發行業,在這里說說個人認為純軟件開發轉嵌入式開發的需要知道的一些東西。

   這個系列解答原來沒有做過嵌入式的純軟件人才入門嵌入式可能存在的一些疑問。有些疑問並無關技術,而是知識欠缺一個引子。

   還是以STM32為例。歡迎多多補充,多多提問,知無不言,希望你能找到你想要的答案。

先看一下一個嵌入式系統的整體構架:

 

  Hardware :你能摸得到的東西,包括MCU 和各種外設。

  硬件抽象層(HAL):它是代碼層,將為內核、設備驅動程序和其它執行程序與特定的硬件差別隔離。這個術語多用於windows平台。我更傾向於將他歸納於BSP。

  BSP:(board support package)板級支持包,可以將核心硬件,標准外設,擴展外設的硬件資源分配管理以及相關驅動歸與此類。但是和我們平常所說的BIOS差別是比較大的,具體差異不做分析,讀者自行搜索。

  Application :應用層,這一層對於純軟件開發者來說應該是相當清楚,不多述。


  嵌入式的開發現在基本都是分層開發,和應用系統的構架基本一致。

  用軟件工程中常說的來描述一下嵌入式從驅動至應用的開發:

  大多數編程問題實際上都可以分成兩部分:“需要提供什么功能(硬件功能)”(機制)和“如何使用這些功能”(策略)。如果這兩個問題由程序的不同部分來處理,或者甚至由不同的程序來處理,則這個軟件包更易開發,也更容易根據需要來調整。這些硬件功能需要封裝成一個個的模塊(即驅動程序),這些功能區分的越為細致,上層用戶的策略就能越發靈活。驅動程序應該處理如何使硬件可用的問題,而將怎樣使用硬件的問題留給上層應用。

  一個個驅動就是提供機制,如何使用這些機制去實現最終的功能,可以是直接用這些功能,或者通過操作系統,在機制的基礎上再提供一層更為好用的機制去實現系統功能。這是按照個人策略的選取。

  硬件底層開發,需要基本硬件操作,如果需要高級操作(業務),只需要有序組合這些硬件功能。

  基於系統(如linux,wince等)的驅動開發,需要符合對應系統的驅動規范,其他基本和裸機驅動開發類似。所以裸機是入門的基礎。

   理論說完說驅動開發的實際操作的流程:假設你的硬件開發平台完全正常,驅動開發你只需要做3件事情

  1. 查到相應datasheet,仔細查閱,看懂相關的每一細節,一遍看不懂2遍,10遍100遍,但請記住你一定要把他啃下來。

  2.看官方例程,網上查閱一些例子,知道每一個語句的意思,每行代碼是為了一個什么功能而寫的。

  3.寫自己的驅動程序,能參考的盡量多參考,特別是官方的實例。

 

下一篇:基於IAR系統的啟動流程解析

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM