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

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊(cè)

設(shè)計(jì)秘笈—在 STM32F7x0 超值系列和 STM32H750 超值系列微控制器上執(zhí)行外部存儲(chǔ)器代碼

2021-02-05 10:49 作者:電堂科技  | 我要投稿

引言?

因?yàn)閷?duì)能夠支持新功能和復(fù)雜功能的應(yīng)用需求不斷上升,對(duì)配備更大閃存區(qū)的設(shè)備的需求也在增加。?

使用外部閃存可以提供具有近似性能水平的更高存儲(chǔ)能力,同時(shí)為增加閃存區(qū)的需求提供一種經(jīng)濟(jì)劃算的解決方案。?

這樣,基于STM32F7x0 超值系列和 STM32H750 超值系列開(kāi)發(fā)的設(shè)備能夠以更小的內(nèi)部閃存區(qū)來(lái)應(yīng)對(duì)市場(chǎng)需求。?

本文詳細(xì)描述了在基于STM32超值系列開(kāi)發(fā)的設(shè)備上,從外部存儲(chǔ)器執(zhí)行代碼構(gòu)建應(yīng)用程序所需的步驟,并講解了如何從內(nèi)部閃存啟動(dòng),然后跳轉(zhuǎn)到片外存儲(chǔ)器的用戶程序去執(zhí)行。?


1、概述

本文檔適用于基于 Arm?的器件。?

提示:Arm 是 Arm Limited(或其子公司)在美國(guó)和/或其他地區(qū)的注冊(cè)商標(biāo)。


2、外部存儲(chǔ)器代碼執(zhí)行概述?

2.1 外部存儲(chǔ)器代碼執(zhí)行原則?

STM32CubeF7 v1.12.0和STM32CubeH7 v1.3.0固件包提供多個(gè)應(yīng)用程序,用于演示如何從內(nèi)部閃存啟動(dòng)以及如何配置外部存儲(chǔ)器并跳轉(zhuǎn)到用戶應(yīng)用程序(位于外部存儲(chǔ)器上)。其中有兩個(gè)用例,XiP和BootROM,可用于外部存儲(chǔ)器代碼執(zhí)行。?

  • XiP 用例旨在從外部閃存(QSPI 或 FMC-NOR 閃存)“芯片內(nèi)執(zhí)行”。用戶應(yīng)用程序代碼應(yīng)鏈接到目標(biāo)執(zhí)行存儲(chǔ)器地址(外部 QSPI 或 FMC-NOR 閃存)。

  • BootROM用例旨在演示如何從內(nèi)部閃存啟動(dòng),配置外部RAM存儲(chǔ)器(SDRAM 或 SRAM),將用戶應(yīng)用程序二進(jìn)制文件從代碼存儲(chǔ)區(qū)域(SDCARD 或 SPI-Flash 存儲(chǔ)器)復(fù)制到外部 SDRAM 或外部SRAM,然后跳轉(zhuǎn)到用戶應(yīng)用程序。用戶應(yīng)用程序代碼應(yīng)鏈接到目標(biāo)執(zhí)行存儲(chǔ)器地址(外部 SDRAM 或 SRAM)。?

下表中所述的應(yīng)用程序可在固件包中的\Applications\ExtMem_CodeExecution 路徑下獲得,供下列板使用:?

  • STM32F723E-Discovery板針對(duì)STM32F730 器件?

  • STM32F756G_EVAL板針對(duì)STM32F750 器件?

  • STM32H743I_EVAL板針對(duì)STM32H750 器件

▲ 表 1. 應(yīng)用詳情

外部存儲(chǔ)器啟動(dòng)應(yīng)用程序負(fù)責(zé)初始化所需資源,以使外部存儲(chǔ)器隨時(shí)可用。該應(yīng)用程序根據(jù)用戶配置初始化所需資源(參見(jiàn) 第 3.3 節(jié)配置)。

外部存儲(chǔ)器啟動(dòng)應(yīng)用程序必須設(shè)置主堆棧指針,并將應(yīng)用程序配置為在外部存儲(chǔ)器上執(zhí)行。該類(lèi)型啟動(dòng)方案支持大小可調(diào)的用戶應(yīng)用程序。

外部存儲(chǔ)器啟動(dòng)應(yīng)用程序確保在跳到用戶應(yīng)用程序之前重置或釋放安裝階段之后不再需要的任何資源。下圖展示了該啟動(dòng)方案:

▲ 圖 1. 外部存儲(chǔ)器代碼啟動(dòng)方案

2.2 外部存儲(chǔ)器啟動(dòng)應(yīng)用程序描述?

外部存儲(chǔ)器啟動(dòng)應(yīng)用程序包含STM32CubeF7/H7包上的一組源文件,這些定制的源文件可以匹配每個(gè)硬件平臺(tái)支持的配置。
下圖顯示了所有受支持配置的所有文件超集示例。

▲ 圖 2. 外部存儲(chǔ)器啟動(dòng)應(yīng)用程序源文件超集


3、支持的啟動(dòng)模型?

該應(yīng)用程序支持兩種執(zhí)行方式:

  • 支持芯片內(nèi)執(zhí)行(支持 XiP)?

  • 支持 BootROM

用戶必須通過(guò)修改 memory.h 頭文件來(lái)選擇匹配需求的配置。


3.1 支持芯片內(nèi)執(zhí)行(XiP)?

XiP 模型基于直接從用于代碼存儲(chǔ)的外部非易失性存儲(chǔ)器執(zhí)行代碼。該執(zhí)行模型需要內(nèi)存映射支持,以允許 CPU 直接訪問(wèn)代碼以執(zhí)行用戶應(yīng)用程序。XiP 模型可通過(guò) FMC/QSPI 接口在外部 NOR/QSPI 閃存上使用。?

外部存儲(chǔ)器啟動(dòng)應(yīng)用程序基于 memory.h 文件中的用戶配置對(duì)下列易失存儲(chǔ)器之一進(jìn)行配置:SDRAM、SRAM、 PSRAM 或內(nèi)部 SRAM。在該模型中,易失性存儲(chǔ)器僅用于數(shù)據(jù)訪問(wèn)。

下面的流程圖說(shuō)明了 XiP 模型的操作流程。

▲ 圖 3. XiP 模型操作流程

3.2 支持 BootROM BootROM?

模型基于從選定的易失性存儲(chǔ)器中執(zhí)行代碼。當(dāng)二進(jìn)制數(shù)據(jù)存儲(chǔ)在非內(nèi)存映射模式的存儲(chǔ)器(比如 SDCARD)中時(shí),該執(zhí)行模型非常適合。當(dāng)二進(jìn)制數(shù)據(jù)存儲(chǔ)在低吞吐量的存儲(chǔ)器(比如 SPI-NOR(使用單線 QSPI 進(jìn)行仿真))中時(shí),此模型也適用。?

外部存儲(chǔ)器啟動(dòng)應(yīng)用程序基于 memory.h 文件中的用戶配置對(duì)下列其中兩個(gè)易失存儲(chǔ)器進(jìn)行配置:SDRAM、 SRAM、PSRAM 或內(nèi)部 SRAM。在該模型中,二進(jìn)制數(shù)據(jù)從一個(gè)非易失性存儲(chǔ)器復(fù)制到一個(gè)易失性存儲(chǔ)器,然后 由外部存儲(chǔ)器啟動(dòng)應(yīng)用程序執(zhí)行。第二個(gè)易失性存儲(chǔ)器用于數(shù)據(jù)。?

下面的流程圖說(shuō)明了 BootROM 模型的操作流程。

▲ 圖 4. BootROM 模型操作流程

3.3 配置?

用戶配置由以下定義確定:?

DATA_AREA:用于指定用于數(shù)據(jù)存儲(chǔ)的易失性存儲(chǔ)器。支持的存儲(chǔ)器(取決于所用的板)有:

  • USE_EXTERNAL_SDRAM:外部SDRAM用于數(shù)據(jù)存儲(chǔ)

  • USE_EXTERNAL_SRAM:外部SRAM用于數(shù)據(jù)存儲(chǔ)?

  • USE_EXTERNAL_PSRAM:外部PSRAM用于數(shù)據(jù)存儲(chǔ)?

  • USE_INTERNAL_SRAM:內(nèi)部SRAM用于數(shù)據(jù)存儲(chǔ)?

CODE_AREA:用于指定用戶應(yīng)用程序的執(zhí)行位置。該區(qū)域可以是用于BootROM 方案的易失性存儲(chǔ)器,也可以是用于XiP方案的非易失性存儲(chǔ)器。支持的存儲(chǔ)器(取決于所用的硬件)有:?

XiP 模型:BINARY_AREA 必須是未定義的:?

  • USE_QSPI:QSPI Flash 用于代碼執(zhí)行?

  • USE_NOR:FMC-NOR Flash 用于代碼執(zhí)行?

BootROM 模型:BINARY_AREA 必須已定義?

  • USE_EXTERNAL_SDRAM:外部SDRAM 用于代碼執(zhí)行?

  • USE_EXTERNAL_SRAM:外部SRAM 用于代碼執(zhí)行?

  • USE_EXTERNAL_PSRAM:外部PSRAM 用于代碼執(zhí)行?

  • USE_INTERNAL_SRAM:內(nèi)部SRAM 用于代碼執(zhí)行?

    BINARY_AREA:僅在 BootROM模型中定義。它用于指定包含用戶應(yīng)用程序的二進(jìn)制文件位置。根據(jù)所選配置,需要附加定義。支持的存儲(chǔ)器(取決于所用的硬件)有:

    USE_SPI_NOR:SPI NOR Flash 用于二進(jìn)制存儲(chǔ)?

    • BINARY_BASE_OFFSET:SPI NOR Flash中的二進(jìn)制偏移?

    • BINARY_SIZE:二進(jìn)制圖像大小?


    USE_SDCARD:SDCard 用于二進(jìn)制存儲(chǔ)?

    • BINARY_FILENAME:要執(zhí)行的二進(jìn)制文件名稱(chēng)?

      用戶應(yīng)確保所選存儲(chǔ)器包含代碼和數(shù)據(jù),以至少覆蓋一個(gè)適當(dāng)?shù)挠脩魬?yīng)用程序啟動(dòng)。然后,用戶應(yīng)用程序可以初始化所需的任何其他存儲(chǔ)器。


      3.4 外部存儲(chǔ)器部件總結(jié)?

      下表總結(jié)了與所用板和啟動(dòng)模型對(duì)應(yīng)的外部存儲(chǔ)器部件編號(hào)。由于 STM32F7x0 超值系列和 STM32H750 超值系列器件沒(méi)有專(zhuān)用板,使用的板(與兼容器件)為:

      • STM32F723E-Discovery 用于模擬 STM32F730 器件。?

      • STM32F756G_EVAL 用于模擬 STM32F750 器件。?

      • STM32H743I_EVAL 用于模擬 STM32H750 器件。

      ▲ 表 2. 啟動(dòng)模型在每個(gè)板上使用的外部存儲(chǔ)器


      4、需要考慮的資源約束?

      初始化后,不再需要的任何資源(中斷、正在進(jìn)行的傳輸、未使用的引腳)都應(yīng)在跳到用戶應(yīng)用程序之前釋放。必須這樣做以避免額外的功耗,并限制對(duì)用戶應(yīng)用程序的任何干擾。特別是對(duì)于BootROM 模型,由于不再需要用于二進(jìn)制存儲(chǔ)的外設(shè),因此應(yīng)將其重置。?
      用戶應(yīng)考慮外部存儲(chǔ)器啟動(dòng)應(yīng)用程序使用的資源數(shù)量,以確保外部存儲(chǔ)器接口保持正常運(yùn)行。資源約束與以下因素有關(guān):?

      • 引腳分配和配置?

      • 接口配置(不應(yīng)修改 QSPI IP 寄存器,F(xiàn)MC IP 寄存器即使是部分更新)?

      • 配置 RCC,以避免 IP 重置時(shí)鐘,禁用和以有害的方式更新時(shí)鐘頻率/源。?

      下面的引腳分配表作為參考,實(shí)際中根據(jù)使用的板進(jìn)行引腳選擇是必須的??筛鶕?jù)可用的替代功能選擇使用其他引腳。

      ▲ 表 3. 板為每個(gè)存儲(chǔ)器分配的引腳

      下表總結(jié)了應(yīng)保持不變的資源。它列出了不應(yīng)修改的外設(shè)(或外設(shè)的一部分),以避免外部存儲(chǔ)不可用。不應(yīng)重置 上述外設(shè)或禁用時(shí)鐘,也不應(yīng)以可能改變其行為的方式進(jìn)行重新配置。?

      提示?部分要素可能會(huì)根據(jù)為所選板選擇的外部存儲(chǔ)器啟動(dòng)應(yīng)用程序配置和平臺(tái)硬件而更改。

      ▲ 表 4. 內(nèi)存類(lèi)型所需的外設(shè)


      5、外部存儲(chǔ)器用戶應(yīng)用程序描述

      5.1 需要的更新?

      外部存儲(chǔ)器應(yīng)用程序基于特定的啟動(dòng)方案,該方案與標(biāo)準(zhǔn)的啟動(dòng)方案不同,支持從片上應(yīng)用到片外應(yīng)用的平穩(wěn)過(guò)渡。

      當(dāng)應(yīng)用程序的位置發(fā)生變化時(shí),用戶必須進(jìn)行兩項(xiàng)更新:?

      • 確保使用所需的鏈接器文件,并提供與所選啟動(dòng)選項(xiàng)相對(duì)應(yīng)的內(nèi)存映射。?

      • 更新 VTOR 設(shè)置,以使用正確的地址。

      5.2 加載和調(diào)試?

      STM32F723E-Discovery、STM32756G_EVAL和STM32H743I_EVAL這三種板都有面向外部非易失性內(nèi)存的加載器。這些加載器在STM32CubeF7/H7中以如下形式提供:?

      • EWARM IDE 的補(bǔ)丁?

      • MDK-ARM IDE 的專(zhuān)用包?

      XiP 模型提供了類(lèi)似于內(nèi)部 Flash 調(diào)試的無(wú)縫加載和調(diào)試體驗(yàn)。對(duì)于 SW4STM32 IDE,應(yīng)使用 STM32CubeProgrammer 在外部閃存上加載應(yīng)用程序。

      在 BootROM 模型中,應(yīng)用程序被編譯和鏈接,以便從外部易失性內(nèi)存執(zhí)行:?

      • External SDRAM:鏈接器地址 0xD0000000 用于 STM32H750 超值系列,而 0xC0000000 用于 STM32F7x0 超值系列?

      • External SRAM:鏈接器地址 0x68000000 用于 STM32H750 超值系列和 STM32F7x0 超值系列?

      然后將應(yīng)用程序二進(jìn)制文件存儲(chǔ)到 SPI_NOR 閃存或 SDCARD 中。由啟動(dòng)應(yīng)用程序?qū)⒂脩魬?yīng)用程序從存儲(chǔ)區(qū)域復(fù) 制到執(zhí)行 RAM 區(qū)域。?

      因此,應(yīng)用程序的加載模式不能由 IDE(MDK-ARM 或 EWARM)外部存儲(chǔ) Flash 加載器處理(因?yàn)閼?yīng)用程序的鏈 接地址和存儲(chǔ)地址不同)。?

      根據(jù) BINARY_AREA 定義(在啟動(dòng)應(yīng)用程序的 “memory.h” 文件中指定),該模型需要使用以下兩種不同的加載模式:?

      • SPI_NOR?

      用戶應(yīng)用程序應(yīng)存儲(chǔ)在地址為0x90000000的SPI-NOR閃存中。必須使用 STM32CubeProgrammer 來(lái)完成。應(yīng)用程序的輸出應(yīng)為二進(jìn)制格式,以便能夠指定一個(gè)不同的加載地址,即 SPI-Flash 地址。詳細(xì)信息請(qǐng)參見(jiàn)下圖。

      • SDCARD?

      用戶應(yīng)手動(dòng)將二進(jìn)制文件(構(gòu)建的輸出)復(fù)制到用于存儲(chǔ)用戶應(yīng)用程序的 SDCARD 中,然后將 SDCARD 插入評(píng)估板。

      下圖顯示了加載和調(diào)試的步驟:

      ▲ 圖 5. STM32CubeProgrammer

      5.3 使用 EWARM IDE 進(jìn)行調(diào)試?

      在調(diào)試從外部存儲(chǔ)器運(yùn)行的用戶應(yīng)用程序時(shí),需要特別注意EWARM IDE。EWARM 將 PC(程序計(jì)數(shù)器)的默認(rèn)CPU 重置值覆蓋為用戶應(yīng)用程序中給定的值(外部執(zhí)行存儲(chǔ)器中的地址值)。?

      在該啟動(dòng)方案中,在執(zhí)行外部存儲(chǔ)器啟動(dòng)應(yīng)用程序之前,用戶應(yīng)用程序 PC 地址保持不可訪問(wèn)(因此外部存儲(chǔ)器已經(jīng)準(zhǔn)備好,并通過(guò)FMC 或 QSPI 映射內(nèi)存)。如果 EWARM 直接跳到用戶應(yīng)用程序的起始點(diǎn),就會(huì)生成hardfault。為了避免 hardfault,用戶應(yīng)在調(diào)試器選項(xiàng)中添加“--drv_reset_to_cpu_start”命令行,如下圖所示。此設(shè)置防止EWARM強(qiáng)制PC,并讓外部存儲(chǔ)器啟動(dòng)應(yīng)用程序在跳到用戶應(yīng)用程序之前配置外部存儲(chǔ)器。

      ▲ 圖 6. 調(diào)試器命令行選項(xiàng)

      6、性能特性

      當(dāng)從外部存儲(chǔ)器執(zhí)行時(shí),由于外部閃存延遲和較長(zhǎng)的指令/數(shù)據(jù)路徑,性能會(huì)受到影響。如果使用STM32F7x0超值系列和STM32H750超值系列設(shè)備,Cortex-M7 L1-cache可以減少這種影響。?

      下表總結(jié)了每個(gè) ROM / RAM 組合取得的 EEMBC? CoreMark?分?jǐn)?shù)。當(dāng)從內(nèi)部閃存執(zhí)行時(shí),可以獲得最佳性能。然而,當(dāng)從外部存儲(chǔ)器執(zhí)行時(shí),損失會(huì)顯著減少。?

      這些數(shù)字說(shuō)明了從外部存儲(chǔ)器進(jìn)行操作時(shí)對(duì)CPU性能的影響。提供內(nèi)部 Flash 配置分?jǐn)?shù)作為參考。

      ▲ 表 5. 每種配置的 EEMBC? CoreMark?分?jǐn)?shù)


      設(shè)計(jì)秘笈—在 STM32F7x0 超值系列和 STM32H750 超值系列微控制器上執(zhí)行外部存儲(chǔ)器代碼的評(píng)論 (共 條)

      分享到微博請(qǐng)遵守國(guó)家法律
      准格尔旗| 乐至县| 蕲春县| 剑川县| 克拉玛依市| 怀化市| 上高县| 威远县| 旅游| 建水县| 五家渠市| 商丘市| 虎林市| 镇雄县| 衡南县| 博野县| 叙永县| 宜昌市| 交城县| 二连浩特市| 海南省| 栾川县| 交城县| 鲁山县| 班玛县| 荣昌县| 安庆市| 霍邱县| 明溪县| 黑河市| 洪洞县| 蒙山县| 连州市| 集安市| 宝兴县| 如东县| 和平区| 兰溪市| 南开区| 景东| 灵宝市|