-
1 # 熊貓程式設計
-
2 # 嵌入式軟硬體開發
回答第一個問題:難易是與個人能力有關的。嵌入式開發有嵌入式硬體開發和嵌入式軟體開發,嵌入式軟體開發中又包括嵌入式應用開發工程師和嵌入式驅動開發工程師。目前嵌入式開發涉及到的知識有模電,數電,電路分析與設計,C語言,組合語言,更深一點的有資料結構(主要是連結串列操作) linux作業系統,linux多程序,多執行緒,檔案操作,linux驅動框架,資料庫操作等。目前比較多的嵌入式軟體開發主要是做stm32研發。可以從微控制器->stm32->linux應用->linux驅動 路線學習,做嵌入式實踐性很強,所以最好有開發版配套學習。踏踏實實一步一個腳印學習。回答第二個問題:嵌入式應用很廣泛,生活中比如家裡的電飯鍋,空調,冰箱,智慧插座等 區別就是裡面是用微控制器開發還是stm32開發亦或者是用linux開發。選定一個自己感興趣的方向,堅持下去 ,定能有所收貨。
-
3 # 海綿鵬娛樂
嵌入式 Linux開發主要分為系統boot loader,裝置驅動開發和應用開發。
一般公司應用開發和驅動開發會分別有人負責。
目前網際網路盛行,生活中嵌入式開發很多的,如智慧電視,機頂盒,智慧手機,智慧冰箱,機器人,無人機,車載系統等等。
-
4 # HSam
難不難?要看你學成什麼樣了?入門容易,要成為大神就難了。如果你只要簡單的控制個什麼東西啊,只是使用一下。那容易。
如果你要成為軟硬兼通,上能寫多平臺上位機,下能電路設計,畫板,打板,焊板一氣呵成。中間還能嵌入彙編以提高程式碼效率。那就難了。
至於能接觸到的裝置,emmmm……你就是使用它提出這個問題的。
-
5 # 程式猿的未來人生
如果是電子或計算機專業的人,相對來說,會比較容易入門;對於零基礎、非電子或計算機專業的人有一定難度。因為嵌入式領域不僅要懂較底層軟體(例如作業系統、驅動程式),而且必須懂得硬體的工作原理(UART、網絡卡、IDE、SPI匯流排、IIC匯流排、PCI匯流排等),所以非專業IT人員切入這一領域有一定難度。嵌入式從業人員需掌握以下幾個方面的知識技能:
1、程式語言:具有C、組合語言等程式設計經驗。部分嵌入式硬體執行裸機程式即需要透過彙編程式碼設定棧暫存器後才能跳入第一個C函式入口執行,因此需要一定的彙編能力。
2、嵌入式實時作業系統:嵌入式系統一般對實時性有一定要求,所以一般執行的是嵌入式實時作業系統或者嵌入式Linux系統。應該掌握嵌入式實時作業系統相關的基本概念(優先順序排程、任務、訊號量、互斥鎖、條件變數等),並熟悉usos、rtthread、freertos等其中一個實時作業系統程式碼,掌握其提供的基本API函式,便於編寫相關的應用程式。嵌入式系統的實時性不是體現在“快”,而是體現在確定性上,很大一般分人對此有一定誤解。
3、體系架構:熟悉x86、ARM、PowerPC、MIPS一個或者多個體系架構,熟悉體系結構的通用暫存器和特殊暫存器、基本的彙編指令(暫存器操作、記憶體載入/儲存操作等)、ABI規範(二進位制相容介面、規定變數大小、暫存器用法等、如哪些暫存器作為函式引數、哪個暫存器作為棧暫存器等)、中斷架構、異常機制、MMU和整合的硬體裝置。
4、嵌入式開發環境:熟悉嵌入式交叉開發環境,包括交叉工具鏈、Makefile、GDB偵錯程式等。
5、驅動開發:嵌入式系統一般是定製系統,很多硬體沒有現成的驅動,所以一般會涉及自己開發裝置驅動。因此要求嵌入式系統人員能看懂硬體的datasheet資料手冊,明白相關暫存器功能,掌握一定的驅動開發技巧。
6、除錯能力:嵌入式系統除錯手段有限,包括prink列印、GDB交叉除錯和硬體偵錯程式,一般在未執行作業系統的情況下只能藉助列印或者硬體偵錯程式,所以一般最先開發的驅動為UART。但是列印除錯效率低下,一般會藉助硬體偵錯程式,所以應該熟悉掌握一款硬體偵錯程式的使用和除錯方法。
-
6 # 嵌入式經驗分享1.什麼是嵌入式系統
嵌入式系統已經滲透到人們生活的方方面面。往大的說,軍事,通訊,運輸,金融,醫療,氣象,農業等眾多領域的監控系統,往小的說,就是基於微控制器的應用,如常見的LED顯示,空調和洗衣機等。而恰恰由於這種寬泛的應用,使得“嵌入式系統”更加難於明確定義。應該說,一切智慧的應用,都是在某種程度上的嵌入式系統。包括華為的5G!總體上講,嵌入式是相對於PC機應該言的,除了PC機,基本都屬於嵌入式。
2.嵌入式系統開發正因為嵌入式系統應用廣泛,因此,與其相對應的硬體型號和軟體開發工具也非常多,有些產品甚至要用專門的軟體進行開發。主要目前市場的主流微控制器有PIC--用MPLAB開發,STM32/LPC/Nordic等常見的,可以用KEIL/IAR等付費軟體開發,也可以用GNU+Cygwin+文字編輯器等免費軟體進行開發。具體還可以進一步細分為
1.無作業系統
此時,整個應用程式就處理一個死迴圈內,微控制器根據各任務、函式狀態逐個進行執行。除了中斷之外,任務/函式的優先順序不好控制。
2.帶作業系統
這個系統是適用到嵌入式微控制器的,佔用空間很少,執行效率也很高,包含了許多傳統作業系統的特徵,包括任務管理、任務間通訊、同步與相互排斥、中斷支援、記憶體管理等功能。其中比較著名的有VxWorks、FreeRTOS等。特別是FreeRTOS是免費的,可以直接下載,很多知名晶片應用系統也是基於它修改的,比如現在很火的ESP無線網路應用晶片就是基於此係統開發的。
3.學嵌入式難不難從前面的介紹可以,嵌入式是很寬泛的概念,具體到個人,要學什麼,取決於你想從事哪個行業,根據這個行業應用中要涉及的內容來選型。
對於初學者而言,完全可以從目前的市場主流開始入手。比如基於Cortex-M核心的STM32,及普通的STM8,或者國內特別流行的51系列,網上資源非常豐富。只要下肯功夫,就不難。
4.給初學者的建議學以致用,在應用中學,這樣學的快。學會一個片子,再學別的片子就簡單了。買一套開發工具,按照例子一個一個的編寫程式碼,一定要自己寫,百看不如一寫!從簡單的按鍵、中斷、串列埠開始學,逐漸總結提高。除錯的過程能發現和學習很多技能。
-
7 # 類戈
按照你的題目,我理解你已經認可了嵌入式開發的前景,基於這個認可,你希望在嵌入式這個領域做一些學習和研究,以此作為生存能力。但現階段你應該還處於較為迷茫的階段,只知道想做,不知道該怎麼做,或者說不知道怎麼入門。
如果我以上的判斷正確,那麼可以參考一下我的建議。
我是一個近10年的嵌入式軟體工程師,從核心到應用都搞,也都算有點成果,但驅動以下的,比如硬體和作業系統中我不擅長的領域,也都所知不多。
首先咱們說一下業內對於嵌入式開發的一些定位。基本來說,嵌入式開發會有:應用層,驅動層,作業系統層和硬體層。一些做嵌入式裝置的公司的研發部門劃分,基本也都是這樣的。
從下往上依次簡單的聊聊。
硬體層不用多說,畫板子焊電路,這個我也不專業,不多說別的,但據我瞭解基本這部分都是科班出身,跨專業很少能做到這部分來。
作業系統層並不一定會有專門的研發人員需要,因為現在的嵌入式裝置來說,一般都是直接裁剪一下linux核心就用了,由於Linux本身的模組化和可用性都很高,因此很多公司基本都是一個人兼職負責這部分。當然大司還是會專門有人研究核心,修改核心,甚至仿製核心做自己的核心的,但小司基本很少見。
然後就是市面上,或者說也是招聘市場上最常見的兩類軟體相關的嵌入式開發人員了。驅動開發是每一個新硬體到來之後,作業系統已經搭載成功之後,第一個要做的功能。最簡單的例子,這個裝置的HDMI是不是標準的,需要單獨寫個驅動支援嗎,類似的硬體需求都是這時候做的。
再上面一層就是應用層了。應用層開始做之前,嵌入式裝置其實已經具備了開發應用軟體所需要的所有環境,這時候你已經完全可以執行你的hello程式了。
再舉一個最簡單的例子,比如你要做一個機頂盒,那麼這時候密碼到手的就是一塊板子,具有cable線介面等必要的訊號來源,具有音影片編解碼晶片等硬體支援,具有VGA或者HDMI等輸出端的驅動支援。這時候應用要做的,是怎麼樣接流,分析流,流的業務處理,展示給客戶。
可見,一旦使用者可見了,基本產品也就成型了,開發過程也就進入尾聲,剩下的更多的就是改bug了。
接下來說一下做嵌入式的一些技能要求。
其實每一個層次,對於技能的要求並不都相同,我所瞭解的也不夠全面,但我相信比大部分的人還是要多一點的,^_^
對於作業系統層來說,初學者如果知道核心的配置和裁剪方式,基本就是一個很好的加分項了,除非你專業就學這個研究這個,否則沒有必要直接插入到這個領域,因為基礎更重要,而且核心程式碼真的很牛逼,不太好看懂。世界頂尖大牛的程式碼功力,真的歎為觀止。
對於驅動來說,電子,自動化,軟體工程等一些專業,都可以涉獵,但更建議偏硬體一點的專業來主攻這個方向,因為驅動是會直接跟硬體打交道的。開發語言毫無疑問是C嘍。
應用層的話,現在伴隨著嵌入式硬體的成本下降,硬體效能越來越好,早就不在是C語言一家獨大了,很多嵌入式裝置會選用C++ JAVA,甚至我還見過一個加密裝置由於客戶要的著急,直接用Python寫的。這一層也是跨專業研發最多的了。
所以,我覺得,嵌入式伴隨著物聯網的大爆發,會迎來新一輪的紅利,入行還是很不錯的,祝你好運,哈哈。
-
8 # drinkingcode
嵌入式開發如何與生活關聯?
嵌入式開發做什麼?嵌入式開發如何入門?嵌入式開發如何與生活關聯?在當今這個世界,嵌入式開發與我們的生活息息相關。比如智慧手機,谷歌眼鏡,蘋果手錶等隨身攜帶的電子裝置都和嵌入式開發有關。那麼,嵌入式開發與這些電子裝置是如何關聯的呢?
下面,我們就以當今最熱門的華為的 P30 Pro 智慧手機為例來簡單闡述上面這個問題。我們知道華為的 P30 Pro 智慧手機是由硬體和軟體組合而成。硬體就是實實在在看得見摸得著的一些器件,比如電容屏,攝像頭等。而軟體就是執行在手機內的程式。
但是,軟體是如何與硬體進行互動的?比如:如何開啟攝像頭,如何關閉螢幕等,所有這些操作都和嵌入式開發有關。換言之,嵌入式開發就是透過軟體來控制硬體,從而才會產生當今一系列高科技的電子裝置,間接也讓嵌入式開發與我們當今世界產生了密不可分的聯絡。
嵌入式開發做什麼?在上面我們知道,嵌入式開發就是透過軟體來控制硬體。具體到嵌入式開發的工作細節,也就是嵌入式開發主要是做什麼的呢?下面我們詳細予以具體說明。
第一步:看電路圖
由於我們需要硬體打交道,所以我們日常工作中都會有一塊要控制的開發板硬體。每一塊開發板硬體在實際開發中,都會對應一份電路圖。在電路圖中,會告訴我們元器件如何與主晶片進行連線的。這樣我們才能知道要控制開發板上的某個元器件,需要對應控制晶片的哪個引腳。
圖一:開發板
圖二:電路圖
第二步:檢視晶片手冊
在上一步,我們知道要控制電路板某個元器件,需要找到晶片對應的引腳。如何控制這個引腳的輸出呢?這就需要檢視晶片對應的手冊。一般來說,手冊大多數都是英文版的,所以要有基本閱讀英文的能力。透過檢視晶片手冊對應部分,我們就找到了控制這個引腳的方法。
第三步:編寫程式碼
有了第一步和第二步的理論之後,接下來,我們就需要編寫程式。然後將編寫好的程式燒錄到開發板中執行,以驗證我們程式是否正確。以上就是嵌入式開發工作的一般日常。
嵌入式開發如何入門?瞭解嵌入式與生活的關聯,也瞭解嵌入式開發的工作日常。有的小夥伴覺得用嵌入式來控制硬體很酷,想嘗試進入這一行。那麼我們就簡單來聊聊如何入門嵌入式的話題。
第一步:熟悉C語言
在軟體行業,掌握語言是進入這個行業的第一步,也是最基礎的一步。因為軟體工程師的職責就是編寫某一種語言程式碼。在嵌入式開發崗位中,主要對應的開發語言就是C語言,所以一定要掌握好C語言。
第二步:實戰51微控制器
在基本掌握了C語言之後,接下來,我們就可以買一塊帶51微控制器的開發板來進行上手練習,最好配套的開發板有對應的影片教程。因為若影片教程裡講解的開發板和自己購買的開發板不一樣,對於新手來說,難度會增大,也會打擊小夥伴自學的自信心。在淘寶搜尋“郭天祥51微控制器開發板”,可買得到開發板和對應影片教程。
回覆列表
難不難是要看你是打算是用什麼語言開發,並且你的基礎怎麼樣。
用c/c++開發還是有一定難度的。Java語言相對簡單些。這實際是由專案決定的,相對比較底層的應用,直接驅動硬體,微控制器的肯定用c。如果底層硬體有android系統就可以用Java開發。
至於說到應用,現在比較火的智慧家居,物聯網,都離不開嵌入式。