很有用的熱知識:從單片機到嵌入式linux我們需要做什麼
這是我今天一個同學問我的
我再零散的說一些觀點,假如大家有這方面的經歷,也幫忙在文章下留言,謝謝大家。
///插播一條:我自己在今年年初錄製了一套還比較系統的入門單片機教程,想要的同學找我拿就行了免費的,私信我就可以哦~點我頭像黑色字體加我地球呺也能領取哦。最近比較閒,帶做畢設,帶學生參加省級或以上比賽///
正文開始:
先說共有點
單片機和嵌入式他們最終都是要跑硬體的,所以你也會遇到像GPIO口、I2C、串口、SPI、定時器、看門狗這些問題。
所以假如你學了單片機,那麼你在這些東西上肯定是有積攢的。那麼這些就是你的優勢,假如你讓一個學java的去做嵌入式開發,我覺得並不適宜,由於他可能對電子的很多東西不懂,他可能看不懂原理圖,也不會用示波器萬用表,也不知道什麼是中斷,中斷向量之類的。
但是你假如是單片機開發,這些你都了如指掌,那,這就是優勢。
但是從單片機開發到嵌入式Linux,我覺得要先看看多任務。
假如有了多任務的概念,那麼不管你是做RTOS還是Linux都是適宜的。
那差異點在哪裡呢?
嵌入式的特點是軟硬體可裁剪,所以從單片機到嵌入式Linux,你作為軟體開發,最大的問題就是裁剪,依據不同的硬體配置做不同的裁剪軟體。
而且,從單片機到Linux,它的難度能夠說是指數級增加。
你能夠用單片機來做一個U盤,嗯,你做出來了。
然後你到Linux下去看看USB的架構,嗯,你絕對是懵逼的,由於絕壁是太複雜了,所以你想在沒有完全了解的情況下就給這些代碼動刀子,你做不到。
我今天和我一個同事聊天,他跟我說,以前他做手機開發的,做那些驅動,也就是供給商給給代碼,然後推進下進度就好了。
他說的沒有錯,很多小廠商就是這麼做的,但是難就難在,可能某個修改就一行代碼,但是你就是不知道在哪裡,要是你沒有經歷,對架構不熟悉,你絕壁要熟悉上一個星期~,我之前在中興調一個馬達驅動,找驅動文件都找了很久,還要了解馬達的電機驅動原理,最後去驗證對焦那才是一個讓我崩潰的事情。
所以,從單片機到嵌入式Linux,你對架構的掌控是一個很大的挑戰。
其次是調試
大的系統,要給它開刀做手術,可不是一刀子下去一刀子出來就完事,還是須要針對性的去做調試,對不同的問題先有理論根底再動刀子。
哦,你以為嵌入式Linux不寫代碼
你須要寫C,有時候由於某些問題,你須要寫C++,python,shell~
就此時的行業開展來看只會單片機已經不吃香了並且在薪資待遇方面來看的話單片機的收入限制性太強可能工作很多年之後發現沒有了成長空間,因此漸漸轉到嵌入式Linux這個方向是越來越多的人的一個選擇,那麼接觸了那麼長時長單片機之後又要怎樣從單片機領域轉到嵌入式Linux呢?下面我們就來了解一下要如何從單片機到嵌入式linux我們須要做什麼呢!
提到單片機很多人都很覺得不生疏,大街小巷上面電子產品都用到。近幾年隨著嵌入式的開展,做單片機的一幫傢伙忽然覺得大禍臨頭一般發現自己熟悉掌握的單片機慢慢被嵌入式超越了,那麼嵌入式到底是啥玩意,和單片機有啥區別,怎麼完成順利的轉化。
從嚴格意義上來說,單片機是嵌入式的一個子集,嵌入式其實就是對單片機系統的升級,附加了更多的功能,最普通的單片機只須要一個while循環在裡面操作實施就能夠了,在嵌入式層次已經升級到作業系統級別,在這裡面很多人有個疑惑,為啥一提到嵌入式總是和linux掛上鉤,其實嵌入式裡面用的系統根本上都是基於linux的,其實還有少量別的作業系統的嵌入式,假如早期的wince系統(微軟的嵌入式框架),系統的升級了,此時嵌入式設備都能夠玩多進程框架了,於之前相比還是不可想像的。
小個頭的單片機和嵌入式到底有啥區別?
1.嵌入式在硬體配置上有了全方面的升級。此時大家用的手機都是嵌入式範疇的,根本山屬於微型電腦的級別了,這是單片機不能比擬的,其實硬體的配置的大幅度提升也給維修工帶來很大的難度,前幾天家裡剛買的變頻冰箱出問題了,上門的師傅看到款式直搖頭,又是變頻的啊,然後問了一堆故障之後,首先給售後打了一通電話詢問,然後我說你不是帶了一堆器具嘛,師傅說了句,此時的冰箱裡面都是一堆堆的板子,搞什麼智能省電,壞了不是重新刷設備就是換板子,我們這些維修工器具越來越沒有用武之地了。
科技的進步,嵌入式的全力開展給人們的生活都會帶來不一樣的感覺,其實對於搞單片機的硬體的升級還是之前的驅動的開發,以及寄存器的設置大同小異。
2.嵌入式在軟體系統層次,比單片機豐盛了許多,典型的單片機程序MP3,也在風行了幾年迅速被手機產品取代。這也不是簡略幾個按鈕或者一個小顯示屏的單片機所能比擬的,特別是安卓系統的出現,實實在在的拉動嵌入式的開展,搞得大街小巷做晶片的公司,假如上面不能跑安卓似乎都沒法和客戶談生意。
想要從單片機轉到嵌入式Linux的搭檔能夠參照這個資料能夠有效的攻克單片機過渡到嵌入式Linux的理論上的問題,理論想明白了實際的東西也就好進行了,就怕你想不明白其中的道理
從單片機到嵌入式linux我們須要做什麼
由於安卓系統的時興其實給開發人員帶來一點很大的不同,以前的嵌入式的應用根本不是c/c++方面的,此時java也上來了,由於嵌入式的設備運行個java的虛擬機根本都不是問題。所以此時c/c++就業不如java火熱一個很重要的理由。
玩過單片機的須要在這個層次深層的加深,從軟體的層次上來說不僅僅是簡略的寄存器的配置,還波及到作業系統裡面的多進程,多線程的,以及內存和磁碟的管理這些都須要增強。
嵌入式主要分為三個方向,一是系統開發:側重開發環境搭建、內核原理、交叉編譯等;二是嵌入式Linux應用開發:側重Linux應用編程、內核編譯、系統調用;三是底層驅動開發:側重嵌入式Linux系統下的驅動開發、內核的深層分析。