0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

ARM-Linux開發(fā)和MCU開發(fā)的不同點

Dp1040 ? 來源:玩點嵌入式 ? 2023-05-30 09:01 ? 次閱讀

針對ARM-Linux程序的開發(fā),主要分為三類:應(yīng)用程序開發(fā)、驅(qū)動程序開發(fā)、系統(tǒng)內(nèi)核開發(fā)。針對不同種類的軟件開發(fā),有其不同的特點。
今天,我們來看看ARM-Linux開發(fā)和MCU開發(fā)的不同點,以及ARM-Linux的基本開發(fā)環(huán)境。
一、ARM-Linux應(yīng)用開發(fā)和單片機開發(fā)的不同 這里先要做一個說明,對于ARM的應(yīng)用開發(fā)主要有兩種方式:一種是直接在ARM芯片上進行應(yīng)用開發(fā),不采用操作系統(tǒng),也稱為裸機編程,這種開發(fā)方式主要應(yīng)用于一些低端的ARM芯片上,其開發(fā)過程非常類似單片機,這里不多敘述。
還有一種是在ARM芯片上運行操作系統(tǒng),對于硬件的操作需要編寫相應(yīng)的驅(qū)動程序,應(yīng)用開發(fā)則是基于操作系統(tǒng)的,這種方式的嵌入式應(yīng)用開發(fā)與單片機開發(fā)差異較大。ARM-Linux應(yīng)用開發(fā)和單片機的開發(fā)主要有以下幾點不同:
1、應(yīng)用開發(fā)環(huán)境的硬件設(shè)備不同 單片機:開發(fā)板,仿真器(調(diào)試器),USB線。
ARM-Linux:開發(fā)板,網(wǎng)線,串口線,SD卡。
對于ARM-Linux開發(fā),通常是沒有硬件的調(diào)試器的,尤其是在應(yīng)用開發(fā)的過程中,很少使用硬件的調(diào)試器,程序的調(diào)試主要是通過串口進行調(diào)試的。但需要說明的是,對于ARM芯片也是有硬件仿真器的,但通常用于裸機開發(fā)。
2、程序下載方式不同

單片機:仿真器(調(diào)試器)下載,或者是串口下載。
ARM-Linux:串口下載、tftp網(wǎng)絡(luò)下載、或者直接讀寫SD、MMC卡等存儲設(shè)備,實現(xiàn)程序下載。
這個與開發(fā)環(huán)境的硬件設(shè)備是有直接關(guān)系的,由于沒有硬件仿真器,故ARM-Linux開發(fā)時通常不采用仿真器下載。這樣看似不方便,其實給ARM-Linux的應(yīng)用開發(fā)提供了更多的下載方式。
3、芯片的硬件資源不同 單片機:通常是一個完整的計算機系統(tǒng),包含片內(nèi)RAM,片內(nèi)FLASH,以及UART、I2C、AD、DA等各種外設(shè)。
ARM:通常只有CPU,需要外部電路提供RAM以供ARM正常運行,外部電路提供FLASH、SD卡等存儲系統(tǒng)映像,并通過外部電路實現(xiàn)各種外設(shè)功能。由于ARM芯片的處理能力很強,通過外部電路可以實現(xiàn)各種復(fù)雜的功能,其功能遠遠強于單片機。
4、固件的存儲位置不同 單片機:通常具備片內(nèi)flash存儲器,固件程序通常存儲在該區(qū)域,若固件較大則需要通過外部電路設(shè)計外部flash用于存儲固件。
ARM-Linux:由于其沒有片內(nèi)的flash,并且需要運行操作系統(tǒng),整個系統(tǒng)映像通常較大,故ARM-Linux開發(fā)的操作系統(tǒng)映像和應(yīng)用通常存儲在外部的MMC、SD卡上,或者采用SATA設(shè)備等。
5、啟動方式不同 單片機:其結(jié)構(gòu)簡單,內(nèi)部集成flash,通常是芯片廠商在程序上電時加入固定的跳轉(zhuǎn)指令,直接跳轉(zhuǎn)到程序入口(通常在flash上);開發(fā)的應(yīng)用程序通過編譯器編譯,采用專用下載工具直接下載到相應(yīng)的地址空間。所以,系統(tǒng)上電后直接運行到相應(yīng)的程序入口,實現(xiàn)系統(tǒng)的啟動。
ARM-Linux:由于采用ARM芯片,執(zhí)行效率高,功能強大,外設(shè)相對豐富,是功能強大的計算機系統(tǒng),并且需要運行操作系統(tǒng),所以其啟動方式和單片機有較大的差別,但是和家用計算機的啟動方式基本相同。其啟動一般包括BIOS,bootloader,內(nèi)核啟動,應(yīng)用啟動等階段。
(1)啟動BIOS:BIOS是設(shè)備廠家(芯片或者是電路板廠家)設(shè)置的相應(yīng)啟動信息,在設(shè)備上電后,其將讀取相應(yīng)硬件設(shè)備信息,進行硬件設(shè)備的初始化工作,然后跳轉(zhuǎn)到bootloader所在位置(該位置是一個固定的位置,由BIOS設(shè)置)。 根據(jù)個人理解,BIOS的啟動和單片機啟動類似,需要采用相應(yīng)的硬件調(diào)試器進行固件的寫入,存儲在一定的flash空間,設(shè)備上電啟動后讀取flash空間的指令,從而啟動BIOS程序。 (2)啟動bootloader:該部分已經(jīng)屬于嵌入式Linux軟件開發(fā)的部分,可以通過代碼修改定制相應(yīng)的bootloader程序,bootloader的下載通常是采用直接讀寫SD卡等方式。即編寫定制相應(yīng)的bootloader,編譯生成bootloader映象文件后,利用工具(專用或通用)下載到SD卡的MBR區(qū)域(通常是存儲區(qū)的第一個扇區(qū))。此時需要在BIOS中設(shè)置,或者通過電路板的硬件電路設(shè)置,選擇bootloader的加載位置;若BIOS中設(shè)置從SD卡啟動,則BIOS初始化結(jié)束后,將跳轉(zhuǎn)到SD卡的位置去執(zhí)行bootloader,從而實現(xiàn)bootloader的啟動。
Bootloader主要作用是初始化必要的硬件設(shè)備,創(chuàng)建內(nèi)核需要的一些信息并將這些信息通過相關(guān)機制傳遞給內(nèi)核,從而將系統(tǒng)的軟硬件環(huán)境帶到一個合適的狀態(tài),最終調(diào)用操作系統(tǒng)內(nèi)核,真正起到引導(dǎo)和加載內(nèi)核的作用。
(3)啟動內(nèi)核:bootloader啟動完成初始化等相關(guān)工作之后,將調(diào)用內(nèi)核啟動程序。這就進入了實際的操作系統(tǒng)相關(guān)內(nèi)容的啟動了,包括相應(yīng)的硬件配置,任務(wù)管理,資源管理等內(nèi)核程序的啟動。
(4)啟動應(yīng)用:在操作系統(tǒng)內(nèi)核啟動之后,就可以開始啟動需要的應(yīng)用,去完成真正的業(yè)務(wù)操作了。 二、Arm-Linux基本開發(fā)環(huán)境 前面介紹了ARM-Linux應(yīng)用開發(fā)和單片機開發(fā)的不同之處,相信你已經(jīng)對ARM-Linux應(yīng)用開發(fā)有了一個基本的認識了,下面將介紹一下ARM-Linux的基本開發(fā)環(huán)境。其主要包括硬件環(huán)境和軟件環(huán)境兩個部分,這里以iMX53和Ubuntu為例進行說明。

1、硬件環(huán)境 開發(fā)板:ARM運行的硬件環(huán)境,或者是相應(yīng)項目的ARM電路板。
計算機:作為開發(fā)主機使用,安裝Linux(如Ubuntu),或者采用虛擬機安裝Ubuntu。
串口線:用于開發(fā)過程中采用終端進行串口調(diào)試或下載程序。
網(wǎng)線:用于連接arm-board和開發(fā)主機,實現(xiàn)tftp下載內(nèi)核(程序等),通過網(wǎng)絡(luò)nfs運行程序等。
SD卡(及讀卡器)或者其他存儲設(shè)備:用于存儲bootloader、內(nèi)核映像等,以及最終的軟件系統(tǒng)的存儲;開發(fā)過程中,通常用于保存bootloader,引導(dǎo)系統(tǒng)啟動。
2、軟件環(huán)境 Ubuntu:作為操作系統(tǒng),是整個軟件開發(fā)環(huán)境的載體,相應(yīng)的開發(fā)工具都布置在此系統(tǒng)中。
LTIB:這是freescale的提供的一個編譯工具鏈,能夠很方便的將源代碼文件編譯為適合的程序代碼,并對程序進行調(diào)試;用戶也可以通過下載源碼構(gòu)建自己的編譯工具鏈。
tftp:用于從開發(fā)主機Ubuntu上向arm-board下載內(nèi)核文件、應(yīng)用文件等。
nfs網(wǎng)絡(luò)文件系統(tǒng):用于在開發(fā)主機上建立網(wǎng)絡(luò)nfs文件根系統(tǒng),arm-board通過nfs網(wǎng)絡(luò)文件系統(tǒng)讀取開發(fā)主機上的虛擬根文件系統(tǒng),完成系統(tǒng)的啟動;方便系統(tǒng)的開發(fā)與調(diào)試。
minicom:串口調(diào)試工具,用于在開發(fā)主機上與arm-board通信,實現(xiàn)對arm-board上應(yīng)用程序的操作與調(diào)試。
Eclipse:集成開發(fā)環(huán)境,主要方便代碼的編輯、編譯等,也可采用DS5,RealView等;或者采用gedit進行編輯,通過LTIB進行編譯和管理。

審核編輯:彭靜
聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • mcu
    mcu
    +關(guān)注

    關(guān)注

    146

    文章

    16796

    瀏覽量

    349331
  • ARM
    ARM
    +關(guān)注

    關(guān)注

    134

    文章

    9006

    瀏覽量

    366025
  • Linux
    +關(guān)注

    關(guān)注

    87

    文章

    11161

    瀏覽量

    208461
  • 調(diào)試器
    +關(guān)注

    關(guān)注

    1

    文章

    297

    瀏覽量

    23628

原文標題:ARM-Linux開發(fā)與MCU開發(fā)有何不同?

文章出處:【微信號:玩點嵌入式,微信公眾號:玩點嵌入式】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    單片機開發(fā)Linux開發(fā)區(qū)別 精選資料分享

    針對ARM-Linux程序的開發(fā),主要分為三類:應(yīng)用程序開發(fā)、驅(qū)動程序開發(fā)、系統(tǒng)內(nèi)核開發(fā),針對不同種類的軟件
    發(fā)表于 07-13 08:14

    單片機開發(fā)Linux開發(fā)區(qū)別 精選資料推薦

    針對ARM-Linux程序的開發(fā),主要分為三類:應(yīng)用程序開發(fā)、驅(qū)動程序開發(fā)、系統(tǒng)內(nèi)核開發(fā),針對不同種類的軟件
    發(fā)表于 07-13 08:46

    單片機開發(fā)Linux開發(fā)有何不同? 精選資料分享

    針對ARM-Linux程序的開發(fā),主要分為三類:應(yīng)用程序開發(fā)、驅(qū)動程序開發(fā)、系統(tǒng)內(nèi)核開發(fā),針對不同種類的軟件
    發(fā)表于 07-13 08:50

    單片機開發(fā)Linux開發(fā)有何不同?精選資料分享

    針對ARM-Linux程序的開發(fā),主要分為三類:應(yīng)用程序開發(fā)、驅(qū)動程序開發(fā)、系統(tǒng)內(nèi)核開發(fā),針對不同種類的軟件
    發(fā)表于 07-13 07:36

    單片機開發(fā)Linux開發(fā)有何不同? 精選資料推薦

    針對ARM-Linux程序的開發(fā),主要分為三類:應(yīng)用程序開發(fā)、驅(qū)動程序開發(fā)、系統(tǒng)內(nèi)核開發(fā),針對不同種類的軟件
    發(fā)表于 07-16 06:38

    看看ARM-Linux開發(fā)MCU開發(fā)不同點

    針對ARM-Linux程序的開發(fā),主要分為三類:應(yīng)用程序開發(fā)、驅(qū)動程序開發(fā)、系統(tǒng)內(nèi)核開發(fā),針對不同種類的軟件
    發(fā)表于 07-16 07:40

    ARM-Linux開發(fā)MCU開發(fā)不同點在哪

    ARM-Linux程序的開發(fā)主要分為哪幾類?ARM-Linux應(yīng)用開發(fā)和單片機開發(fā)有何不同?ARM-L
    發(fā)表于 08-02 08:32

    ARM-Linux開發(fā)MCU開發(fā)不同點有哪些

    ARM-Linux程序的開發(fā)主要分為幾類?ARM-Linux開發(fā)MCU開發(fā)
    發(fā)表于 10-22 07:07

    ARM-Linux開發(fā)MCU開發(fā)有何不同

    ARM-Linux開發(fā)MCU開發(fā)不同點,以及ARM-Linux的基本
    發(fā)表于 11-03 06:17

    ARM-Linux程序的開發(fā)主要分為哪幾類

    針對ARM-Linux程序的開發(fā),主要分為三類:應(yīng)用程序開發(fā)、驅(qū)動程序開發(fā)、系統(tǒng)內(nèi)核開發(fā),針對不同種類的軟件
    發(fā)表于 12-09 07:50

    ARM-Linux開發(fā)MCU開發(fā)有何不同?上篇

    ARM-Linux開發(fā)MCU開發(fā)不同點,以及ARM-Linux的基本
    發(fā)表于 10-28 19:36 ?6次下載
    <b class='flag-5'>ARM-Linux</b><b class='flag-5'>開發(fā)</b>與<b class='flag-5'>MCU</b><b class='flag-5'>開發(fā)</b>有何不同?上篇

    ARM-Linux開發(fā)MCU開發(fā)的各自優(yōu)勢?

    針對ARM-Linux程序的開發(fā),主要分為三類:應(yīng)用程序開發(fā)、驅(qū)動程序開發(fā)、系統(tǒng)內(nèi)核開發(fā),針對不同種類的軟件
    發(fā)表于 02-10 09:36 ?0次下載
    <b class='flag-5'>ARM-Linux</b><b class='flag-5'>開發(fā)</b>與<b class='flag-5'>MCU</b><b class='flag-5'>開發(fā)</b>的各自優(yōu)勢?

    ARM-Linux開發(fā)MCU開發(fā)不同點

    針對ARM-Linux程序的開發(fā),主要分為三類:應(yīng)用程序開發(fā)、驅(qū)動程序開發(fā)、系統(tǒng)內(nèi)核開發(fā)。針對不同種類的軟件
    的頭像 發(fā)表于 06-22 11:46 ?839次閱讀

    ARM-Linux開發(fā)MCU開發(fā)不同點 ARM-Linux的基本開發(fā)環(huán)境

    針對 ARM-Linux 程序的開發(fā),主要分為三類:應(yīng)用程序開發(fā)、驅(qū)動程序開發(fā)、系統(tǒng)內(nèi)核開發(fā),針對不同種類的軟件
    的頭像 發(fā)表于 08-07 16:23 ?681次閱讀

    看看ARM-Linux開發(fā)MCU開發(fā)不同點

    針對ARM-Linux程序的開發(fā),主要分為三類:應(yīng)用程序開發(fā)、驅(qū)動程序開發(fā)、系統(tǒng)內(nèi)核開發(fā)。針對不同種類的軟件
    發(fā)表于 07-25 09:25 ?1088次閱讀