gtk移植到嵌入式_物联网时代的盛行,应届毕业生是学嵌入式好呢,还是安卓或ios呢?...
截至2019年7月1日,看了一遍所有答案,感覺挺有意思的,這里說別學嵌入式的人挺多的,并明示或暗示題主去移動開發。除了贊同「即將到來的物聯網時代」是一個偽命題以外,以及感謝某些答案給我一些信息之后,下面想和題主探討一下嵌入式和移動開發之間的關系。我也是今年(2019年)的畢業生,所以我至少比很多人知道題主想要什么。
=====================================================================
首先,題主的專業是物聯網應用技術,如果我沒猜錯,該專業高年級會分兩個方向,嵌入式和移動開發,也就是你題目中描述的。
嵌入式系統是一個非常非常廣泛的定義,從技術層面來說可以分為硬件層,驅動層,系統層和應用層。手機也可以勉強算是一個嵌入式系統,手機手機,拿在手里的機器。手機的APP移動開發,就是嵌入式系統的應用層開發。硬件層,就是原理圖、PCB圖、電路板那些。驅動層,主要工作是對MCU寄存器進行讀寫、總線的使用以及對傳感器什么外設的操作等,簡單說就是編寫直接操作硬件的代碼。系統層,把前面的驅動層封裝起來,并弄出個接口(驅動接口),同時加上進程控制、內存管理、文件系統、網絡通信四樣東西,再把這些東西再封裝起來,最后提供接口給應用層。當然,由于嵌入式系統是專用設備,具有可裁剪的特性,所以上面五樣東西不一定都有。應用層,只要是涉及人機交互界面的都屬于這里,其中一種就是手機移動開發。
那么,為什么移動開發那么受歡迎?崗位需求那么多?求職時相對于其他三個層面(硬件層,驅動層,系統層)容易找到工作?因為這一層面,是直接面向最終用戶,也就是我們普通的廣大消費者。
手機應用層這一層次,產品的定位非常的多。我從網上截取了一張圖:
是的,如此多的應用,是需要大量的工程師來開發的,同時也體現了這一層次的崗位需求非常大。
IT界有一個笑話:「我有一個價值十億的 idea,只要開發這樣一個 APP,半年就會有一千萬人用,一年就能納斯達克上市。項目我已經規劃的非常清楚,啟動資金也很充足,現在就差一個程序員了。」
笑話的本意是諷刺外行人不懂內行,但也可以從側面反映出該行業的人才短缺。對了,這里的程序員就是APP工程師。
2019-06-01 補充:這里應用層是指UI界面,編程時需要用到類的思想,開發工具有提供Button類,Label類,View類,Timer類等,系統底層已經封裝好了,只提供API給開發者。除了APP開發,還有比如Linux上的Qt,GTK等開發環境,裸機開發(單片機開發)沒有系統層和UI應用層。
系統層。
除了Android和iOS兩大手機平臺,嵌入式的操作系統還有uC/OS,嵌入式Linux,vxWorks等等,總之很多,有開源的也有商業的。
對于小公司或者個人來說只要學會移植和運用就行,進入大公司才有可能開發新的操作系統。
這一層次相對于其他層次,開發崗位的需求是比較少的。我意思是說,開發一個操作系統的崗位是很難找到的。如果是在某些開源的系統進行二次開發,比如Linux+ARM的開發,也就是培訓機構那些內容,這種崗位需求多不多,我真不好下評論。培訓機構是包就業,他們會和其他大企業合作,把畢業生送到崗位上去(感覺好像以前計劃經濟時代的大學生畢業分配去向啊~),所以這些培訓機構出來的人畢業后不愁找不到這方面的工作。可是,如果你沒去培訓機構,完完全全自學Linux+ARM,可不一定能找到相關工作!這方面我深有體會,因為我是走了自學的路。
但是,如果題主是本科生,我是不建議題主去培訓機構的。沒必要!幾萬塊錢啊!我有次去培訓機構聽公開課,完全就和大學的實驗課相差無幾,最重要的還是講師的能力,講得好學生就學得好。如果題主不是一本學校的學生, 我相信你更清楚地明白,聽那些非常差的老師講課真是浪費時間!
驅動層和硬件層。
我決定把它們放在一起講。為什么呢?因為這個對于優秀的工程師來說,一個人就可以完成的工作了,團隊合作只是為了加快項目進度。這一層次,并不像手機應用層的開發,至少需要一個美工畫圖(UI設計)和一個程序員。
這兩個層次,我相信就是題主所說的嵌入式開發。也就是51、STM32、ARM等芯片開發,UART、IIC、SPI等串并行接口的運用,Bluetooth、WIFI、zigbee等通信方式的使用。為什么一到了這里我就寫到了很多技術名詞呢?除了我對這些比較熟悉以外,還因為,底層的東西就是這些,可以說學了就一勞永逸。它們出現以后就永遠存在,永遠有用。比如,不論哪款單片機都會有一個串口UART,學會了UART,以后不管用什么芯片,一看到「該芯片支持UART」就明白了。
對了,別聽培訓機構那些老師說51、STM32(Cortex-M3)已經過時,現在是ARM7、Cortex-A8的時代的話。這些只是芯片架構,如果沒有學好51、STM32,我可不敢去玩后面那些的(應用層除外)。
完美的學習路線是:51--->STM32--->ARM。對,這是需要一步一步來的。跳過去學……不說了,我去哭會兒。
:這里的ARM指的是S3C2440,最近答主準備接觸樹莓派,可能會改變「學習路線」的觀點。另,學習學得特別痛苦也有可能是教材不對!
其實樹莓派開發就相當于在Linux下的應用層的開發,只是多了硬件操作。
樹莓派的四種玩法:做Web服務器(server)提供網頁信息等,做終端(client)進行共享文件、下載等,連接顯示器或音響播放視頻或音頻等,在Linux下對GPIO進行操作控制硬件等。)
另外,在驅動和硬件這兩個層次做出來的產品,我們現在稱之為智能硬件。
比如無人機:
簡單來看,無人機就是硬件層+驅動層,可能會有操作系統,但是應用層的人機界面就沒有了。啊,抱歉,人機界面可能會有,不過不是在飛機上而是在手機上。
你要是覺得無人機太難了,那智能插座呢?
也就是一個單片機+繼電器+手機APP。
這兩款產品只是屬于消費電子領域,而且嵌入式技術還會涉及到醫療電子、工業控制等領域,這些必須去特定的工作環境才能了解,在此不多提。
所以,題主,你現在知不知道你的專業是這么好玩的?同時要學習的東西是非常非常多的。
=================================================================
聽說題主是專科,那我最后給的建議還是去移動開發。為什么?移動開發的資料多且全,網上教程也多,同時也有開源代碼,有一臺電腦和一部手機即可,不需要買開發板學習。而嵌入式,資料雜,教程亂,理解一個概念都要查半天,同時還需要買開發板學習,如果沒有強大的自學能力,以及資料收集整理能力,是完全做不了的。
我認識個大神,他剛剛接觸我最近正在玩的WIFI芯片,首先就是去官網、論壇、QQ群下載各種資料,尤其是芯片手冊,示例代碼等等。因為我接觸得早,一開始我教他避開一些坑,過了兩天后居然可以平等的討論問題了,又過了一個星期,他自己解決了官網例程的一個編譯BUG,而我自己卻解決不了,還得請教他。(我當然不會告訴你們,他說他初中就開始編程了,而我大學才開始接觸單片機)
回正題。APP移動開發,不需要你用到高深的算法,甚至冒泡排序都很少用;也不需要你知道操作系統太深層次的東西,比如進程間的通信方式有幾種。很多東西底層已經封裝好了,你只要直接調用它們的接口即可(就是包含一個頭文件然后調用一個函數)。
這一層次的技術非常簡單,按我的理解,就相當于建筑工人,或者說碼農。我并不是鄙視這一層,我現在也在做移動開發。我既沒有考研,也進不了大公司,那我也必須從「基層」干起。
另外,我不知道題主你是不是面臨類似于選專業的這種選擇,或者是參加培訓課程的這種。這種選擇是一進去了,要跳出來的成本是非常大的,比如轉專業。如果題主是這種,或者是找工作方向的,那正如我前面給的建議去移動開發;如果題主是問學習方向,那我和你說,你有能力的話,嵌入式和移動開發都學,學習是無止盡的。我現在就是上班做APP開發,下班玩單片機,順便和師弟師妹們聊聊就業方向。
最后,借用前面大神朋友的一句忠告,贈與題主:「做安卓和蘋果的UI,一定要將這個學習提到產品層面才有出息,不能只停留于表面的技術。」
==================================================================
其實寫了那么多,我感覺自己還沒有寫完,回頭一看自己洋洋灑灑的答案,還是就此為止吧。
以上內容只是闡明了移動開發和嵌入式開發在技術上的關系,現在工作一年,感覺兩者的開發關注點有很大的不同!APP開發更多關注的是信息展示和UI界面,考慮更多的是如何把數據優雅、美觀、方便地展示給用戶看,同時可能需要聯網進行數據的更新,是以手機用戶的角度來開發項目,另外有一些是專職開發IDE的;而嵌入式開發,關注的是底層,單片機開發關注對片上資源的使用,外設的操作甚至要會做電路板,嵌入式Linux這個就比較大,有的關注UI界面,有的關注網絡數據傳輸,有的關注視頻編解碼,甚至有的開發內核kernel。所以嵌入式開發,更多是從電路板、芯片、系統、性能等非消費者的角度考慮問題。
總結
以上是生活随笔為你收集整理的gtk移植到嵌入式_物联网时代的盛行,应届毕业生是学嵌入式好呢,还是安卓或ios呢?...的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: web漏洞扫描器原理_web应用防火墙对
- 下一篇: python发展前景怎么样-python