最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網 會員登陸 & 注冊

樂鑫 SoC 內存映射入門

2023-10-30 16:12 作者:樂鑫信息科技  | 我要投稿

?微控制器 (MCU) 的性能和內存能力逐步提升,其復雜度也隨之加大。特別是當用戶需要配置內存管理單元來映射外部存儲器芯片 (Flash/SPIRAM) 時,這種現象尤其明顯。 開始在樂鑫 SoC 上運行 Zephyr RTOS 時,會發(fā)現這些 SoC 與 ARM 架構的 MCU 相比,完全是不同的世界。ARM Cortex-M 基于馮-諾伊曼內存架構,而樂鑫 SoC 使用哈佛內存架構。架構不同,使用復雜度也有差異。? 樂鑫為用戶提供了很多開源文檔,如《技術規(guī)格書》或《技術參考手冊》是獲取 SoC 技術信息的第一手資料。但這些內容對于一些用戶來說,讀起來頗具挑戰(zhàn),因為有一部分重要的信息被隱藏在冗長的文字描述中,用戶很難快速獲取核心重點。? 本文將從《技術參考手冊》中提取重要信息,并繪制成視覺豐富,內容詳實的描述性文檔。將本文與 SoC《技術規(guī)格書》和《技術參考手冊》搭配使用,用戶可以更好地理解樂鑫 SoC 的內部結構。這在系統(tǒng)開發(fā)和驅動開發(fā)過程中,例如在移植到 Zephyr RTOS 等其他系統(tǒng)時,尤其重要。

目錄

ESP32?

ROM?

SRAM?

RTC-SRAM?

指令 Cache & 數據 Cache?

外設?

eFuse 塊?

ESP32-S2?

ROM?

SRAM?

RTC-SRAM?

指令 Cache & 數據 Cache?

外設?

eFuse 塊?

ESP32-S3?

ROM?

SRAM?

RTC-SRAM?

指令 Cache & 數據 Cache?

外設?

eFuse 塊?

ESP32-C3?

ROM?

SRAM?

RTC-SRAM?

指令 Cache & 數據 Cache?

外設?

eFuse 塊?

ESP32-C6?

ROM?

SRAM?

指令 Cache & 數據 Cache?

外設?

eFuse 塊?

資料下載?

結語?

ESP32?

ESP32 采用 Xtensa LX6 雙核微處理器,是 ESP32 系列中最先發(fā)布的 SoC 產品。? 此款 SoC 可使用 SPI 接口訪問外部 flash 存儲器。也可以訪問外部 SPIRAM,但僅限通過數據總線訪問。?

ROM

? ROM 用于存儲主引導加載程序代碼和其他用戶可使用的庫函數。ROM 中存儲的內容已在生產過程中固化,不可更改。請參考《ESP32 系列芯片勘誤表》查看更多 ECO 版本信息。TLDR 使用最新的 ECO v3 及之后的 ESP32 芯片版本。?

SRAM

? ESP32 內置三個 SRAM 模塊。SRAM0 大小為 192 KB,頭 64 KB 可配置為 MMU Cache,用于外部存儲器訪問。不作為 Cache 使用時,頭 64 KB 可以被兩個 CPU 通過指令總線讀寫。? 內部 SRAM1 大小為 128 KB。既可以被兩個 CPU 通過數據總線讀寫,也可以被兩個 CPU 通過指令總線讀寫。? 指令總線地址和數據總線地址訪問的 word 是逆序的。?

RTC-SRAM

? RTC-FAST 內存僅能被 PRO_CPU 通過數據總線固定地址或指令總線固定地址訪問。與其他內存不同,該內存不可通過 APP_CPU 訪問。? RTC-SLOW 內存可以被兩個 CPU 通過數據總線和指令總線讀寫。? RTC 內存可在 Deep-sleep 期間保存數據。?

指令 Cache & 數據 Cache

? 指令和數據 Cache 地址空間為虛擬地址空間,指令或數據總線可以在其中訪問 flash 或 SPIRAM 等外部存儲器。?

ESP32 內存和 Cache 地址空間

外設

? ESP32 集成了 41 個外設。除 PID 控制器之外,其余外設都可以被兩個 CPU 用相同地址訪問。系統(tǒng)中有兩個 PID 控制器分別服務于 PRO_CPU 和 APP_CPU。PRO_CPU 和 APP_CPU 都只能訪問自己的 PID 控制器,不能訪問對方的 PID 控制器。?

eFuse 塊

? eFuse 內存為一次性可編程 (OTP) 內存,可用于存儲硬件和加密配置參數。作為一種非易失性存儲單位,eFuse 的 bit 一旦被燒寫為 1,不可再恢復為 0。?

ESP32 片上外設及對應的 eFuse 地址空間

ESP32-S2?

ESP32-S2 是基于 ESP32 的一款 SoC,與 ESP32 非常相似。但 ESP32-S2 屬于單核 SoC,且內存組成略有不同。? 與 ESP32 相比,ESP32-S2 可以通過數據總線和指令總線訪問外部 SPIRAM,可以運行程序和訪問數據。?

ROM

? ROM 用于存儲主引導加載程序代碼和其他用戶可使用的庫函數。ROM 中存儲的內容已在生產過程中固化,不可更改。?

SRAM

? ESP32-S2 的 SRAM0 可以配置為硬件 Cache,用于訪問外部存儲器。CPU 可以通過數據或指令總線同序進行讀寫訪問。?

RTC-SRAM

? RTC-SLOW 內存可以被 CPU 通過數據總線和指令總線讀寫,也可以通過 PeriBus1 和 PeriBus2 訪問。?

指令 Cache & 數據 Cache

? CPU 通過 Cache 訪問外部存儲器。通過 I-Cache 訪問的地址空間可達 7.5 MB。通過 I-Cache 訪問的只讀數據總線地址空間可達 4 MB??稍L問的外部 flash 或 SPIRAM 地址空間可達 10.5 MB。?

ESP32-S2 內存和 Cache 地址空間

外設

? ESP32-S2 的外設可通過兩個外設總線 PeriBus1 和 PeriBus2 進行訪問。 每個外設總線在數據總線上都有自己的地址空間。? PeriBus1 具有預測性讀的功能,可提高性能。但不能保證每次的讀訪問都有效。因此,在使用 PeriBus1 時需要使用易失性聲明。但在訪問特殊寄存器如 FIFO 時,必須使用 PeriBus2,訪問速度雖然慢,但可以確保安全訪問。?

eFuse 塊

? eFuse 內存為一次性可編程 (OTP) 內存,包含 4096 個 bit,可用于存儲硬件和加密配置參數。作為一種非易失性存儲單位,eFuse 的 bit 一旦被燒寫為 1,不可再恢復為 0。?

ESP32-S2 片上外設及對應的 eFuse 地址空間

ESP32-S3?

ESP32-S3 是最新一款 Xtensa LX7 雙核設計 SoC。除了兩個主處理器外,ESP32-S3 還集成了兩個超低功耗 RISC-V 協(xié)處理器。ESP32-S3 集成了一個 JTAG 調試器,可通過 USB 接口進行通信。ESP32-S3 還可以通過數據總線和指令總線訪問外部 SPIRAM,可以運行程序和訪問數據。?

ROM

? ROM 用于存儲主引導加載程序代碼和其他用戶可使用的庫函數。ROM 中存儲的內容已在生產過程中固化,不可更改。?

SRAM

? ESP32-S3 內置三個 SRAM 模塊。SRAM0 可配置為 I-Cache buffer,用來訪問外部存儲器的指令。SRAM0 也可用作靜態(tài)內存由指令總線使用。SRAM1 可以通過數據總線和指令總線進行讀寫訪問。SRAM2 可以配置為 D-Cache,也用作靜態(tài)內存,可以通過數據總線進行讀寫訪問。?

RTC-SRAM

? RTC-SLOW 內存可以通過數據總線和指令總線讀寫。RTC-FAST 內存可以通過數據總線和指令總線固定地址進行讀寫訪問。?

指令 Cache & 數據 Cache

? 兩個 CPU 可以通過緩存的 MMU 地址空間訪問外部存儲器。I-Cache 和 D-Dache 可通過指令總線或數據總線分別訪問存儲器。?

ESP32-S3 內存和 Cache 地址空間

外設

? 外設模塊可使用數據總線或指令總線通過固定地址段進行訪問。每個外設模塊的基地址和地址空間大小,決定了其邊界地址。外設地址空間大小一般為 4 KB。更多信息,請查看設備的技術參考手冊。?

eFuse 塊

? eFuse 內存為一次性可編程 (OTP) 內存,包含 4096 個 bit,可用于存儲硬件和加密配置參數。作為一種非易失性存儲單位,eFuse 的 bit 一旦被燒寫為 1,不可再恢復為 0。?

ESP32-C3?

ESP32-C3 是一款 32 位 RISC-V SoC,自帶 “IMC” 擴展。與 Xtensa SoC 相比,ESP32-C3 地址空間極其簡單。ESP32-C3 支持 JTAG 調試,可通過片上 USB 接口進行通信。?

ESP32-S3 片上外設及對應的 eFuse 地址空間?

ROM

? ROM 用于存儲主引導加載程序代碼和其他用戶可使用的庫函數。ROM 中存儲的內容已在生產過程中固化,不可更改。?

SRAM

? ESP32-C3 有兩個 SRAM 模塊。SRAM1 可以配置為 I-Cache buffer,也用作靜態(tài)內存。SRAM1 屬于通用內存,可以通過數據總線和指令總線進行讀寫訪問。?

RTC-SRAM

? RTC-FAST 內存可以通過 CPU 數據總線和指令總線讀寫。?

指令 Cache & 數據 Cache

? ESP32-C3 支持以 SPI、Dual SPI、Quad SPI、QPI 等接口形式訪問片外 flash。ESP32-C3 還支持手動加密和自動解密。I-Cache 和 D-Dache 可通過指令總線或數據總線分別訪問外部 flash。?

ESP32-C3 內存和 Cache 地址空間

外設

? CPU 可通過數據/指令總線的固定地址空間訪問外設模塊。每個外設模塊的基地址和地址空間大小,決定了其邊界地址。地址空間大小一般為 4 KB。更多信息見技術參考手冊。?

eFuse 塊

? eFuse 內存為一次性可編程 (OTP) 內存,包含 4096 個 bit,可用于存儲硬件和加密配置參數。作為一種非易失性存儲單位,eFuse 的 bit 一旦被燒寫為 1,不可再恢復為 0。?

ESP32-C3 片上外設及對應的 eFuse 地址空間?

ESP32-C6?

ESP32-C6 是一款 32 位 RISC-V SoC,自帶 “IMAC” 擴展。與 Xtensa SoC 相比,ESP32-C6 地址空間極其簡單。ESP32-C6 支持 JTAG 調試,可通過片上 USB 接口進行通信。? Zephyr-RTOS 對 ESP32-C6 開發(fā)板的支持正在開發(fā)中。?

ROM

? ROM 用于存儲主引導加載程序代碼和其他用戶可使用的庫函數。ROM 中存儲的內容已在生產過程中固化,不可更改。?

SRAM

? ESP32-C6 有兩個 SRAM 模塊。? HP-SRAM 屬于靜態(tài)內存,HP CPU 和 LP CPU 可以通過數據總線或指令總線同序讀寫訪問這部分內存。? LP-SRAM 屬于靜態(tài)內存,HP CPU 和 LP CPU 可以通過數據總線或指令總線讀寫訪問這部分內存。可使用高速模式或低速模式訪問 LP-SRAM。?

指令 Cache & 數據 Cache

? ESP32-C3 支持以 SPI、Dual SPI、Quad SPI、QPI 等接口形式訪問片外 flash。ESP32-C6 還支持手動加密和自動解密,從而保護開發(fā)者片外 flash 中的程序和數據。?

ESP32-C6 內存和 Cache 地址空間

外設

? CPU 可通過數據/指令總線的固定地址空間訪問外設模塊。每個外設模塊的基地址和地址空間大小,決定了其邊界地址。地址空間大小一般為 4 KB。更多信息見技術參考手冊。?

eFuse 塊

? eFuse 內存為一次性可編程 (OTP) 內存,包含 4096 個 bit,可用于存儲硬件和加密配置參數。作為一種非易失性存儲單位,eFuse 的 bit 一旦被燒寫為 1,不可再恢復為 0。?

ESP32-C6 片上外設及對應的 eFuse 地址空間

結語?

有時候,當我們想要深入了解某些內容時,需要首先深入研究一些技術文檔,然后再用我們自己的方式將有用信息提取出來,消化吸收。技術文檔可能很難理解,如果不熟悉涉及的一些體系結構或特定領域,則更加難讀懂技術文檔。希望這篇博客可以讓你輕松理解樂鑫 SoC 的內存映射?;蛘咴谀阈枰钊胙芯考夹g參考手冊或技術規(guī)格書時,作為輔助參考使用。

相關資料

技術規(guī)格書

https://www.espressif.com/zh-hans/support/documents/technical-documents?keys=%E6%8A%80%E6%9C%AF%E8%A7%84%E6%A0%BC%E4%B9%A6

技術參考手冊

https://www.espressif.com/zh-hans/support/documents/technical-documents?keys=%E6%8A%80%E6%9C%AF%E5%8F%82%E8%80%83%E6%89%8B%E5%86%8C

Zephyr-RTOS 已支持的 ESP32 開發(fā)板

https://docs.zephyrproject.org/latest/boards/xtensa/esp32_devkitc_wrover/doc/index.html

Zephyr-RTOS 已支持的 ESP32-S2 開發(fā)板

https://docs.zephyrproject.org/latest/boards/xtensa/esp32s2_saola/doc/index.html

Zephyr-RTOS 已支持的 ESP32-S3 開發(fā)板

https://docs.zephyrproject.org/latest/boards/xtensa/esp32s3_devkitm/doc/index.html

Zephyr-RTOS 已支持的 ESP32-C3 開發(fā)板

https://docs.zephyrproject.org/latest/boards/riscv/esp32c3_devkitm/doc/index.html

ESP32 技術參考手冊

https://www.espressif.com/sites/default/files/documentation/esp32_technical_reference_manual_cn.pdf

ESP32-S2 技術參考手冊

https://www.espressif.com/sites/default/files/documentation/esp32-s2_technical_reference_manual_cn.pdf

ESP32-S3 技術參考手冊

https://www.espressif.com/sites/default/files/documentation/esp32-s3_technical_reference_manual_cn.pdf

ESP32-C3 技術參考手冊

https://www.espressif.com/sites/default/files/documentation/esp32-c3_technical_reference_manual_cn.pdf

ESP32-C6 技術參考手冊

https://www.espressif.com/sites/default/files/documentation/esp32-c6_technical_reference_manual_cn.pdf

ESP32?圖片 PDF

https://dl.espressif.com/public/esp32-mm.pdf

ESP32-S2?圖片 PDF

https://dl.espressif.com/public/esp32s2-mm.pdf

ESP32-S3?圖片 PDF

https://dl.espressif.com/public/esp32s3-mm.pdf

ESP32-C3?圖片 PDF

https://dl.espressif.com/public/esp32c3-mm.pdf

ESP32-C6?圖片 PDF

https://dl.espressif.com/public/esp32c6-mm.pdf

《ESP32 系列芯片勘誤表》

https://www.espressif.com/sites/default/files/documentation/esp32_errata_cn.pdf

樂鑫 SoC 內存映射入門的評論 (共 條)

分享到微博請遵守國家法律
双柏县| 当阳市| 平谷区| 宜兴市| 江油市| 永和县| 马公市| 施甸县| 西青区| 枞阳县| 甘孜县| 桑日县| 同心县| 鲜城| 邯郸县| 岱山县| 五台县| 侯马市| 日照市| 通山县| 临泽县| 定州市| 湘潭县| 新晃| 章丘市| 黔西县| 宁河县| 肇源县| 德格县| 红河县| 平塘县| 弥渡县| 赤水市| 麻阳| 小金县| 汨罗市| 昌邑市| 微山县| 凌海市| 青海省| 黔西县|