嵌入式開發比單片機開發難?

2022-06-01     大方老師單片機

原標題:嵌入式開發比單片機開發難?

嵌入式開發比單片機開發難?

\\\插播一條:文章末尾有驚喜~///

機和嵌入式,其實沒有什麼規範的定義來區分他們,對於進行過單片機和嵌入式開發的開發者來說,都有他們自己的定義,接下來,就談談本人對這兩個概念的了解和感悟。

首先明確概念,什麼是單片機,單片機是一種集成電路晶片,是採用超大規模集成電路技術把具有數據處理才能的中央處理CPU、隨機存儲RAM、只讀存儲ROM、多I/O口和中斷系統、定時/計數器等功(可能還包括顯示驅動電路、脈寬調製電路、模擬多路轉換器A/D轉換器等電)集成到一塊矽片上構成的一個小而完善的微型計算機系統,在工業控制領域廣泛應用。從上世80年代,由當時48位單片機,開展到此時300M的高速單片機。

假如最典型51系列單片機,如下圖所示,外觀只是一塊一個拇指大小的長方體晶片,40個引腳,裡面包含了邏輯運算單元。實際上也就是一cpu

在最初始接觸單片機的時候,還曾經有過一個疑問,為什麼單片機是黑色的而不能夠是別的顏色,後來才知道是單片機素材的限制。

對單片機而言,其實一個晶片就是全部,其他的假如單片機最小系統都是為了單片機的正常運作而加入其他元件,假如晶振5v電源,電感電阻等。當然最小系統只能保證單片機正常運行,簡直實現不了基於單片機的任何應用。

為了使單片機實現應用,必需要加入其他外設。假如按鍵ledled屏,蜂鳴器,各sensor。這也就是市面上很多公司都在做的單片機開發板。

總結,單片機就是完成運算、邏輯控制、通信等功能的單一模塊。也就是單片機真的姓DSP晶片也能夠認為是一個單片機。當然它們性能很強大,但是功能依然很單一,總之就是處理數據、邏輯。

那麼什麼是嵌入式呢,一般說嵌入式都是指嵌入式系統,嵌入式系統是將應用程式、作業系統、和計算機硬體在一起的系統,是指以應用為中心,以計算機技術為根底,軟硬體可裁剪,其針對的用戶應用對功能、可靠性、老本、體積、功耗和使用環境有特殊要求的專用計算機系統IEEE(Instituteof Electrical and ElectronicsEngineers,美國電氣和電子工程師協)對嵌入式系統的定義:用於控制、監督或者輔助操作機器和設備的裝置

嵌入式系統是一種專用的計算機系統,作為裝置或設備的一局部。通常,嵌入式系統是一個控制程序存儲ROM中的嵌入式處理器控制板。事實上,所有帶有數字接口的設備,如手錶、微波爐、錄像機、汽車等,都使用嵌入式系統,有些嵌入式系統還包含作業系統,但大多數嵌入式系統都是由單個程序實現整個控制邏輯。這是由於嵌入式系統一般用於工業控制,也就是說對外設的控制都是寫死的,並不須要人工干預,同時也為了保證系統的穩定和可靠。

我們經常能夠聽到公司招聘的要求是嵌入式軟體工程師或者嵌入式硬體工程師,也就是說嵌入式系統包括軟體和硬體,其實仔細想想也能明白,都已經跑系統了,當然有軟體也bsp硬體啦。也就是說嵌入式系統是軟硬體聯合體,國內普遍認同的嵌入式系統定義為:以應用為中心,以計算機技術為根底,軟硬體可裁剪,適應應用系統對功能、可靠性、老本、體積、功耗等嚴格要求的專用計算機系統。

接下來將嵌入式分成硬體和軟體詳細說明。

硬體層:

硬體層中包含嵌入式微處理器、存儲(SDRAMROMFlash)、通用設備接口I/O(A/DD/AI/O)。在一片嵌入式處理器根底上添加電源電路、時鐘電路和存儲器電路,就構成了一個嵌入式核心控制模塊。其中作業系統和應用程式都能夠固化ROM中。

其中核心就是微處理器,嵌入式處理器和一般的電cpu還有區別,嵌入式微處理器大多工作在特定設計的系統中,假TIAtmel公司都有很多定位不同的處理器AtmelSAM系列是專門為物聯網設計的AVR則由於性能十分突出,廣泛應用於工業領域。

嵌入式微處理器有各種不同的體系,即便在同一體系中也可能具有不同的時鐘頻次和數據總線寬度,或集成了不同的外設和接口。據不完全統計,全世界嵌入式微處理器已經超1000多種,體系構造30多個系列,其中主流的體系ARMMIPSPowerPCX86SH等。但與全PC市場不同的是,沒有一種嵌入式微處理器能夠主導市場,僅32位的產品而言,就100種以上的嵌入式微處理器。嵌入式微處理器的選擇是依據詳細的應用而決定的。

arm公司有各種各樣的處理器架構,最典型cortex系列,它屬ARMv7架構,這是2010年為ARM公司最新的指令集架構ARMv7架構定義了三大分工明確的系列:A系列面向尖端的基於虛擬內存的作業系統和用戶應;R系列針對實時系;M系列對微控制器。下圖就cortex系列的不同定位。

在嵌入式領域,能夠arm架構的處理器占據了半壁江山,arm公司也成為著名的科技公司,而它卻沒有出產任何處理器,而只是提供IP,能夠看出最好公司做規範。而其他用的比較多的架構就sparcpowerpc等。

嵌入式系統和外界交互須要一定形式的通用設備接口,A/DD/AI/O等,外設通過和片外其他設備的或傳感器的連接來實現微處理器的輸/輸出功能。每個外設通常都獨有單一的功能,它能夠在晶片外也能夠內置晶片中。外設的品種很多,可從一個簡略的串行通信設備到非常複雜802.11沒線設備。

嵌入式系統中常用的通用設備接口A/D(/數轉換接)D/A(/模轉換接)I/O接口RS-232(串行通信接)Ethernet(乙太網接)USB(通用串行總線接)、音頻接口VGA視頻輸出接口I2C(現場總)SPI(串行外圍設備接)IrDA(紅外線接)等。這一點其實和單片機類似。

軟體層:

也就是作業系統了,包括內核和文件系統,還有就是更為頂層的應用程式,嵌入式作業系統一般都Linux或者其他Unix,還有一些實時操作系(RTOS)VxWorksRTEMSucOS等。

Linux還包括不同distribution,假UbuntuRedhatDebiancentos等,他們都是采Linux的內核,不同的是上面softwaretools,當然不用太過於擔憂規範問題,這Linux發行版選擇的軟體簡直都是比較通用的,假如網頁效勞器Apache、電子郵件效勞器postfixsendmail、文件效勞器Samba等。此外還Linuxstandard base等鄙訇准來規範開發者。

Unix主要FreeBSDSolaris等。

嵌入式領域最常用的還是一些實時作業系統,實時作業系統的核心就是實時性,本質就是任務處理所華為時長的可預測性,即任務須要在規定內時限內完成IEEE對實時系統的定義是那些正確性不僅取決於計算的邏輯結果也取決於產生結果所花費時長的系統。實時作業系統有硬實時和軟實時之分,硬實時要求在規定的時長內必需完成操作,這是在作業系統設計時保證;軟實時則只有依照任務的優先級,儘可能快地完成操作即可。我們通常使用的作業系統在經過一定變更之後就能夠變成實時作業系統。

那麼實時作業系統Linux這種分時作業系統的區別列舉如下:

(1)多路性。實時信息處理系統與分時系統一樣具有多路性。系統按分時原則為多個終端用戶效;而對實時控制系統,其多路性則主要表此時經常對多路的現場信息進行採集以及對多個對象或多個執行機構進行控制。

(2)獨立性。實時信息處理系統與分時系統一樣具有獨立性。每個終端用戶在向分時系統提出效勞請求時,是彼此獨立的操作,互不幹;而在實時控制系統中信息的採集和對對象的控制,也彼此互不干擾。

(3)及時性。實時信息系統對實時性的要求與分時系統類似,都是以人所能承受的等待時長來確;而實時控制系統的及時性,則是以控制對象所要求的初始截止時長或完成截止時長來確定的,一般為秒級、百毫秒級直至毫秒級,甚至有的要低100微秒。

(4)交互性。實時信息處理系統具有交互性,但這裡人與系統的交互,僅限於訪問系統中某些特定的專用效勞程序。它不像分時系統那樣能向終端用戶提供數據處理效勞、資源共享等效勞。

(5)可靠性。分時系統要求系統可靠,相比之下,實時系統則要求系統高度可靠。由於任何差錯都可能帶來宏大的經濟損失甚至沒法預料的災難性後果。因此,在實時系統中,採取了多級容錯措施來保證系統的安全及數據的安全。

由於愈加可靠和及時。嵌入式實時作業系統愈加廣泛應用於工業控制、航空航天、軍工等領域,假如美國航天NASA近幾年發射的火星探測器等都是採用RTEMS實時作業系統。

中間層:

所謂的中間層就是軟體層和硬體層之間的接口層,其實嚴格而言也屬於軟體層。一般開發者稱之BSP,這一層主要負責的是向下提供硬體的驅動,硬體的配置等操作,向上則向軟體開發者提供規API,進行中間層開發的開發者通常稱為嵌入式驅動工程師。

從這裡也能夠看出來,嵌入式設計和軟硬都分不開,既要掌握底層硬體的特性以及如何驅動其工作,也要了解作業系統的相關知識,才能夠編寫相應功能的應用。

因此看一個作業系統是否支持某個晶片或者某個開發板,只有看其源碼中是否包含相應晶片或開發板的板級支持包。

以上就是本人對嵌入式系統系統的了解,接下來再來談談嵌入式系統應該跑在什麼樣的硬體上。

談起嵌入式硬體或者開發板,我想很多人第一印象就RaspberryPi,是一塊獨有信譽卡大小的微型電腦,別看其外表嬌小,內卻很強大,視頻、音頻等功能通通皆有,可謂是麻雀雖小,五臟俱全。樹莓派推出後,很多廠商爭相推出類似產品,假如香蕉派之類的。在這裡TIBeagleboneblack板子進行說明Beagleboneblack板如下圖所示:

能夠看出體積大小和樹莓派類似,外設包括USBhostUSBmini以及網卡接口,,背面還有一sd卡槽HDMI接口。接下來看看它的性能參數:

下表BBB板和樹莓派的性能參數比較:

Beagleboneblack的處理器是一塊主頻到1GHZTi處理器,基armcortexa8架構RAM512MDDR3,存儲器大小2GB,支持的作業系統包UbuntuarchLinuxAndroid等。外設USBhost和一塊百兆網卡。

BBB的處理器採用的是當前嵌入式系統中最時興ARMv7指令集。採用當今廣泛使用的指令集的處理器能夠被更多的軟體支持。例如,一些作業系統已經不支持ARMv6指令集上運行,例如Ubuntu20124月放棄了ARMv6指令集的支持。

ARMv7相對ARMv6指令集的另一個優勢在於,使ARMv7的處理器的實際性能愈增強勁ARMv7相對ARMv6的優勢還有很多,假如一些顯著的改進:實現了超標量架構、包含SIMD操作指令、改進了分支預測算法從而極大的提高了某些性能。

最後總結:

以上就是一塊根本的嵌入式核心板所具有的性能參數,和上面說到的單片機的性能參數相比較,單片機的處理才能較低,主頻大多在幾M高低,和嵌入式動輒上百上M的處理速度還是相差較多,此外單片機並不具有圖形介面的處理才能,也就GPU的缺少乏導致單片機簡直不可能帶動圖形界;單片機的存儲空間和嵌入式處理器也不是一個等級的,單片機通常片內存儲獨有k大小,而由於外設的限制也不太可能大範圍增加外emmc,而嵌入式處理器通常有幾百兆RAM,如此宏大的差別導致單片機簡直不可能像嵌入式處理器那樣運行作業系統,甚至TCP/IP協議棧USB協議棧都跑不起來,一些高端的單片機假ST公司STM32系列,可能能夠跑一些輕量級的系os和嵌入式網絡協議棧,假IwIP協議棧。嵌入式處理器豐盛強大的性能決定它能完成更多單片機不能完成的應用,假如網絡通信功能,視頻傳輸處理功能等,而當外設存儲增加後,嵌入式處理器能夠輕鬆運行各Linux系統,以及圖GUI介面。

在開發方式上單片機和嵌入式也有較大差別,也就是編譯過程的區別,單片機主要Windows等圖形介面下開發,目前有很多成熟IDE工具假keilIAR、以tiCCS等,這些工具集編譯、彙編、連結、仿真為一體,並且由於Windows下開發,具有友好的用戶介面,開發者只需編c代碼,然後點擊編譯連結按鍵即可,出現錯誤還能debug或者仿真,上手還是非常快的。而嵌入式開發一般是Linux下進行的,要c代碼在自己主機上編譯完成,然後通過系統鏡像或uboot引導將編譯好的文件燒入開發板,由於主機的處理器x86架構,而編寫的代碼是為了運行arm架構sparc架構的處理器上,因此存在一個交叉編譯鏈的安裝,此外Linux下沒Windows那樣IDE,也就是編譯,連結原始碼都須要開發者自己完成,一般都是利GNUmake腳本編Makefileconfigure文件來完成Makefile文件中編寫如何ch文件編譯,也就是編譯規則以及依賴文件是什麼。這些都須要開發者自己完成。並且以上過程都是Linux下的終端也就是命令行中完成,這也給嵌入式開發增加了難度。

51單片機STM32單片機區別在那裡

  大局部朋友可能都知51單片機stm32單片機也知道一般入門會先進51單片機在進stm32單片時機簡略一些,但是對51單片機stm32單片機的詳細區別卻不知道了,有些人覺得沒必要,但是我個人認為獨有在你搞懂了其中的差異之後對於其自身進修是有莫大的益處的。

  下面我們就來進入今天的主題

  單片機簡介

  單片微型計算機簡稱單片機,簡略來說就是CPU(運算、控)RAM(數據存-)ROM(程序存)、輸寫輸出設(串口、並口)和中斷系統處於同一晶片的器件,在我們自己的個人電腦中CPURAMROMI/O這些都是單獨的晶片,然後這些晶片被安裝在一個主板上,這樣就構成了我們PC主板,進而組裝成電腦,而單片機只是將這所有的集中在了一個晶片上罷了。

51單片機STM32單片機

51單片機是對所有兼Intel8031指令系統的單片機的統稱,這一系列的單片機的始祖Intel8031單片機,後來隨flash ROM技術的開展8031單片機取得了長足的進展成為了應用最廣泛8bit單片機之一,他的代表型號就ATMEL公司AT89系列。

STM32單片機則ST(意法半導)公司使arm公司cortex-M為核心出產32bit系列的單片機,他的內部資(寄存器和外設功)8051AVRPIC都要多的多,根本上接近於計算機CPU了,適用於手機、路由器等等。

DSPAVRPIC單片機8051單片機之間區別

AVRPIC都是8051單片機的機構不同8位單片機,由於構造不同,所以他的彙編指令也不同,並且他們都是使用RISC指令集,獨有幾十條指令,大局部的還都是單周期的指令,所以在相同的晶振頻次下,8051速度要快。

DSP其實也是一種特殊的單片機,他8bit32bit的都有,他專門是用來計算數位訊號的,在某些計算公式上,他甚至比此時的家用計算機的最CPU還要快,假如說一32bitDSP能在一個指令周期內完成一32bit數乘32bit數再加上一32bit數的計算。

8051803189C5189S51關係

  我們平常老是8051,又有什8031,此時又89C5189s51它們之間究竟是什麼關?

MCS51是指由美INTEL公司出產的一系列單片機的總稱,這一系列單片機包括了好些品種,803180518751803280528752等,其8051是最早最典型的產品,該系列其它單片機都是8051的根底上進行功能的增、減、變更而來的,所以人們習慣於8051來稱MCS51系列單片機,8031是前些年在我國最時興的單片機,所以很多場合會看8031的名稱。

INTEL公司MCS51的核心技術授()給了很多其它公司,所以有很多公司在做8051為核心的單片機,當然,功能或多或少有些變更,以滿足不同的需求,其89C51就是這幾年在我國非常時興的單片機。至於國內用到的很多AT系列的單片機其實就ATMEL公司8031內核之外添加其他功能出產了系列的單片機。

  這裡要補充說明下,最先出現先的單片機其實Intel公司8031單片機,他是單片機的鼻祖,但是它自身是沒有內部程序存儲器的,之後隨flash ROM技術的開展,出現了能夠存儲程序8051系列單片機

彩蛋:最近有同學跟我要單片機的資料,我特意花幾個月時間,總結了我10年產品研發經驗,資料包幾乎覆蓋C語言、單片機、模電數電、原理圖PCB設計、單片機高級編程等等,非常適合初學者入門和進階。除此以外,再含淚分享我壓箱底22個熱門開源項目,包含源+原理+PCB+說明文檔,不是市面上打包賣的那種課程,我認為教程多未必是好事10年前我自學快,除了自身執行力以外,還有就是教程少。不要害羞做伸手黨,等你一個小紅點。後期我也會組建一些純技術交流的小圈子,讓大家能認識更多的大佬,有個好的圈子,你對行業的認知一定是最前沿的。

文章來源: https://twgreatdaily.com/zh-cn/2eabeaee821a620161b0ce3bff2c35a2.html