成都嵌入式軟體學習,這些方法你知道嗎?

成都嵌入式軟件學習,這些方法你知道嗎?

最近調查發現,對於嵌入式軟件方面來說很多用人單位,hr在招人期間,遇到了很大的問題就是:每年畢業的大學生很多,但是就是招不到合適的嵌入式軟件開發人員,大部分原因是因為能力不夠,不能達到他們的工作需求。你要知道,學習嵌入式就要滿足社會的需求,及用人單位的需要,那麼問題來了,如何才能成為一個合格的嵌入式軟件工程師,嵌入式軟件學習方法又有哪些呢,為了自己的將來就業這必須看。

嵌入式專業是一門實踐性非常強的學科,只有多動手,多實踐,多編程,多調試,多看書,多思考才能真正掌握好嵌入式開發技術。

現在很多同學也意識到了學校培養模式和社會需求脫節問題,有一部分同學也先行行動起來,開始注重培養自己的實際動手能力,培養自己實際分析問題,解決問題的問題,培養自己在嵌入式專業實際編程,和調試程序的能力。但是嵌入式專業不同於其他學科,嵌入式專業是一門綜合性非常強,涉及知識面非常廣的學科,對於初學者來說,面對那麼多教程,課本,那麼多知識點,往往不知道從何處下手,不知道哪些是重點,哪些不是重點,這些知識點之間有什麼關聯,一臉的茫然,然後東一榔頭,西一棒子,折騰了幾個月甚至大半年後,還是找不著學習嵌入式的方向,還徘徊在嵌入式開發的大門之外。那麼重點來了,嵌入式軟件學習在這裡告訴你。

成都嵌入式軟件學習,這些方法你知道嗎?

首先我們先來嵌入式軟件是什麼:嵌入式軟件就是嵌入在硬件中的操作系統和開發工具軟件。那麼常用的嵌入式操作系統就是linux了,有很多嵌入式操作系統,說多了會不明白,那麼就以嵌入式linux系統為例來了解。

一、安裝虛擬機和Linux系統。

一般人用的電腦都會裝Windows系統,要想在Windows上跑其它系統,得安裝虛擬機。而目前主流的虛擬機有vmware、VirtualBox、hyperV等,你可以隨便選一個安裝。然後去官網下載個人版的Linux鏡像(.iso文件)並把它安裝在虛擬機裡面即可,這裡給出主流Linux系統的官網鏈接:ubuntu、fedora、centos、debian、suse。如果你沒有用過linux的話,推薦使用ubuntu。

二、學會使用Linux常用工具。

1、編輯器(寫代碼必備的)。有gedit,vim,emacs,sublime等,推薦學vim。

2、gcc和gdb。gcc是編譯器,gdb就是代碼調試器。

3、makefile、autoconf、automake。這裡可不像VC++6.0這種工具,點個鼠標就給你編譯好。在Linux下,你得用makefile和make工具,來編譯代碼。其中autoconf和automake可以自動生成makefile。

4、ssh、tftp。如果你在ARM開發板上弄了個Web服務器,那麼,你就可以用這些工具去訪問它。其中,ssh工具建議用SecureCRT或者MobaXterm。

5、samba。要想用Linux跟windows交換數據,還可以搭建samba服務器。

6、版本控制器。有svn,cvs,git等,推薦學git。有了git,你就不必手動備份代碼了。

三、學會使用Linux常用命令。

linux的命令是你在學習中經常用到的,所以可以在百度上查或者買本linux命令的書來學哦。

四、shell腳本十學嵌入式必備的。

在實際工作中,複雜的系統管理操作,不會一行一行地敲命令,而是用腳本(命令是基礎)。腳本也是一種編程語言,只不過是解釋型語言。相比C/C++、C#、JAVA這類高級語言,腳本要易學很多(因為增加了語法糖)。在Linux下,shell也有很多種,如:bsh、bash、csh、tcsh、ksh、zsh等,一般是學bash,其它的遇到再學也不遲,因為都是大同小異的。推薦《Linux Shell編程從初學到精通》

五、學會Linux下C編程。

儘管已經明白了很多了,但是不管什麼編程都是還會涉及C語言的,所以C語言是必須要好好學的。此外,C語言的執行效率比bash要高,網絡編程的Socket也常常用C語言開發。在這裡,得掌握基本的文件操作、進程/線程控制、Socket等。推薦《嵌入式Linux C語言開發》

成都嵌入式軟件學習,這些方法你知道嗎?

六、對硬件方面還是要稍微瞭解一下的,不然不能和硬件對接哦,這裡就不多說硬件方面的知識了,對於硬件你可以從:單片機,數據結構,編譯原理,數據庫等。

學完上面這些理論之後,得再複習一下linux下C編程,你會有更大的收穫。

七、驅動開發。

由於系統還沒起來,所以驅動能用到的API(內核的部分API,如:kprintk、kmalloc等)並不多,很多函數還是得自己寫的,其中,會經常訪問臨界資源,所以得掌握自旋鎖、睡眠鎖。此外,驅動程序出問題的話,整個系統就掛掉了,所以還要掌握各種調試驅動的方法,如:goto語句、日誌系統、KDB等。接下來就要熟悉掌握字符設備和塊設備的驅動程序了。

八、文件系統。

在學習操作系統原理的時候,已經有介紹文件系統了,而且不需要深入研究文件系統的具體算法,只需要瞭解其特性再學會使用它就可以了。如:NFS、FAT32、NTFS、yaffs2、ext4、ZFS等。

九、內核裁剪。

一般初學,可以先掌握內核剪裁(具體工作就是填寫若干個選項)。剪裁只是去掉內核部分不需要的功能,以減少代碼體積。這裡只要求你對內核的各個功能選項都很熟悉就可以了。如果剪裁還不能滿足要求的話,得閱讀內核源碼,修改內核了。

十、移植bootloader。

單片機也有bootloader,在keil C下的startup.a51,主要是做一些初始化工作。那麼,在ARM上面的bootloader也是一樣的功能,同樣,也沒有那麼重要所以把它排在後面。常用的bootloader有vivi和uboot,一般學習uboot,主要掌握uboot的啟動流程和移植。在經過前面的學習,那麼uboot對你來說已經非常容易的了,一般只需要學會使用uboot或者用已經移植好的uboot,不需要深入研究它。推薦《Ubuntu Linux從初學到精通》

這些你都瞭解透徹,那你就離成功不遠了,嵌入式軟件時代來臨,把握機會,做一個厲害的嵌入式軟件工程師還是不錯的,嵌入式軟件學習就是上面這些了,都還是不錯的資源哦。


分享到:


相關文章: