怎么進(jìn)行嵌入式linux系統(tǒng)應(yīng)用開(kāi)發(fā)

這篇文章給大家介紹怎么進(jìn)行嵌入式linux系統(tǒng)應(yīng)用開(kāi)發(fā),內(nèi)容非常詳細(xì),感興趣的小伙伴們可以參考借鑒,希望對(duì)大家能有所幫助。

創(chuàng)新互聯(lián)建站主要從事成都網(wǎng)站設(shè)計(jì)、做網(wǎng)站、網(wǎng)頁(yè)設(shè)計(jì)、企業(yè)做網(wǎng)站、公司建網(wǎng)站等業(yè)務(wù)。立足成都服務(wù)裕民,10年網(wǎng)站建設(shè)經(jīng)驗(yàn),價(jià)格優(yōu)惠、服務(wù)專(zhuān)業(yè),歡迎來(lái)電咨詢(xún)建站服務(wù):18980820575

1 關(guān)于嵌入式系統(tǒng)

??平時(shí)大家說(shuō)的嵌入式其實(shí)范圍比較廣的,是一種軟硬件可裁剪,以應(yīng)用為中心開(kāi)發(fā)的專(zhuān)用系統(tǒng),硬件平臺(tái)可以是單片機(jī),或者以ARM系列的處理器。單片機(jī)一般直接裸奔程序,不過(guò)現(xiàn)在有了好多基于單片機(jī)的系統(tǒng),最近比較火的開(kāi)源系統(tǒng)RT-Thread,做的還是不錯(cuò)的;基于ARM架構(gòu)的處理器大部分用的是linux系統(tǒng)作為軟件平臺(tái),也有部分設(shè)備用的是安卓系統(tǒng)(內(nèi)核也是linux);

2 嵌入式linux系統(tǒng)應(yīng)用開(kāi)發(fā)

2.1 簡(jiǎn)介

??嵌入式系統(tǒng)開(kāi)發(fā)包括內(nèi)核、驅(qū)動(dòng)、應(yīng)用三大部分,今天主要說(shuō)應(yīng)用開(kāi)發(fā),內(nèi)核與驅(qū)動(dòng)就不多說(shuō)了。嵌入式linux系統(tǒng)就是移植的linux內(nèi)核,使用對(duì)應(yīng)的編譯器,把linux內(nèi)核編譯后下載到存儲(chǔ)芯片,然后還需要做一個(gè)基本的根文件系統(tǒng),這樣系統(tǒng)就可以跑起來(lái)了,相對(duì)于PC上的系統(tǒng),還是比較簡(jiǎn)單的。

2.2 應(yīng)用開(kāi)發(fā)環(huán)境

??現(xiàn)在網(wǎng)上有好多視頻教程,一般第一節(jié)課都會(huì)教你怎么搭建開(kāi)發(fā)環(huán)境。我這里簡(jiǎn)單羅列一下:

  1. 安裝一個(gè)linux系統(tǒng)的虛擬機(jī),我用的是Ubuntu。

  2. 然后給虛擬機(jī)安裝對(duì)應(yīng)的交叉編譯工具。

  3. 安裝常用工具,并配置:nfs、tftp、ftp、ssh服務(wù)、samba服務(wù)、vi必要的配置。

  4. 在板子上面使用nfs,還需要給板子的linux內(nèi)核配置上nfs-client和nfs文件系統(tǒng)支持;

  5. 我喜歡在板子上移植一些好用的工具,比如:ftp、ssh服務(wù)(終端登錄和傳文件用)、crontab等

虛擬機(jī)登錄:安裝ssh服務(wù), 后可以用一些終端軟件通過(guò)ssh登錄,這樣不用在虛擬機(jī)的桌面里使用terminal了
共享文件:我喜歡通過(guò)samba與windows共享目錄, 在windows下把共享目錄映射為網(wǎng)盤(pán),使用起來(lái)也比較方便;我覺(jué)得這種共享很方便,比使用一些共享軟件要方便。掛載為網(wǎng)盤(pán)后和操作本地磁盤(pán)一樣,比較直觀。

2.3 一般開(kāi)發(fā)流程

??在一些視頻教程中,一般介紹的開(kāi)發(fā)流程是這樣的:在windows下編輯好代碼,在虛擬機(jī)里使用交叉編譯器對(duì)代碼進(jìn)行交叉編譯,然后通過(guò)tftp/ftp下載到板子里,或者nfs掛載后運(yùn)行測(cè)試; 入門(mén)時(shí)是這樣,但是如果是在公司做實(shí)際的產(chǎn)品開(kāi)發(fā),這樣效率就會(huì)很低的。

??下面是我常用的流程:

  1. 在windows下或者虛擬機(jī)里編輯代碼,代碼編輯器一般用sourceInsight、VSCode、Eclipse等。

  2. 代碼在寫(xiě)的時(shí)候,注意把與底層硬件交互的地方加編譯選項(xiàng),這樣是通過(guò)編譯開(kāi)關(guān)控制硬件訪問(wèn)的代碼是否啟用。

  3. 第二步所做的工作,在這一步就起到了作用,在Makefile里,會(huì)寫(xiě)上根據(jù)不同的編譯選項(xiàng),選擇不同的編譯器,如果是使用Ubuntu里的編譯器,那么就把硬件相關(guān)的交互屏蔽,這樣編譯出來(lái)的程序,可以直接在Ubuntu上運(yùn)行了,這樣一來(lái),我們可以在Ubuntu上做代碼單元測(cè)試、程序的邏輯驗(yàn)證、運(yùn)行性能測(cè)試等。80%的問(wèn)題可以在Ubuntu里解決。

  4. 在Ubuntu里測(cè)試沒(méi)問(wèn)題后,在交叉編譯,通過(guò)nfs共享目錄,在板子里運(yùn)行調(diào)試。

??這樣其實(shí)是減少下載程序到板子上這個(gè)過(guò)程,把邏輯驗(yàn)證、代碼單元功能驗(yàn)證放在Ubuntu里來(lái)驗(yàn)證測(cè)試,而且Ubuntu里使用GDB調(diào)試也比較板子上方便。

2.4 調(diào)試

??最常用,也是最有效的方式就是加打印信息,記日志!基本上可以解決80%的問(wèn)題。如果遇到程序異常掛掉(比如段錯(cuò)誤等),程序掛掉一般沒(méi)有任何提示信息,也不確定是在那里掛掉的,這種問(wèn)題一般使用GDB跟蹤,或者在代碼里加入backtrace信息輸出的代碼。

3 結(jié)束語(yǔ)

??嵌入式linux系統(tǒng)應(yīng)用開(kāi)發(fā),相對(duì)于內(nèi)核、驅(qū)動(dòng)開(kāi)發(fā),入門(mén)可能是比較容易的,畢竟應(yīng)用層的開(kāi)發(fā),沒(méi)有那么多高深的東西。應(yīng)用層與具體業(yè)務(wù)關(guān)聯(lián)比較大,因此也就導(dǎo)致應(yīng)用開(kāi)發(fā)的工作量比較大,需求也會(huì)有經(jīng)常變更風(fēng)險(xiǎn),但是應(yīng)用開(kāi)發(fā)里會(huì)有好多技巧,可以大大提高工作效率;linux應(yīng)用可以使用C++進(jìn)行開(kāi)發(fā),利用C++的面向?qū)ο笏枷?,以及現(xiàn)在C++11之后的新特性功能,提供了好多類(lèi)似于Java里的一些好用的功能,可以大大提高應(yīng)用的開(kāi)發(fā)效率。

關(guān)于怎么進(jìn)行嵌入式linux系統(tǒng)應(yīng)用開(kāi)發(fā)就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,可以學(xué)到更多知識(shí)。如果覺(jué)得文章不錯(cuò),可以把它分享出去讓更多的人看到。

分享文章:怎么進(jìn)行嵌入式linux系統(tǒng)應(yīng)用開(kāi)發(fā)
分享路徑:http://bm7419.com/article12/psdddc.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供App設(shè)計(jì)、動(dòng)態(tài)網(wǎng)站、關(guān)鍵詞優(yōu)化、企業(yè)建站Google、品牌網(wǎng)站設(shè)計(jì)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶(hù)投稿、用戶(hù)轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

成都網(wǎng)站建設(shè)公司