STM32與i.MX6ULL內存與存儲機制全解析:從微控制器到應用處理器的設計差異

最近做FreeRTos,以及前面設計的RVOS,這種RTOS級別的系統內存上的分布與CortexA系列里面的分布有相當大的區別,給我搞糊涂了。

目錄

  1. STM32(Cortex-M系列)的內存與存儲機制

    • Flash存儲內容
    • RAM存儲內容
    • 啟動與運行時流程
    • 示例代碼解析
  2. i.MX6ULL(Cortex-A系列)的內存與存儲機制

    • 物理內存布局
    • 程序存儲與加載流程
    • 多級啟動過程
    • 裸機程序處理
  3. STM32與i.MX6ULL的關鍵差異對比

    • 架構設計差異
    • 存儲與啟動流程對比
    • 內存管理機制
  4. 總結與適用場景


1. STM32(Cortex-M系列)的內存與存儲機制

Flash存儲內容

  • 程序代碼:所有編譯后的機器指令。
  • 常量數據const修飾的全局變量、字符串常量。
  • 初始化數據:全局/靜態變量的初始值(運行時復制到RAM)。

RAM存儲內容

  • 堆棧(Stack):局部變量、函數調用上下文。
  • 堆(Heap):動態分配的內存(malloc/new)。
  • 全局/靜態變量:運行時實際存儲位置(含.data.bss段)。

啟動與運行時流程

  1. 上電啟動

    • CPU從Flash固定地址(0x08000000)讀取復位向量,執行啟動代碼(Reset_Handler)。
    • 啟動代碼將.data段(初始化數據)從Flash復制到RAM,并清零.bss段。
  2. 指令執行

    • CPU通過指令總線直接從Flash讀取指令。
    • 通過ART加速器或預取隊列優化訪問延遲。

示例代碼

const int FLASH_CONST = 100;    // 存儲在Flash
int ram_var = 42;               // 初始值在Flash,運行時在RAMvoid main() {int stack_var;              // 棧中分配(RAM)static int static_var;      // .bss段(RAM)
}

2. i.MX6ULL(Cortex-A系列)的內存與存儲機制

物理內存布局(以1GB DDR為例)

地址范圍用途
0x80000000 ~ ...Linux內核空間
0x90000000 ~ ...用戶空間(應用程序、堆棧)
保留區域GPU/VPU內存、DMA緩沖區

程序存儲與加載流程

  • 存儲介質:eMMC、SD卡、NAND Flash等。
  • 多級啟動過程
    1. Boot ROM:固化在芯片內部,加載第一級引導程序(如U-Boot)到片內OCRAM。
    2. Bootloader(U-Boot)
      • 初始化硬件(DDR、外設)。
      • 從存儲設備加載內核鏡像(zImage)、設備樹(.dtb)、根文件系統到DDR。
    3. Linux內核:解壓并初始化MMU、進程管理等,掛載根文件系統。
    4. 用戶程序:從文件系統加載到DDR用戶空間執行。

裸機程序處理

  • 鏈接腳本示例
    MEMORY {RAM (rwx) : ORIGIN = 0x80000000, LENGTH = 512M
    }
    SECTIONS {.text : { *(.text) } > RAM   /* 代碼段 */.data : { *(.data) } > RAM   /* 初始化數據 */.bss : { *(.bss) } > RAM     /* 未初始化數據 */
    }
    

3. STM32與i.MX6ULL的關鍵差異對比

特性STM32(Cortex-M)i.MX6ULL(Cortex-A)
核心定位實時控制(微控制器)復雜應用(應用處理器)
指令執行位置直接在Flash中執行必須加載到RAM執行
內存管理無MMU,直接訪問物理地址支持MMU和虛擬內存
啟動流程單階段啟動(Flash → 運行)多階段啟動(Boot ROM → U-Boot → Kernel)
典型存儲介質片內FlasheMMC、SD卡、NAND Flash
典型應用場景實時控制、傳感器處理嵌入式Linux、GUI應用、多媒體處理

4. 總結與適用場景

STM32的適用場景

  • 實時性要求高(如電機控制、工業自動化)。
  • 資源受限(小內存、低功耗)。
  • 無需復雜操作系統支持。

i.MX6ULL的適用場景

  • 需要運行Linux/Android等操作系統。
  • 處理多媒體、網絡通信等復雜任務。
  • 外設接口豐富(如GPU、攝像頭接口)。

設計哲學差異

  • STM32:簡單直接,強調實時性和確定性。
  • i.MX6ULL:通過多級抽象(MMU、虛擬內存)支持復雜應用,犧牲部分實時性換取靈活性。

相關技術點擴展

  • STM32啟動文件(startup.s)詳解
  • i.MX6ULL U-Boot移植實戰
  • ARM Cortex-M與Cortex-A架構對比

關注作者,獲取更多嵌入式開發干貨!


版權聲明:本文為博主原創文章,遵循 CC 4.0 BY-SA 版權協議,轉載請附上原文出處鏈接和本聲明。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/78123.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/78123.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/78123.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Eteam 0.3版本開發規劃

Eteam 0.1系列經歷了3個小版本,主要完成了團隊資料庫功能。 Eteam 0.2系列經歷了22個小版本,主要完成了白板和AI交互的能力。 目前的問題 目前白板上的數據有兩個來源,團隊資料庫和外部數據。外部數據和團隊資料庫數據邊界不是很清晰。 0.3版…

HTML5好看的水果蔬菜在線商城網站源碼系列模板5

文章目錄 1.設計來源1.1 主界面1.2 關于我們1.3 商品服務1.4 果蔬展示1.5 聯系我們1.6 商品具體信息1.7 登錄注冊 2.效果和源碼2.1 動態效果2.2 源代碼 源碼下載萬套模板,程序開發,在線開發,在線溝通 作者:xcLeigh 文章地址&#…

深入理解Java包裝類:自動裝箱拆箱與緩存池機制

深入理解Java包裝類:自動裝箱拆箱與緩存池機制 對象包裝器 Java中的數據類型可以分為兩類:基本類型和引用類型。作為一門面向對象編程語言, 一切皆對象是Java語言的設計理念之一。但基本類型不是對象,無法直接參與面向對象操作&…

uniapp自定義拖拽排列

uniapp自定義拖拽排列并改變下標 <!-- 頁面模板 --> <template><view class"container"><view v-for"(item, index) in list" :key"item.id" class"drag-item" :style"{transform: translate(${activeInde…

基于SpringBoot的課程管理系統

前言 今天給大家分享一個基于SpringBoot的課程管理系統。 1 系統介紹 課程管理系統是一種專門為學校設計的軟件系統&#xff0c;旨在幫助學校高效地管理和組織各類課程信息。 該系統通常包括學生、教師和管理員三大角色。 他們可以通過系統進行選課、查看課程表、考試、進…

max31865典型電路

PT100讀取有很多種方案&#xff0c;常用的惠斯通電橋&#xff0c;和專用IC max31865 。 電阻溫度檢測器(RTD)是一種阻值隨溫度變化的電阻。鉑是最常見、精度最高的測溫金屬絲材料。鉑RTD稱為PT-RTD&#xff0c;鎳、銅和其它金屬亦可用來制造RTD。RTD具有較寬的測溫范圍&#x…

飛算 JavaAI 與 Spring Boot:如何實現微服務開發效率翻倍?

微服務架構憑借其高內聚、低耦合的特性&#xff0c;成為企業構建復雜應用系統的首選方案。然而&#xff0c;傳統微服務開發流程中&#xff0c;從服務拆分、接口設計到代碼編寫、調試部署&#xff0c;往往需要耗費大量時間與人力成本。Spring Boot 作為 Java 領域最受歡迎的微服…

(2)Docker 常用命令

文章目錄 Docker 服務器Docker 鏡像Docker 容器本地 RegistryRUN vs CMD vs ENTRYPOINTRUNCMDENTRYPOINT 限制容器對內存、CPU 和 IO 資源的使用內存CPUBlock IO設置權重bps 和 iops cgroup 和 namespacecgroupnamespacMount namespaceUTS namespaceIPC namespacePID namespace…

Django 實現電影推薦系統:從搭建到功能完善(附源碼)

前言&#xff1a;本文將詳細介紹如何使用 Django 構建一個電影推薦系統&#xff0c;涵蓋項目的搭建、數據庫設計、視圖函數編寫、模板渲染以及用戶認證等多個方面。&#x1f517;軟件安裝、環境準備 ? 【作者主頁—&#x1f4da;閱讀更多優質文章、獲取更多優質源碼】 目錄 一…

C#進階學習(七)常見的泛型數據結構類(2)HashSet和SortedSet

目錄 using System.Collections.Generic; // 核心命名空間 一、 HashSet 核心特性 常用方法 屬性 二、SortedSet 核心特性 1、整型&#xff08;int、long 等&#xff09; 2、字符串型&#xff08;string&#xff09; 3、字符型&#xff08;char&#xff09; 4、自定義…

SQL之DML(查詢語句:select、where)

&#x1f3af; 本文專欄&#xff1a;MySQL深入淺出 &#x1f680; 作者主頁&#xff1a;小度愛學習 select查詢語句 在開發中&#xff0c;查詢語句是使用最多&#xff0c;也是CRUD中&#xff0c;復雜度最高的sql語句。 查詢的語法結構 select *|字段1 [, 字段2 ……] from 表…

vue | 不同 vue 版本對復雜泛型的支持情況 · vue3.2 VS vue3.5

省流總結&#xff1a;defineProps 的泛型能力&#xff0c;來直接推導第三方組件的 props 類型 引入第三方庫的類型&#xff0c;并直接在 <script setup> 中作為 props 使用。這種類型一般是復雜泛型&#xff08;包含聯合類型、可選屬性、交叉類型、條件類型等&#xff0…

Unity-無限滾動列表實現Timer時間管理實現

今天我們來做一個UI里經常做的東西&#xff1a;無限滾動列表。 首先我們得寫清楚實現的基本思路&#xff1a; 所謂的無限滾動當然不是真的無限滾動&#xff0c;我們只要把離開列表的框再丟到列表的后面就行&#xff0c;核心理念和對象池是類似的。 我們來一點一點實現&#x…

Docker的基本概念和一些運用場景

Docker 是一種開源的容器化平臺&#xff0c;可以幫助開發人員更加高效地打包、發布和運行應用程序。以下是 Docker 的基本概念和優勢&#xff1a; 基本概念&#xff1a; 容器&#xff1a;Docker 使用容器來打包應用程序及其依賴項&#xff0c;容器是一個獨立且可移植的運行環境…

Unity中基于第三方插件擴展的對于文件流處理的工具腳本

在Unity的項目中對應文件處理,在很多地方用到,常見的功能,就是保存文件,加載文件,判斷文件或者文件夾是否存在,刪除文件等。 在之前已經寫過通過C#的IO實現的這些功能,可查看《Unity C# 使用IO流對文件的常用操作》,但是不能保證所有平臺都可以使用 現在基于第三方跨…

Flink介紹——實時計算核心論文之MillWheel論文詳解

引入 通過前面的文章&#xff0c;我們從S4到Storm&#xff0c;再到Storm結合Kafka成為當時的實時處理最佳實踐&#xff1a; S4論文詳解S4論文總結Storm論文詳解Storm論文總結Kafka論文詳解Kafka論文總結 然而KafkaStorm的第一代流式數據處理組合&#xff0c;還面臨的三個核心…

python異步協程async調用過程圖解

1.背景&#xff1a; 項目中有用到協程&#xff0c;但是對于協程&#xff0c;線程&#xff0c;進程的區別還不是特別了解&#xff0c;所以用圖示的方式畫了出來&#xff0c;用于理清三者的概念。 2.概念理解&#xff1a; 2.1協程&#xff0c;線程&#xff0c;進程包含關系 一…

【React】獲取元素距離頁面頂部的距離

文章目錄 代碼實現 代碼實現 import { useEffect, useRef, useState } from react;const DynamicPositionTracker () > {const [distance, setDistance] useState(0);const divRef useRef(null);useEffect(() > {const targetDiv divRef.current;if (!targetDiv) re…

26.OpenCV形態學操作

OpenCV形態學操作 形態學操作&#xff08;Morphological Operations&#xff09;源自二值圖像處理&#xff0c;主要用于分析和處理圖像中的結構元素&#xff0c;對圖像進行去噪、提取邊緣、分割等預處理步驟。OpenCV庫中提供了豐富的形態學函數&#xff0c;常見的包括&#xf…

邏輯回歸:損失和正則化技術的深入研究

邏輯回歸&#xff1a;損失和正則化技術的深入研究 引言 邏輯回歸是一種廣泛應用于分類問題的統計模型&#xff0c;尤其在機器學習領域中占據著重要的地位。盡管其名稱中包含"回歸"&#xff0c;但邏輯回歸本質上是一種分類算法。它的核心思想是在線性回歸的基礎上添…