• 招生咨詢熱線:4008-569-579 
  • 手機版
    用手機掃描二維碼直達商品手機版
招生咨詢熱線
4008-569-579
機構(gòu)主頁 > 培訓(xùn)資料 > 廣州嵌入式培訓(xùn)機構(gòu)教你如何在嵌入式軟件開發(fā)入門
機構(gòu)主頁 > 培訓(xùn)資料>廣州嵌入式培訓(xùn)機構(gòu)教你如何在嵌入式軟件開發(fā)入門

廣州嵌入式培訓(xùn)機構(gòu)教你如何在嵌入式軟件開發(fā)入門

來源:廣州達內(nèi)教育        時間:2023-05-30        熱度:37℃        返回列表

    本篇致力于列出初級嵌入式軟件工程師工作中用到的技術(shù)和它們的學(xué)習(xí)路線,希望給想要走嵌入式軟件方向的同學(xué)一些指引。

    嵌入式系統(tǒng)的定義

    以應(yīng)用為中心,以計算機技術(shù)為基礎(chǔ),軟硬件可裁剪,適用應(yīng)用系統(tǒng)對功能、可靠性、成本、體積、功耗等嚴(yán)格要求的專用計算機系統(tǒng)。

    例如,微波爐是專用于加熱食物的產(chǎn)品,電視是專用于閉路電視播放的產(chǎn)品,手機原本是專用于通信的產(chǎn)品,現(xiàn)如今電視也可以播放網(wǎng)路視頻,手機也可以用于看視頻、打游戲了,這都得益于嵌入式技術(shù)的蓬勃發(fā)展。


    宏觀上的嵌入式包含所有的帶有控制器的電子產(chǎn)品,其都滿足“嵌入受控器件內(nèi)部”的條件。

    所涉及技能

    * 必備技能:

    計算機組成原理:了解基本的計算機組成原理。

    C語言基礎(chǔ):C語言的基礎(chǔ)語法。

    電路基礎(chǔ):對于初級工程師要能看得懂簡單的電路原理圖,掌握萬用表、示波器的使用,單片機軟件開發(fā)崗位可能要求設(shè)計電路,會使用Altium Designer等軟件繪PCB板。

    單片機:51單片機,掌握通過直接操作芯片寄存器操作外圍器件(LED、紅外、電機等),掌握UART、I2C、 SPI 等通信協(xié)議。

    Linux基礎(chǔ):除去單片機開發(fā)工程師的工作,現(xiàn)在大部分嵌入式設(shè)備都是使用的Linux系統(tǒng)。需要熟煉使用Linux系統(tǒng),掌握常用的命令。Linux C:掌握使用C語言操作Linux文件系統(tǒng)、網(wǎng)絡(luò)開發(fā)、多線程多進程開發(fā)。這時可以找到純Linux軟件的工作,如服務(wù)器開發(fā)、內(nèi)容分發(fā)系統(tǒng)等,這類工作要求熟練掌握網(wǎng)絡(luò)開發(fā)和并發(fā)編程。

    至少一門語言:C++/JAVA,理解和使用基本的面向?qū)ο箝_發(fā),后面可能遇到的QT圖形開發(fā)基于C++,Android開發(fā)基于JAVA。

    * 其它:

    Linux 其它:系統(tǒng)移植、驅(qū)動開發(fā)等。

    算法,算法在程序?qū)崿F(xiàn)中占據(jù)重要的地位,大公司對于算法的要求較高,

    數(shù)據(jù)庫,當(dāng)操作的數(shù)據(jù)量較大,便會使用數(shù)據(jù)庫進行管理,需要了解常用的SQL語句,掌握基于MySQL、SQLite等數(shù)據(jù)庫的開發(fā)。

    零、零基礎(chǔ)

    如果你現(xiàn)在是零基礎(chǔ),也就是高中生或者其它專業(yè)想要轉(zhuǎn)行的,有一些話寫在前面。

    前面已經(jīng)講過了嵌入式是什么,以及舉例,所以你以后從事的可能就是手機系統(tǒng)、電視系統(tǒng)、機器人控制、汽車電子系統(tǒng)的開發(fā),你要仔細(xì)的評估你是不是想要從事這樣的工作,是不是足夠的興趣,對于學(xué)習(xí),尤其是自學(xué)來說,興趣我覺得是重要的。

    軟件行業(yè)并不是一個能夠速成的行業(yè),都需要大量的代碼練習(xí)和思考,且除了嵌入式,還有其它很多其它的可以學(xué)習(xí),例如JAVA Web,PHP Web,網(wǎng)頁前端,UI,安卓/IOS開發(fā),C#軟件開發(fā),Unity 3D圖形開發(fā),軟件測試,等等。這些門類每個都有自己的學(xué)習(xí)路線,并不在本篇的范圍之中。

    在自學(xué)中,有幾個技能點使用的比較多,

    1、學(xué)會搜索

    在學(xué)習(xí)中遇到問題,大都可以通過搜索得到,大多數(shù)情況下,你并不是個遇到這個問題的人。經(jīng)常有人軟件安裝過出了問題就來問我,我就讓他把出現(xiàn)問題的彈框里面的字去百度。這經(jīng)常是一個有效的辦法。包括軟件編譯的錯誤,如何更換軟件源,某個命令如何使用呀,這些都可以搜索得到。

    但搜索并不只是有百度,如果能會翻墻的話,就用谷歌,如果不會,就去學(xué)(大多數(shù)初學(xué)者的問題,百度是足夠了的,只是不怎么好用而已)。搜索某個商品的信息就用淘寶,搜索期刊、專利都有專門的網(wǎng)站。

    2、練習(xí)

    計算機科學(xué)是實踐的科學(xué),如果你沒有寫一行代碼,只是看書,是學(xué)不會的。而且,練習(xí)會在鞏固知識的同時讓自己獲得成就感會增強學(xué)習(xí)的興趣。在學(xué)習(xí)的每個階段,你都需要練習(xí),甚至到了工作之后,你仍然在不斷的訓(xùn)練你的編程技巧。

    一、C語言環(huán)境

    與匯編、JAVA、C++等語言相比,C語言具有高效、易理解、可移植、能直接訪問硬件等優(yōu)點,所以嵌入式系統(tǒng)的編寫語言主要是C語言。

    學(xué)習(xí)C語言,現(xiàn)在的大學(xué)一般還是用的Visual C++ 6.0,但是已經(jīng)過時了(Windows下的推薦使用Code::Blocks),我的建議是在開始就使用Linux+GCC作為編譯工具進行開發(fā)。有幾點好處:

    VC是上個世紀(jì)就淘汰的工具,對C標(biāo)準(zhǔn)的支持還停留在C89上,這是1989年確立的C標(biāo)準(zhǔn),而gcc工具是一直與時俱進的,支持的C11標(biāo)準(zhǔn);

    gcc工具是嵌入式開發(fā)的標(biāo)配,在個人電腦開發(fā)嵌入式系統(tǒng)是需要交叉編譯的,目前支持的就是gcc工具;

    早點兒開始熟悉Linux系統(tǒng)的操作,常用的個人電腦是Windows的可視化界面,但在Linux上大部分采用命令行的方式操作電腦,早點接觸和掌握Linux的操作是有益于我們后面的學(xué)習(xí)的;

    使用gcc進行交叉編譯是嵌入式開發(fā)的基礎(chǔ),遲早需要掌握。

    具體操作:

    步,安裝Linux虛擬機,安裝 VMware 軟件,下載 Ubuntu 鏡像安裝好Linux虛擬機就安裝好了。

    第二步,使用gcc編寫程序,在Ubuntu中安裝好gcc,一般Ubuntu會自帶gcc,使用

    gcc --version

    測試,如果提示沒有安裝則使用命令

    sudo apt-get update

    sudo apt-get install gcc g++

    安裝,apt-get 是Ubuntu上的安裝包管理軟件,update 命令用于更新軟件包信息,install 命令用于安裝軟件,gcc 用于編譯 C 文件,g++ 用于編譯 C++ 文件。

    先熟悉Linux操作(常用的概率和基本命令)

    軟件編寫可以直接使用Linux 的軟件編輯工具vi 或者vim(去熟悉怎么安裝)。但是推薦使用文件共享,這樣我們可以使用Windows下的帶有圖形界面的編輯器來寫軟件。

    實現(xiàn)共享有兩種方式:1、推薦使用 samba 軟件和虛擬機共享;2、也可以直接在VMware中開啟Windows共享文件(samba配置是在Linux環(huán)境下的,比較麻煩;共享在VMware軟件設(shè)置就可以了,較方便)。這兩種方式一個是Linux共享給Windows,文件存在Linux,另一個則相反,但都能使我們在Windows上編寫代碼而使用gcc編譯和運行。

    第三步,編譯運行,假設(shè)我們已經(jīng)編輯好了helloworld.c,我們便能使用gcc來編譯了,

    gcc helloworld.c

    便會在當(dāng)前目錄下產(chǎn)生一個a.out文件,

    ./a.out

    便能運行程序,看到執(zhí)行結(jié)果,如果要生成指定的可執(zhí)行文件的名字,可以加參數(shù) -o [file_name],即

    gcc helloworld.c -o [app_name]

    ./[app_name]

    運行程序,關(guān)于gcc的使用還有很多的技巧,需要在實際使用中去掌握。

    二、C語言基礎(chǔ)

    搭建好環(huán)境,接下來可以正式開始C語言的基本語法的學(xué)習(xí),一般一門計算機語言由兩部分組成,語法和應(yīng)用,首先先要學(xué)習(xí)C語言的基本語法,后面的單片機和Linux C都是C語言的一種應(yīng)用場景。

    如果這是你的門編程語言,在剛學(xué)習(xí)的時候有很多的新概念是需要建立的,例如計算機語言、變量、函數(shù),所以剛開始學(xué)習(xí)會比較慢,但是沒關(guān)系,跟著書循序漸進,一直學(xué)習(xí)就行了。

    涉及到的主要知識點有:數(shù)據(jù)類型、變量與算術(shù)表達式、流程控制語句、函數(shù)、指針、結(jié)構(gòu)體、共用體、枚舉等等。其中指針是重點,還有在實際中用的比較多的回調(diào)函數(shù)要注意掌握。如果用Linux編譯的話,在學(xué)習(xí)的時候可以使用gdb進行調(diào)試。

    在學(xué)習(xí)的時候,每章節(jié)的課后編程練習(xí)至少要做三道。

    三、電路基礎(chǔ)

    嵌入式軟件相對于純軟件開發(fā),要多一點的就是對硬件要有所了解,對于簡單的原理圖的理解,只需要有初中的電路基礎(chǔ)就行了。但是要自己設(shè)計電路,涉及到三極管、放大器、濾波、運算器、數(shù)字元件等,就需要有更高的模擬/數(shù)字電路基礎(chǔ)了,這部分并不是我的強項。

    四、51單片機

    51單片機的軟件環(huán)境是Keil,使用的語言是C語言。

    有了C語言基礎(chǔ)之后,就可以學(xué)習(xí)51單片機了,51單片機是一種微型的控制器,開發(fā)方式是通過直接操作芯片寄存器操作外圍電路(如LED、紅外、電機等),從而實現(xiàn)整個的嵌入式系統(tǒng)(如機器人、報警器等)。學(xué)校普遍教的是51單片機,進階就是STM32之類的了,51和STM32的本質(zhì)是一樣的,不同的是STM32由于頻率和內(nèi)存更高,可以帶小型的操作系統(tǒng)(μC/OS、VxWorks、μClinux等)。

    單片機比較難的是要接受大量的硬件知識,然后買一塊51單片機的開發(fā)板(附帶數(shù)碼管、紅外、LCD、A/D、D/A、步進電機、溫度傳感器等外設(shè),詳細(xì)的資料),然后跟著書邊學(xué)習(xí)便實踐。學(xué)習(xí)單片機主要是為了掌握如何控制硬件,理解寄存器、引腳等概念。

    五、Linux C

    其實,在有了C語言基礎(chǔ)之后,先學(xué)單片機或者Linux C都可以,可以根據(jù)自己的興趣選擇先學(xué)哪一門。

    Linux 是嵌入式系統(tǒng)和服務(wù)器中使用多的系統(tǒng),這部分主要學(xué)習(xí)文件系統(tǒng)編程、網(wǎng)絡(luò)編程、多進程多線程編程等等。

    六、嵌入式系統(tǒng)

    Linux C用于構(gòu)建嵌入式應(yīng)用程序,而對于嵌入式系統(tǒng)的裁剪以及驅(qū)動編程卻沒有學(xué)習(xí),在這個部分,我們需要一塊ARM的開發(fā)板,推薦訊為的iTOP4412開發(fā)板,既支持Linux,又能運行Android的開發(fā)。然后跟著資料就可以開始學(xué)習(xí)了。

    總結(jié)

    以上,你應(yīng)該能夠勝任初級嵌入式軟件開發(fā)工作了,如應(yīng)用開發(fā)工程師或者驅(qū)動開發(fā)工程師。更多的經(jīng)驗就需要結(jié)合工作來提升了。

電話咨詢

電話咨詢

咨詢電話:
4008-569-579
回到頂部

回到頂部