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

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

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

ARM-Linux應用開發(fā)和單片機開發(fā)的不同

STM32嵌入式開發(fā) ? 來源:STM32嵌入式開發(fā) ? 2020-08-27 14:24 ? 次閱讀

針對ARM-Linux程序的開發(fā),主要分為三類:應用程序開發(fā)、驅(qū)動程序開發(fā)、系統(tǒng)內(nèi)核開發(fā),針對不同種類的軟件開發(fā),有其不同的特點。今天我們來看看ARM-Linux開發(fā)和MCU開發(fā)的不同點,以及ARM-Linux的基本開發(fā)環(huán)境。

ARM-Linux應用開發(fā)和單片機開發(fā)的不同

這里先要做一個說明,對于ARM的應用開發(fā)主要有兩種方式:一種是直接在ARM芯片上進行應用開發(fā),不采用操作系統(tǒng),也稱為裸機編程,這種開發(fā)方式主要應用于一些低端的ARM芯片上,其開發(fā)過程非常類似單片機,這里不多敘述。還有一種是在ARM芯片上運行操作系統(tǒng),對于硬件的操作需要編寫相應的驅(qū)動程序,應用開發(fā)則是基于操作系統(tǒng)的,這種方式的嵌入式應用開發(fā)與單片機開發(fā)差異較大。ARM-Linux應用開發(fā)和單片機的開發(fā)主要有以下幾點不同:

(1)應用開發(fā)環(huán)境的硬件設備不同

單片機:開發(fā)板,仿真器(調(diào)試器),USB線;ARM-Linux:開發(fā)板,網(wǎng)線,串口線,SD卡;

對于ARM-Linux開發(fā),通常是沒有硬件的調(diào)試器的,尤其是在應用開發(fā)的過程中,很少使用硬件的調(diào)試器,程序的調(diào)試主要是通過串口進行調(diào)試的;但是需要說明的是,對于ARM芯片也是有硬件仿真器的,但通常用于裸機開發(fā)。

(2)程序下載方式不同

單片機:仿真器(調(diào)試器)下載,或者是串口下載;

ARM-Linux:串口下載、tftp網(wǎng)絡下載、或者直接讀寫SD、MMC卡等存儲設備,實現(xiàn)程序下載;

這個與開發(fā)環(huán)境的硬件設備是有直接關系的,由于沒有硬件仿真器,故ARM-Linux開發(fā)時通常不采用仿真器下載;這樣看似不方便,其實給ARM-Linux的應用開發(fā)提供了更多的下載方式。

(3)芯片的硬件資源不同

單片機:通常是一個完整的計算機系統(tǒng),包含片內(nèi)RAM,片內(nèi)FLASH,以及UARTI2C、AD、DA等各種外設;

ARM:通常只有CPU,需要外部電路提供RAM以供ARM正常運行,外部電路提供FLASH、SD卡等存儲系統(tǒng)映像,并通過外部電路實現(xiàn)各種外設功能。由于ARM芯片的處理能力很強,通過外部電路可以實現(xiàn)各種復雜的功能,其功能遠遠強于單片機。

(4)固件的存儲位置不同

單片機:通常具備片內(nèi)flash存儲器,固件程序通常存儲在該區(qū)域,若固件較大則需要通過外部電路設計外部flash用于存儲固件。

ARM-Linux: 由于其沒有片內(nèi)的flash, 并且需要運行操作系統(tǒng),整個系統(tǒng)映像通常較大,故ARM-Linux開發(fā)的操作系統(tǒng)映像和應用通常存儲在外部的MMC、SD卡上,或者采用SATA設備等。

(5)啟動方式不同單片機:其結構簡單,內(nèi)部集成flash, 通常是芯片廠商在程序上電時加入固定的跳轉指令,直接跳轉到程序入口(通常在flash上);開發(fā)的應用程序通過編譯器編譯,采用專用下載工具直接下載到相應的地址空間;所以系統(tǒng)上電后直接運行到相應的程序入口,實現(xiàn)系統(tǒng)的啟動。

ARM-Linux:由于采用ARM芯片,執(zhí)行效率高,功能強大,外設相對豐富,是功能強大的計算機系統(tǒng),并且需要運行操作系統(tǒng),所以其啟動方式和單片機有較大的差別,但是和家用計算機的啟動方式基本相同。其啟動一般包括BIOS,bootloader,內(nèi)核啟動,應用啟動等階段;

(a)啟動BIOS: BIOS是設備廠家(芯片或者是電路板廠家)設置的相應啟動信息,在設備上電后,其將讀取相應硬件設備信息,進行硬件設備的初始化工作,然后跳轉到bootloader所在位置(該位置是一個固定的位置,由BIOS設置)。

根據(jù)個人理解,BIOS的啟動和單片機啟動類似,需要采用相應的硬件調(diào)試器進行固件的寫入,存儲在一定的flash 空間,設備上電啟動后讀取flash空間的指令,從而啟動BIOS程序。

(b)啟動bootloader: 該部分已經(jīng)屬于嵌入式Linux軟件開發(fā)的部分,可以通過代碼修改定制相應的bootloader程序,bootloader的下載通常是采用直接讀寫SD卡等方式。即編寫定制相應的bootloader,編譯生成bootloader映象文件后,利用工具(專用或通用)下載到SD卡的MBR區(qū)域(通常是存儲區(qū)的第一個扇區(qū))。此時需要在BIOS中設置,或者通過電路板的硬件電路設置,選擇bootloader的加載位置;若BIOS中設置從SD卡啟動,則BIOS初始化結束后,將跳轉到SD卡的位置去執(zhí)行bootloader,從而實現(xiàn)bootloader的啟動。

Bootloader主要作用是初始化必要的硬件設備,創(chuàng)建內(nèi)核需要的一些信息并將這些信息通過相關機制傳遞給內(nèi)核,從而將系統(tǒng)的軟硬件環(huán)境帶到一個合適的狀態(tài),最終調(diào)用操作系統(tǒng)內(nèi)核,真正起到引導和加載內(nèi)核的作用。

(c)啟動內(nèi)核 :bootloader啟動完成初始化等相關工作之后,將調(diào)用內(nèi)核啟動程序。這就進入了實際的操作系統(tǒng)相關內(nèi)容的啟動了,包括相應的硬件配置,任務管理,資源管理等內(nèi)核程序的啟動。

(d)啟動應用:在操作系統(tǒng)內(nèi)核啟動之后,就可以開始啟動需要的應用,去完成真正的業(yè)務操作了。

Arm-Linux 基本開發(fā)環(huán)境

前面介紹了ARM-Linux應用開發(fā)和單片機開發(fā)的不同之處,相信你已經(jīng)對ARM-Linux應用開發(fā)有了一個基本的認識了,下面將介紹一下ARM-Linux的基本開發(fā)環(huán)境。其主要包括硬件環(huán)境和軟件環(huán)境兩個部分,這里以iMX53和Ubuntu為例進行說明。

(1)硬件環(huán)境開發(fā)板:ARM運行的硬件環(huán)境,或者是相應項目的ARM電路板;

計算機:作為開發(fā)主機使用,安裝Linux(如Ubuntu)),或者采用虛擬機安裝Ubuntu;

串口線:用于開發(fā)過程中采用終端進行串口調(diào)試或下載程序;

網(wǎng)線:用于連接arm-board和開發(fā)主機,實現(xiàn)tftp下載內(nèi)核(程序等),通過網(wǎng)絡nfs運行程序等。SD卡(及讀卡器)或者其他存儲設備:用于存儲bootloader、內(nèi)核映像等,以及最終的軟件系統(tǒng)的存儲;開發(fā)過程中,通常用于保存bootloader,引導系統(tǒng)啟動。

(2)軟件環(huán)境

Ubuntu:作為操作系統(tǒng),是整個軟件開發(fā)環(huán)境的載體,相應的開發(fā)工具都布置在此系統(tǒng)中。

LtiB:這是freescale的提供的一個編譯工具鏈,能夠很方便的將源代碼文件編譯為適合的程序代碼,并對程序進行調(diào)試;用戶也可以通過下載源碼構建自己的編譯工具鏈。

tftp:用于從開發(fā)主機Ubuntu上向arm-board 下載內(nèi)核文件、應用文件等。

nfs網(wǎng)絡文件系統(tǒng):用于在開發(fā)主機上建立網(wǎng)絡nfs文件根系統(tǒng),arm-board通過nfs網(wǎng)絡文件系統(tǒng)讀取開發(fā)主機上的虛擬根文件系統(tǒng),完成系統(tǒng)的啟動;方便系統(tǒng)的開發(fā)與調(diào)試。

minicom:串口調(diào)試工具,用于在開發(fā)主機上與arm-board通信,實現(xiàn)對arm-board上應用程序的操作與調(diào)試;

Eclipse:集成開發(fā)環(huán)境,主要方便代碼的編輯、編譯等,也可采用DS5,realview等;或者采用gedit進行編輯,通過LTIB進行編譯和管理。

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

    關注

    146

    文章

    16900

    瀏覽量

    349940
  • ARM
    ARM
    +關注

    關注

    134

    文章

    9029

    瀏覽量

    366499
  • Linux
    +關注

    關注

    87

    文章

    11212

    瀏覽量

    208722

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

文章出處:【微信號:c-stm32,微信公眾號:STM32嵌入式開發(fā)】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    想入行單片機開發(fā)的學生們的忠告

    對于想入行單片機開發(fā)的學生們,以下是一些建議和忠告:
    的頭像 發(fā)表于 10-17 09:45 ?267次閱讀
    想入行<b class='flag-5'>單片機</b><b class='flag-5'>開發(fā)</b>的學生們的忠告

    單片機芯片開發(fā)-單片機方案開發(fā)的關鍵技巧和流程步驟!

    有多種架構的MCU可供選擇,如ARM、AVR和PIC等。根據(jù)項目需求,您可以選擇處理能力強、內(nèi)存充足、外設支持豐富的單片機。此外,開發(fā)工具的支持也是一個重要因素,良好的文檔和開發(fā)環(huán)境能
    發(fā)表于 09-26 17:04

    單片機STM32可以用Python寫嗎?可以的開發(fā)板有哪些?

    近年來,隨著嵌入式技術的發(fā)展,Python語言逐漸被引入到單片機開發(fā)中,尤其是一些高性能的單片機上。這一趨勢給開發(fā)者帶來了極大的便利,尤其是在快速原型設計和實驗中。本文將詳細探討STM
    的頭像 發(fā)表于 09-05 08:00 ?2019次閱讀
    <b class='flag-5'>單片機</b>STM32可以用Python寫嗎?可以的<b class='flag-5'>開發(fā)</b>板有哪些?

    linux開發(fā)板和單片機開發(fā)的區(qū)別

    硬件架構 Linux開發(fā)板和單片機開發(fā)在硬件架構上有很大的區(qū)別。Linux開發(fā)板通?;?/div>
    的頭像 發(fā)表于 08-30 15:30 ?571次閱讀

    單片機上位軟件用什么開發(fā)

    開發(fā)單片機上位軟件時,選擇合適的開發(fā)工具和編程語言至關重要。本文將詳細介紹單片機上位軟件開發(fā)
    的頭像 發(fā)表于 06-07 09:17 ?1126次閱讀

    PY32系列單片機開發(fā)板 常用型號都有 支持Keil,IAR進行開發(fā)

    普冉單片機是近幾年很火的國產(chǎn)32位單片機,主打高性能和高性價比,市場份額也是在持續(xù)上升。同等價位下難逢敵手,有著系統(tǒng)簡單、易于開發(fā)的特點。PY32系列單片機可應用于可穿戴、消費類、醫(yī)療
    的頭像 發(fā)表于 05-22 14:48 ?866次閱讀
    PY32系列<b class='flag-5'>單片機</b><b class='flag-5'>開發(fā)</b>板 常用型號都有 支持Keil,IAR進行<b class='flag-5'>開發(fā)</b>

    STM32單片機有哪幾種常見的開發(fā)環(huán)境?

    STM32單片機是一款廣泛應用于嵌入式系統(tǒng)開發(fā)單片機,針對其開發(fā),有以下幾種常見的方式:STM32單片機有哪幾種常見的
    的頭像 發(fā)表于 05-18 08:04 ?2791次閱讀
    STM32<b class='flag-5'>單片機</b>有哪幾種常見的<b class='flag-5'>開發(fā)</b>環(huán)境?

    單片機開發(fā)好學嗎?學習中有哪些樂趣與挑戰(zhàn)?

    單片機編程究竟是不是好學的問題。先來說一說單片機編程的挑戰(zhàn)性,對于初學者而言,單片機編程可能具有一定的挑戰(zhàn)性,因為它需要你具備以下幾點能力;單片機
    的頭像 發(fā)表于 03-28 08:04 ?1738次閱讀
    <b class='flag-5'>單片機</b><b class='flag-5'>開發(fā)</b>好學嗎?學習中有哪些樂趣與挑戰(zhàn)?

    應用單片機開發(fā)的ST LINK調(diào)試器設計制作

    在調(diào)試ST單片機的過程中,ST-LINK是一個很好使用的調(diào)試工具。今天,我們就根據(jù)網(wǎng)絡上的設計方案進行簡化,設計制作一個ST LINK調(diào)試器,用于之后的單片機開發(fā)
    發(fā)表于 03-06 10:26 ?988次閱讀
    應用<b class='flag-5'>單片機</b><b class='flag-5'>開發(fā)</b>的ST LINK調(diào)試器設計制作

    arm開發(fā)板如何安裝linux系統(tǒng)

    安裝Linux系統(tǒng)到ARM開發(fā)板是一個復雜的過程,涉及到多個步驟和不同的工具。下面是一個詳實且細致的教程,包含了從準備工作到最終啟動Linux系統(tǒng)的所有步驟。 準備工作 在開始之前,需
    的頭像 發(fā)表于 01-24 14:19 ?2762次閱讀

    51單片機開發(fā)板的主要功能 51單片機開發(fā)板能做什么

    51單片機開發(fā)板是一種基于8051系列單片機芯片的開發(fā)板,具有豐富的功能和廣泛的應用。下面將詳細介紹51單片機
    的頭像 發(fā)表于 01-23 15:52 ?3321次閱讀

    如何提升單片機開發(fā)技術?

    單片機開發(fā)是現(xiàn)代電子技術中的重要分支,其在各個領域都有著廣泛的應用。單片機開發(fā)技術的提升不僅可以提高工作效率,還可以提高工作質(zhì)量和創(chuàng)新能力。那么,如何提升
    發(fā)表于 01-05 10:14

    51單片機開發(fā)板原理圖介紹

    電子發(fā)燒友網(wǎng)站提供《51單片機開發(fā)板原理圖介紹.pdf》資料免費下載
    發(fā)表于 12-18 09:12 ?4次下載

    你用過哪些編程語言開發(fā)單片機?

    C語言是最常用的一種用于單片機開發(fā)語言,也是一種高級編程語言,具有較好的可移植性和可讀性。對于單片機,通常使用嵌入式C來進行開發(fā)。 舉例:用C語言寫一段STM32
    發(fā)表于 12-04 10:18 ?1224次閱讀

    單片機語音芯片開發(fā)要解決的問題

    單片機語音芯片開發(fā)中,需考慮功耗、語音識別準確率、尺寸和可靠性問題。通過優(yōu)化功耗、采用先進語音處理技術、創(chuàng)新電路設計和提高芯片的可靠性和穩(wěn)定性,可提升開發(fā)效果和用戶體驗。
    的頭像 發(fā)表于 11-23 15:19 ?572次閱讀