ARM Cortex-M3/M4 啟動分析


ARM Cortex-M3/M4啟動分析

序:

  之前在進行嵌入式開發的時候,並沒有太過於關注ARM芯片的啟動邏輯,現在IMXRT1052的學習過程中,發現了還真的老老實實的回去學習一下關於Cortex-M的啟動邏輯和原理,才能愜意的玩轉IMXRT芯片!此處做個隨筆,主要是方便自己回顧,溫故而知新嘛!

關鍵:

  要分析cortex-m的啟動原理需要從兩個方面入手

  1、芯片的memory map

  2、鏈接文件

Memory Map:

  我們用STM32F4XX來分析!The chip memory map has been provided in the following tables.

Figuer 1. Memory map

 重要的區域:

          Size        AddrArea

  Block 0    512M      0x0000 0000 ~ 0x1FFF FFFF

  內部Flash:存儲程序指令,內核上電后會從0x0800 0000地址取指令運行

  注意:大家不都程序要在RAM中運行嗎?為啥在這里從Flash里就可以運行了?這里涉及到XIP的概念,支持XIP的Flash,CPU是可以直接在上面取指,譯碼,執行的,一般的Norflash就有XIP的特性。

你可以吧STM32內部的Flash理解為一個Norflash,上電后內核就可以從0x0800 0000取指,執行。但是數據段必須還是要拷貝到RAM中的運行,應為數據段需要頻繁的讀寫,所以放在RAM里效率會更高。

一般來說,一個系統起碼要搭配一個具有xip功能的芯片,系統從xip芯里只完成SDRAM初始化,然后拷貝Flash中的代碼到SDRAM中,然后內核再跳轉到SDRAM里取運行。在S3C2410中,內核上電后,

會自動讀取NANDFLASH前4K的數據進行初始化然后拷貝代碼到SDRAM,也是同樣的道理!

  

  Block 1    512M      0x2000 0000 ~ 0x3FFF FFFF

  內部SRAM:內核的數據區,程序的DATA段在運行的時候需要從Flash拷貝到SRAM運行

 

 

 

 

 

 

 

 

 

 

  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM