天天看點

物聯網的嵌入式程式設計

物聯網的嵌入式程式設計

嵌入式程式設計在使裝置滿足人們的需求方面具有悠久的曆史。但是,它在很大程度上仍然被應用程式程式設計所掩蓋。當應用程式程式員采用相對進階的面向對象的語言(如C ++或Java)或圖形化應用程式開發環境(如MATLAB)時,嵌入式程式員依然在使用C語言程式設計。它們總是被應用程式程式員所淘汰。如今,即使是業餘愛好者也可以使用簡單的語言來開發應用程式并與世界分享,而嵌入式程式員則需要對硬體和固件有深刻的了解,以及如何編寫可以在資源經常受限的環境中執行的程式。随着物聯網(IoT)的出現,平衡最終可以改變。現在,許多新的恒溫器,烤面包機,手表和燈泡都配備了處理器和連接配接功能,市場需要更多的嵌入式程式員來對這些裝置進行程式設計,并需要更簡單的工具來使這些程式設計器能夠在不陷入低級硬體的情況下編寫代碼。

什麼是嵌入式程式設計?

Techopedia對嵌入式程式設計的定義是“一種特定的程式設計類型,它支援建立面向消費者或面向企業的裝置,這些裝置不象全尺寸筆記本電腦和移動裝置那樣在傳統作業系統上運作。”嵌入式程式設計的理念是驅動當今IT市場中數字家電和裝置發展的一部分。

簡單地說,嵌入式程式設計是為小型計算機設計和編寫程式,這些計算機嵌入傳統PC、筆記本電腦或智能手機以外的裝置中。它使微控制器能夠喚醒以前的啞裝置,如恒溫器、照明系統、停車裝置等。

嵌入式程式設計和物聯網

從工程的角度看,物聯網描述了一個由微處理器控制的嵌入式裝置的網絡,該網絡直接或間接連接配接到Web。是以,物聯網的三個支柱是:

  • 嵌入式程式設計
  • 網絡技術
  • 資訊技術

物聯網很快将無處不在。是以,嵌入式裝置很快也将無處不在。

簡要介紹一下物聯網改變行業的一些方式:

1)工業:工業機械和控制,溫度監測和異常檢測。

2)醫療保健:血壓監測器,心跳監測器,健身追蹤器,嵌入式藥物輸送。

3)航空航天和國防:飛行控制系統,驅動,空氣和熱管理,發動機功率監測和控制。

4)智能家居:家庭安全系統,攝像頭,電視和廚房電器。

深入嵌入式系統

有人說,世界上每一個複雜的系統都可以簡化為兩個概念領域:軟體和硬體。嵌入式系統或多或少地代表了這些領域的交叉點:硬體和軟體。

探索嵌入式硬體

典型的嵌入式開發闆分為五個子產品:處理器,記憶體,輸入裝置,輸出裝置和總線控制器。

嵌入式系統的硬體元件

1)處理器

嵌入式處理器可以分為兩類:普通微處理器使用單獨的內建電路作為存儲器和外設;微控制器使用片上外設,降低了功耗、體積和成本。其中一些例子包括:

  • 微控制器(CPU):一種智能裝置,用于計算使用者配置設定的任務,并通過精确計算建構小型應用程式。
  • 片上系統(SoC):在單個內建電路上包括CPU,外圍裝置(計時器,計數器等),通信接口(I²C,SPI,UART)和電源管理電路。
  • ASIC處理器(專用內建電路):由公司或制造商設計用于特定應用。
  • DSP處理器:消除噪聲并提高音頻和視訊應用程式的信号品質。

2)記憶體

記憶體用于儲存設備上正在使用的資料。嵌入式系統中使用的存儲器類型的一些示例包括非易失性RAM(随機存取存儲器),易失性RAM,DRAM(動态随機存取存儲器)等。

3)輸入裝置

輸入裝置(例如傳感器,開關,光電二極管,光耦合器等)從外界捕獲資料,以進行處理或從裝置中導出。

4)輸出裝置

輸出裝置,包括LCD(液晶顯示器)或LED(發光二極管)顯示器、七段式顯示器、蜂鳴器和繼電器,響應來自微控制器外部的輸入事件。

5)總線控制器

總線控制器是一種通信裝置,可在嵌入式系統内部的元件之間傳輸資料。使用最廣泛的總線控制器是串行總線(I2C,SPI,SMBus等),RS232,RS485和通用串行總線(USB)。

探索嵌入式軟體

嵌入式軟體(有時稱為固件)是為裝置驅動程式、作業系統和應用程式以及錯誤處理和調試編寫的。

嵌入式系統的軟體元件

1)裝置驅動

裝置驅動程式是為特定硬體編寫的一段嵌入式代碼。

2)作業系統(OS)或MicroOS

嵌入式系統有一系列的作業系統,包括實時作業系統(RTOS)、移動嵌入式、單機和網絡嵌入式系統。

現在,大多數嵌入式軟體都是用兩種語言編寫的:C和C++。就文法而言,C和C++之間沒有太大差別。但是,C++具有一些附加功能,例如增強的安全性和與實際應用程式的緊密性,而C被認為更可靠,并且通過與硬體直接互動具有更好的性能。

建立嵌入式産品時的主要注意事項

開始編寫直接影響實體對象的軟體的最佳方法是探索嵌入式平台,例如Arduino,Raspberry Pi或Particle。

要開發可行的産品,您應該采取以下步驟:

步驟1. 學習C或C++

這是許多人停止學習的地方,因為這些語言可能很難學習。但是,如果要編寫嵌入式軟體,則必須學習C/C++(可能最終是Rust)。

步驟2. 學習一些基本的電子産品

至少要了解電壓,電流,功率,電阻和歐姆定律。

步驟3. 擷取基本裝置

嵌入式程式員與實體世界進行互動,是以,諸如烙鐵,數字萬用表(DMM)和硬體調試器/ JTAG擴充卡(例如ST-Link或OLMEX擴充卡)或邏輯分析儀之類的工具将有所幫助。

步驟4. 選擇一個微控制器和工具鍊

要使程式運作,您需要一個微控制器才能真正運作它,一個編譯器會編譯該微控制器的代碼,并使用其他工具将程式加載到您的硬體上。微控制器與工具鍊結合的一個例子是arm-gcc和openOCD工具鍊支援的STM32微控制器。

步驟5. 了解資料表(Datasheets)

在實際坐下來編寫代碼的第一行之前,您需要了解(最終使用者)規範。

步驟6. 檢查元件

分析并挑選制造産品所需的元件(軟體和硬體)。

步驟7. 設計産品

設計始終是任何開發周期中最關鍵的階段。嵌入式程式設計的特殊性是您必須分别開發硬體和軟體部分,然後再将它們內建。

步驟8. 開發原型

原型是一個示例版本,旨在測試使用標明的硬體和軟體工具根據規範開發的概念。

步驟9:測試應用程式

有了原型後,就可以運作測試用例來挖掘應用程式的潛力。

步驟10:部署應用程式

測試完應用程式之後,将在真實環境中檢查結果,以實作概念驗證(一種用于驗證想法的技術)。

步驟11:支援和更新

如果需要,您應該準備提供支援并使用新功能更新應用程式。

現在您已準備好開始改變世界!

原文連結