精品国产人成在线_亚洲高清无码在线观看_国产在线视频国产永久2021_国产AV综合第一页一个的一区免费影院黑人_最近中文字幕MV高清在线视频

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

為什么說嵌入式開發比單片機要難很多?

GReq_mcu168 ? 來源:劉林華 ? 作者:電子發燒友 ? 2018-12-29 17:18 ? 次閱讀

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

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

在最開始接觸單片機的時候,還曾經有過一個疑問,為什么單片機是黑色的而不可以是別的顏色,后來才知道是單片機材料的限制。

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

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

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

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

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

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

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

硬件層:

硬件層中包含嵌入式微處理器、存儲器(SDRAM、ROM、Flash等)、通用設備接口和I/O接口(A/D、D/A、I/O等)。在一片嵌入式處理器基礎上添加電源電路時鐘電路和存儲器電路,就構成了一個嵌入式核心控制模塊。其中操作系統和應用程序都可以固化在ROM中。

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

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

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

在嵌入式領域,可以說arm架構的處理器占據了半壁江山,而arm公司也成為著名的科技公司,而它卻沒有生產任何處理器,而只是提供了IP,可以看出一流公司做標準。而其他用的比較多的架構就是sparc、powerpc等。

嵌入式系統和外界交互需要一定形式的通用設備接口,如A/D、D/A、I/O等,外設通過和片外其他設備的或傳感器的連接來實現微處理器的輸入/輸出功能。每個外設通常都只有單一的功能,它可以在芯片外也可以內置芯片中。外設的種類很多,可從一個簡單的串行通信設備到非常復雜的802.11無線設備。

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

軟件層:

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

其中Linux還包括不同的distribution,比如Ubuntu、Redhat、Debian、centos等,他們都是采用Linux的內核,不同的是上面的software和tools,當然不用太過于擔心標準問題,這些Linux發行版選擇的軟件幾乎都是比較通用的,比如網頁服務器的Apache、電子郵件服務器的postfix、sendmail、文件服務器的Samba等。此外還有Linuxstandard base等標準來規范開發者

類Unix主要是FreeBSD以及Solaris等。

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

那么實時操作系統和Linux這種分時操作系統的區別列舉如下:

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

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

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

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

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

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

中間層:

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

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

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

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

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

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

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

o4YBAFwnPC2AGHjLAACkK5XNAKo074.png

Beagleboneblack的處理器是一塊主頻達到1GHZ的Ti處理器,基于arm的cortexa8架構,RAM是512M的DDR3,存儲器大小為2GB,支持的操作系統包括Ubuntu、archLinux、Android等。外設有USBhost和一塊百兆網卡。

BBB的處理器采用的是當前嵌入式系統中最流行的ARMv7指令集。采用當今廣泛使用的指令集的處理器可以被更多的軟件支持。例如,一些操作系統已經不支持在ARMv6指令集上運行,例如,Ubuntu在2012年4月放棄了對ARMv6指令集的支持。

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

最后總結:

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

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

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 單片機
    +關注

    關注

    6032

    文章

    44514

    瀏覽量

    632956
  • 嵌入式
    +關注

    關注

    5068

    文章

    19014

    瀏覽量

    303232

原文標題:為什么說嵌入式開發比單片機要難很多?一位高手談單片機和嵌入式開發設計經驗

文章出處:【微信號:mcu168,微信公眾號:硬件攻城獅】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    為什么嵌入式開發單片機要很多

    單片機嵌入式,其實沒有什么標準的定義來區分他們,對于進行過單片機嵌入式開發開發者來說,都有他們自己的定義,接下來,就談談本人對這兩個概
    發表于 07-13 06:09

    為什么嵌入式開發單片機要很多

    為什么嵌入式開發單片機要很多?實時操作系統和Linux操作系統的區別是什么?
    發表于 09-23 06:46

    請問為什么嵌入式開發單片機要很多

    請問為什么嵌入式開發單片機要很多
    發表于 12-23 08:04

    什么是嵌入式單片機開發嵌入式開發的區別在哪

    一、初識嵌入式1.1 什么是嵌入式?1.1.1單片機開發:1.1.2嵌入式開發:1.2 單片機
    發表于 02-24 06:29

    嵌入式開發單片機開發有什么區別和聯系

    什么是嵌入式?什么是單片機嵌入式單片機有什么區別和聯系呢?本文首先介紹了嵌入式開發單片機
    的頭像 發表于 05-18 10:40 ?3.6w次閱讀

    嵌入式開發單片機開發有什么區別

    1嵌入式開發就是設計特定功能的計算機系統,手機,mp3、mp4.mp5自動供水系統,洗衣機,油井監控系統等等都是嵌入式系統,形象的就是開發一種嵌入
    發表于 07-09 12:00 ?387次閱讀

    嵌入式開發單片機開發有什么區別

    ?1嵌入式開發就是設計特定功能的計算機系統,手機,mp3、mp4.mp5自動供水系統,洗衣機,油井監控系統等等都是嵌入式系統,形象的就是開發一種
    發表于 07-17 11:33 ?1231次閱讀

    嵌入式開發單片機開發有什么區別

    ????1嵌入式開發就是設計特定功能的計算機系統,手機,mp3、mp4.mp5自動供水系統,洗衣機,油井監控系統等等都是嵌入式系統,形象的就是開發一種
    發表于 07-19 11:35 ?323次閱讀

    嵌入式開發單片機之間是什么關系

    1嵌入式開發就是設計特定功能的計算機系統,手機,mp3、mp4,mp5,自動供水系統,洗衣機,油井監控系統,等等都是嵌入式系統,形象的就是開發一種
    發表于 07-25 09:32 ?466次閱讀

    為什么嵌入式開發單片機要很多?談談單片機嵌入式的經驗

    單片機嵌入式,其實沒有什么標準的定義來區分他們,對于進行過單片機嵌入式開發開發者來說,都有他們自己的定義,接下來,就談談本人對這兩個概
    發表于 11-03 11:36 ?10次下載
    為什么<b class='flag-5'>說</b><b class='flag-5'>嵌入式開發</b><b class='flag-5'>比</b><b class='flag-5'>單片機要</b><b class='flag-5'>難</b><b class='flag-5'>很多</b>?談談<b class='flag-5'>單片機</b>和<b class='flag-5'>嵌入式</b>的經驗

    為什么嵌入式開發單片機要很多

    單片機嵌入式,其實沒有什么標準的定義來區分他們,對于進行過單片機嵌入式開發開發者來說,都有他們自己的定義,接下來,就談談本人對這兩個概
    發表于 11-03 14:06 ?7次下載
    為什么<b class='flag-5'>說</b><b class='flag-5'>嵌入式開發</b><b class='flag-5'>比</b><b class='flag-5'>單片機要</b><b class='flag-5'>難</b><b class='flag-5'>很多</b>?

    為什么嵌入式開發單片機要很多?一位高手談單片機嵌入式開發設計經驗...

    嵌入式,其實沒有什么標準的定義來區分他們,對于進行過單片機嵌入式開發開發者來說,都有他們自己的定義,接下來,就談談本人對這兩個概念的理解和感悟。首先明確概念,...
    發表于 11-18 10:36 ?18次下載
    為什么<b class='flag-5'>說</b><b class='flag-5'>嵌入式開發</b><b class='flag-5'>比</b><b class='flag-5'>單片機要</b><b class='flag-5'>難</b><b class='flag-5'>很多</b>?一位高手談<b class='flag-5'>單片機</b>和<b class='flag-5'>嵌入式開發</b>設計經驗...

    嵌入式開發-51單片機構建開發環境

    嵌入式開發-51單片機構建開發環境
    發表于 11-20 21:06 ?1次下載
    <b class='flag-5'>嵌入式開發</b>-51<b class='flag-5'>單片機</b>構建<b class='flag-5'>開發</b>環境

    為什么嵌入式開發單片機要很多?一位高手談單片機嵌入式開發設計經驗

    單片機嵌入式,其實沒有什么標準的定義來區分他們,對于進行過單片機嵌入式開發開發者來說,都有他們自己的定義,接下來,就談談本人對這兩個概
    發表于 02-10 12:19 ?1次下載
    為什么<b class='flag-5'>說</b><b class='flag-5'>嵌入式開發</b><b class='flag-5'>比</b><b class='flag-5'>單片機要</b><b class='flag-5'>難</b><b class='flag-5'>很多</b>?一位高手談<b class='flag-5'>單片機</b>和<b class='flag-5'>嵌入式開發</b>設計經驗

    單片機開發嵌入式開發的區別

    單片機開發嵌入式開發都是針對嵌入式系統的應用領域,但是兩者有著不同的特點和應用場景。在本文中,我們將探討單片機
    的頭像 發表于 04-14 16:36 ?2618次閱讀