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

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

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

用于單片機的uCLinux和Linux有什么區(qū)別?

strongerHuang ? 來源:strongerHuang ? 2023-05-17 10:45 ? 次閱讀

uCLinux:micro-Control linux,即“針對微控制器領(lǐng)域中的Linux系統(tǒng)”。

uCLinux主要是針對目標處理器沒有存儲管理單元MMU(Memory Management Unit)的嵌入式系統(tǒng)而設(shè)計的。它已經(jīng)被成功地移植到了很多平臺上。由于沒有MMU,其多任務(wù)的實現(xiàn)需要一定技巧。 ---來自百度百度

分享正文之前,給大家推薦一些嵌入式相關(guān)的招聘信息

uClinux是針對控制領(lǐng)域的嵌入式linux操作系統(tǒng),它從Linux 2.0/2.4內(nèi)核派生而來,沿襲了主流Linux的絕大部分特性。適合不具備內(nèi)存管理單元(MMU)的微處理器/微控制器,沒有MMU支持是 uClinux與主流Linux的基本差異。

有無MMU區(qū)別

如果處理器沒有MMU,或者有MMU但沒有啟用,CPU執(zhí)行單元發(fā)出的內(nèi)存地址將直接傳到芯片引腳上,被內(nèi)存芯片接收,這稱為物理地址(Physical Address),如下圖:

ce83bb08-f45b-11ed-90ce-dac502259ad0.png

未使用MMU 如果處理器啟用了MMU,CPU執(zhí)行單元發(fā)出的內(nèi)存地址將被MMU截獲,從CPU到MMU的地址稱為虛擬地址(Virtual Address),而MMU將這個地址翻譯成另一個地址發(fā)到CPU芯片的外部地址引腳上,也就是將虛擬地址映射成物理地址,如下圖:

ce890676-f45b-11ed-90ce-dac502259ad0.png

使用了MMU 對uCLinux 來說,其設(shè)計針對沒有MMU的處理器,不能使用處理器的虛擬內(nèi)存管理技術(shù)。uCLinux仍然采用存儲器的分頁管理,系統(tǒng)在啟動時把實際存儲器進行分頁。在加載應(yīng)用程序時程序分頁加載。但是由于沒有MMU管理,所以實際上uCLinux采用實存儲器管理策略。 uCLinux系統(tǒng)對于內(nèi)存的訪問是直接的,所有程序中訪問的地址都是實際的物理地址。操作系統(tǒng)對內(nèi)存空間沒有保護,各個進程實際上共享一個運行空間。一個進程在執(zhí)行前,系統(tǒng)必須為進程分配足夠的連續(xù)地址空間,然后全部載入主存儲器的連續(xù)空間中。

uCLinux與Linux幾點區(qū)別

uCLinux與Linux相比,MMU是最基礎(chǔ)的區(qū)別,其實還有很多區(qū)別。 1.沒有內(nèi)存保護沒有內(nèi)存保護的操作會導(dǎo)致這樣的結(jié)果: 即使由無特權(quán)的進程來調(diào)用一個無效指針,也會觸發(fā)一個地址錯誤,并潛在地引起程序崩潰,甚至導(dǎo)致系統(tǒng)的掛起。顯然,在這樣的系統(tǒng)上運行的代碼必須仔細編程,并深入測試來確保健壯性和安全。 對于普通的Linux來說,需要運行不同的用戶程序,如果沒有內(nèi)存保護將大大降低系統(tǒng)的安全性和可靠性;然而對于嵌入式uClinux系統(tǒng)而言,由于所運行的程序往往是在出廠前已經(jīng)固化的,不存在危害系統(tǒng)安全的程序侵入的隱患,因此只要應(yīng)用程序經(jīng)過較完整的測試,出現(xiàn)問題的概率就可以控制在有限的范圍內(nèi)。 2.沒有自動生長的堆棧uCLinux沒有自動生長的堆棧,也沒有brk()函數(shù),這樣,用戶空間的程序必須使用mmap() 命令來分配內(nèi)存。為了方便,在uclinux的C語言庫中所實現(xiàn)的malloc()實質(zhì)上就是一個mmap()。在編譯時,可以指定程序的堆棧大小。 3.通用架構(gòu)的內(nèi)核不同在uCLinux的發(fā)布中,/linux/mmnommu目錄取代了/linux/mm目錄.前者是修改后的內(nèi)存管理子系統(tǒng) 被修改,去除了MMU的硬件依賴,并在內(nèi)核軟件自身提供基本的內(nèi)存管理函數(shù)。 更多區(qū)別,大家可以進一步研究。 四、uCLinux和STM32uCLinux主要用于MCU和MPU,對于市面上常見的STM32也是做了很好的支持。

ce9089d2-f45b-11ed-90ce-dac502259ad0.jpg

關(guān)于uCLinux如何應(yīng)用在STM32上,這里不詳細講述,感興趣的可以自行網(wǎng)上了解,有很多相關(guān)資料

ce96f344-f45b-11ed-90ce-dac502259ad0.jpg

審核編輯 :李倩

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

    關(guān)注

    48

    文章

    7399

    瀏覽量

    150667
  • 單片機
    +關(guān)注

    關(guān)注

    6026

    文章

    44460

    瀏覽量

    631163
  • Linux
    +關(guān)注

    關(guān)注

    87

    文章

    11182

    瀏覽量

    208518
收藏 人收藏

    評論

    相關(guān)推薦

    用于單片機uCLinuxLinux什么區(qū)別

    uCLinux: micro-Control linux,即“針對微控制器領(lǐng)域中的Linux系統(tǒng)”。
    發(fā)表于 05-17 10:45 ?526次閱讀
    <b class='flag-5'>用于</b><b class='flag-5'>單片機</b>的<b class='flag-5'>uCLinux</b>和<b class='flag-5'>Linux</b><b class='flag-5'>有</b><b class='flag-5'>什么區(qū)別</b>?

    ARM和單片機什么區(qū)別

    ARM和單片機什么區(qū)別
    發(fā)表于 03-12 06:58

    單片機學(xué)習(xí)與基于ARM+Linux裸機學(xué)習(xí)什么區(qū)別

    單片機學(xué)習(xí)與基于ARM+Linux裸機學(xué)習(xí)什么區(qū)別?
    發(fā)表于 01-19 07:44

    FPGA和單片機什么區(qū)別?

    FPGA和單片機什么區(qū)別?好像性能參數(shù)上也差不了太多。
    發(fā)表于 11-02 07:34

    FPGA和單片機什么區(qū)別呢?

    到底FPGA和單片機什么區(qū)別呢?根據(jù)我的經(jīng)驗,可以用下面進行概述。
    發(fā)表于 02-11 08:00 ?4.3w次閱讀

    單片機通信uart和modbus什么區(qū)別

    單片機通信uart和modbus什么區(qū)別,modbus是一個應(yīng)用層的協(xié)議,他是構(gòu)建在串口,網(wǎng)線等底層傳輸基礎(chǔ)上的。uart只是串口協(xié)議而已。
    的頭像 發(fā)表于 04-11 17:02 ?2w次閱讀

    瑞薩單片機和51單片機什么區(qū)別

    瑞薩單片機和51單片機什么區(qū)別? 瑞薩單片機8位32位
    發(fā)表于 10-10 08:00 ?45次下載

    DSP與單片機到底什么區(qū)別

    什么區(qū)別看到某論壇一篇關(guān)于DSP和單片機區(qū)別的帖子,經(jīng)過仔細整理,現(xiàn)在再次介紹DSP與單片機區(qū)別,同時讓自己重溫一下 DSP與
    發(fā)表于 09-24 17:18 ?6次下載
    DSP與<b class='flag-5'>單片機</b>到底<b class='flag-5'>有</b><b class='flag-5'>什么區(qū)別</b>

    單片機中C51的關(guān)系與&&和位&的什么區(qū)別

    本文檔的主要內(nèi)容詳細介紹的是單片機中C51的關(guān)系與&&和位&的什么區(qū)別。
    發(fā)表于 07-09 17:40 ?1次下載
    <b class='flag-5'>單片機</b>中C51的關(guān)系與&&和位&的<b class='flag-5'>有</b><b class='flag-5'>什么區(qū)別</b>

    51單片機中變量的存儲類型什么區(qū)別

    本文檔的主要內(nèi)容詳細介紹的是51單片機中變量的存儲類型什么區(qū)別
    發(fā)表于 07-03 17:41 ?0次下載
    51<b class='flag-5'>單片機</b>中變量的存儲類型<b class='flag-5'>有</b><b class='flag-5'>什么區(qū)別</b>

    單片機中斷與CPU的輪詢什么區(qū)別

    單片機編程過程中,經(jīng)常會使用到中斷。那么,什么是單片機中斷,它與CPU的輪詢什么區(qū)別?在本文中,單片機開發(fā)工程師將對
    發(fā)表于 06-29 11:30 ?3569次閱讀

    單片機和plc什么區(qū)別

    單片機和plc之間什么區(qū)別?首先單片機是芯片,不能獨立使用。而PLC是由單片機組成的通用控制器,可以直接使用。
    發(fā)表于 07-20 09:47 ?9524次閱讀

    單片機和PLC什么區(qū)別?

    單片機和PLC什么區(qū)別?
    發(fā)表于 11-13 19:21 ?11次下載
    <b class='flag-5'>單片機</b>和PLC<b class='flag-5'>有</b><b class='flag-5'>什么區(qū)別</b>?

    單片機和PLC什么區(qū)別

    單片機和PLC什么區(qū)別?
    發(fā)表于 11-23 16:21 ?79次下載
    <b class='flag-5'>單片機</b>和PLC<b class='flag-5'>有</b><b class='flag-5'>什么區(qū)別</b>?

    Linux基礎(chǔ)入門:單片機Linux什么不同嗎

    我發(fā)現(xiàn)很多初學(xué)者只有單片機基礎(chǔ),甚至沒有單片機基礎(chǔ)。在學(xué)習(xí)Linux時,對很多概念比較陌生,導(dǎo)致不知道學(xué)什么,也不知道學(xué)了之后有什么用。所以小編在此分享此文。第1章 單片機
    發(fā)表于 12-07 17:36 ?4次下載
    <b class='flag-5'>Linux</b>基礎(chǔ)入門:<b class='flag-5'>單片機</b>和<b class='flag-5'>Linux</b><b class='flag-5'>有</b>什么不同嗎