STM32的啟動方式

目錄

一、從主閃存存儲器啟動(Main Flash Memory)

二、從系統存儲器啟動(System Memory)

三、從內置SRAM啟動(Embedded SRAM)

四、從外掛存儲介質啟動的實現方式

1.?存儲介質選型

2.?硬件連接

3.?引導程序(Bootloader)

4.?固件更新

5. 示例流程

6. 注意事項


一、從主閃存存儲器啟動(Main Flash Memory)

>>配置:BOOT0 = 0,BOOT1 = X(任意狀態)

>>描述最常見的啟動方式STM32從內置的Flash存儲器啟動。使用JTAG或SWD模式下載程序時,程序被下載到主閃存中,重啟后也從這里開始執行。

>>地址映射:主Flash的起始地址

0x0800 0000被映射到0x0000 0000

二、從系統存儲器啟動(System Memory)

>>配置:BOOT0 = 1, BOOT1 = 0

>>描述這種啟動方式用于通過串口其他接口下載程序到STM32的Flash中。系統存儲器是芯片內部一塊特定區域,出廠時預置了一段Bootloader程序,這段程序允許通過外部接口將代碼寫入STM32的Flash中。

>>地址映射:系統存儲器的起始地址

0x1FFF 0000被映射到0x0000 0000

三、從內置SRAM啟動(Embedded SRAM)

>>配置:BOOT0 =1,BOOT1 = 1

>>描述:這種啟動方式通常用于程序調試。因為它不需要擦寫Flash,因此速度較快。由于SRAM是易失性存儲器,掉點后數據丟失。

>>地址映射:內置SRAM的起始地址

0x2000 0000被映射到0x0000 0000

? ? ? ?通過這些啟動方式,STM32提供了靈活的編程和調試選項,滿足不同的應用需求!

四、從外掛存儲介質啟動的實現方式

1.?存儲介質選型

可以使用多種類型的外部存儲器,例如:

  • SPI Flash:常用于存儲固件或數據,速度較快,易于實現。
  • I2C EEPROM:適合小規模的數據存儲和字典。
  • SD卡:可用于較大存儲需求,常用于數據記錄和固件更新。

2.?硬件連接

  • 接口選擇:根據所用存儲介質的協議,選擇合適的接口(如SPI、I2C等)來與單片機連接。
  • 電源管理:確保外部存儲器供電正常,且能在單片機啟動時保持穩定。

3.?引導程序(Bootloader)

為了實現從外部存儲器啟動,通常需要一個引導程序(Bootloader):

  • Bootloader的功能

    • 初始化外部存儲器的通信接口(如SPI或I2C)。
    • 從外部存儲器讀取程序代碼。
    • 將代碼加載到內存中并轉移控制權。
  • 設計考慮

    • Bootloader需要確保能夠在外部存儲器內找到有效的程序代碼,常見的做法是使用特定的文件格式或簽名標識有效的固件。
    • Bootloader一般會存放在單片機的中間區域,既可以執行又不會影響正常的應用代碼。

4.?固件更新

使用外部存儲啟動的一個主要應用場景是進行固件更新

  • 通過外部介質更新固件
    • 允許用戶通過SD卡或串口等方式上傳新固件。
    • Bootloader在檢測到新的固件后,可以將其燒錄到內部閃存或直接運行。

5. 示例流程

  1. 上電或復位:單片機上電或復位,進入Bootloader。
  2. 外部存儲器初始化:Bootloader初始化與外部存儲器的連接。
  3. 讀取程序:Bootloader從外部存儲器讀取預定區域的數據,將其加載到RAM或直接從閃存執行。
  4. 跳轉到應用程序:Bootloader完成加載后,將控制權轉交給主應用程序。

6. 注意事項

  • 時序:確保外部存儲器在單片機啟動時能夠迅速響應。
  • 存儲保護:設計時要考慮存儲介質的耐久性和擦寫次數。
  • 安全性:如果固件通過外部來源更新,需實現相應的安全驗證措施,防止惡意代碼注入。

通過以上這些措施,單片機能夠從外掛存儲介質中順利啟動。

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

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

相關文章

STC定時器頻率占空比程序

// // 一、宏定義區 // #include <STC15.H> //頭文件 #include <intrins.h> //庫函數文件 #define FOSC 12000000L //IRC頻率 typedef …

數據庫服務器架構

ORM ORM&#xff08;Object Relational Mapping&#xff09;&#xff1a;對象與關系數據之間的映射 映射關系表&#xff1a; 類&#xff08;class&#xff09;—— 數據庫的表&#xff08;table&#xff09; 對象&#xff08;object&#xff09;——記錄&#xff08;record…

【論文速遞】2025年04周 (Robotics/Embodied AI/LLM)

目錄 DeepSeek-R1: Incentivizing Reasoning Capability in LLMs via Reinforcement Learning摘要 Evolving Deeper LLM Thinking摘要 Kimi k1.5: Scaling Reinforcement Learning with LLMs摘要 Agent-R: Training Language Model Agents to Reflect via Iterative Self-Train…

FortiAI 重塑Fortinet Security Fabric全面智能化進階

專注推動網絡與安全融合的全球性綜合網絡安全解決方案供應商 Fortinet&#xff08;NASDAQ&#xff1a;FTNT&#xff09;&#xff0c;近日宣布&#xff0c;旗下 Fortinet Security Fabric 安全平臺成功嵌入了 FortiAI 關鍵創新功能。這一舉措將有效增強用戶對各類新興威脅的防護…

汽車免拆診斷案例 | 2019款大眾途觀L車鼓風機偶爾不工作

故障現象 一輛2019款大眾途觀L車&#xff0c;搭載DKV發動機和0DE雙離合變速器&#xff0c;累計行駛里程約為8萬km。車主進廠反映&#xff0c;鼓風機偶爾不工作。 故障診斷  接車后試車&#xff0c;鼓風機各擋位均工作正常。用故障檢測儀檢測&#xff0c;空調控制單元&#x…

MySQL為什么默認使用RR隔離級別?

大家好&#xff0c;我是鋒哥。今天分享關于【MySQL為什么默認使用RR隔離級別?】面試題。希望對大家有幫助&#xff1b; MySQL為什么默認使用RR隔離級別? 1000道 互聯網大廠Java工程師 精選面試題-Java資源分享網 MySQL 默認使用 RR&#xff08;Repeatable Read&#xff09;…

目標檢測篇---R-CNN梳理

目標檢測系列文章 第一章 R-CNN 目錄 目標檢測系列文章&#x1f4c4; 論文標題&#x1f9e0; 論文邏輯梳理1. 引言部分梳理 (動機與思想) &#x1f4dd; 三句話總結&#x1f50d; 方法邏輯梳理&#x1f680; 關鍵創新點&#x1f517; 方法流程圖補充邊界框回歸 (BBR)1. BBR 的…

Java技術棧 —— 基本規范

Java技術棧 —— 基本規范 一、接口文檔生成工具二、接口設計2.1 開發順序2.2 接口規范 三、數據類封裝 一、接口文檔生成工具 有很多jar包都支持swagger的接口文檔&#xff0c;這樣方便了接口測試&#xff0c;不需要用apifox自己寫接口&#xff0c;直接調用文檔里的swagger接…

Django ORM 定義模型

提示&#xff1a;定義模型字段的類型 文章目錄 一、字段類型二、字段屬性三、元信息 一、字段類型 常用字段 字段名描述備注AutoFieldint 自增必填參數 primary_keyTrue&#xff0c;無該字段時&#xff0c;django自動創建一個 BigAutoField&#xff0c;一個model不能有兩個Au…

[密碼學基礎]GB與GM國密標準深度解析:定位、差異與協同發展

[密碼學基礎]GB與GM國密標準深度解析&#xff1a;定位、差異與協同發展 導語 在國產密碼技術自主可控的浪潮下&#xff0c;GB&#xff08;國家標準&#xff09;與GM&#xff08;密碼行業標準&#xff09;共同構建了我國商用密碼的技術規范體系。二者在制定主體、法律效力、技術…

Day-1 漏洞攻擊實戰

實訓任務1 漏洞攻擊實戰一 使用 御劍 得到網站后臺地址 數據庫登錄與日志配置?? 使用默認密碼 root:root 登錄phpMyAdmin&#xff0c;執行 SHOW VARIABLES LIKE general% 查看日志狀態。 開啟日志功能&#xff1a;set global general_log "ON";&#xff08;配圖&…

leetcode 2563. 統計公平數對的數目 中等

給你一個下標從 0 開始、長度為 n 的整數數組 nums &#xff0c;和兩個整數 lower 和 upper &#xff0c;返回 公平數對的數目 。 如果 (i, j) 數對滿足以下情況&#xff0c;則認為它是一個 公平數對 &#xff1a; 0 < i < j < n&#xff0c;且lower < nums[i] …

011數論——算法備賽

素數篩 給定n, 求2~n內的所有素數 埃氏篩 利用素數的定義&#xff0c; 輸出素數2&#xff0c;然后篩掉2的倍數&#xff0c;得 {2,3,5,7,9,11,13&#xff0c;…}輸出素數3&#xff0c;然后篩掉3的倍數&#xff0c;得 {2,3,5,7,11,13&#xff0c;…} 繼續上述步驟&#xff0…

算法之貪心算法

貪心算法 貪心算法核心思想常見應用場景典型案例案例一&#xff1a;找零問題案例二&#xff1a;活動選擇問題案例三&#xff1a;貨倉選址問題 貪心算法的應用詳解霍夫曼編碼最小生成樹Dijkstra最短路徑算法 總結 貪心算法 核心思想 貪心算法&#xff08;Greedy Algorithm&…

英碼科技與泊川軟件,攜手加速AI與嵌入式系統融合創新

2025年4月15日&#xff0c;廣州英碼信息科技有限公司&#xff08;以下簡稱“英碼科技”&#xff09;與廣州泊川軟件技術有限公司&#xff08;以下簡稱“泊川軟件”&#xff09; 正式簽署戰略合作框架協議。此次合作將充分發揮雙方在AI計算硬件與嵌入式操作系統領域的技術優勢&a…

Flowable7.x學習筆記(九)部署 BPMN XML 流程

前言 到本篇為止&#xff0c;我們已經完成了流程定義以及其 BPMN XML 本身的查詢和新增功能&#xff0c;那我們有有了XML之后就可以開始著手研究實現 Flowable7對流程的各種操作了&#xff0c;比如部署&#xff0c;掛起&#xff0c;發起等等。 首先第一步&#xff0c;我們本篇文…

electron 渲染進程按鈕創建新window,報BrowserWindow is not a constructor錯誤;

在 Electron 中&#xff0c;有主進程和渲染進程 主進程&#xff1a;在Node.js環境中運行—意味著能夠使用require模塊并使用所有Node.js API 渲染進程&#xff1a;每個electron應用都會為每個打開的BrowserWindow&#xff08;與每個網頁嵌入&#xff09;生成一個單獨的渲染器進…

深入規劃 Elasticsearch 索引:策略與實踐

一、Elasticsearch 索引概述 &#xff08;一&#xff09;索引基本概念 Elasticsearch 是一個分布式、高性能的全文搜索引擎&#xff0c;其核心概念之一便是索引。索引本質上是一個存儲文檔的邏輯容器&#xff0c;它使得數據能夠在高效的檢索機制下被查詢到。當我們對文檔進行…

llamafactory的包安裝

cuda版本12.1&#xff0c;python版本3.10&#xff0c;torch版本2.4.0&#xff0c;幾個關鍵包版本如下&#xff1a; torch2.4.0cu121 transformers4.48.3 triton3.0.0 flash-attn2.7.1.post4 xformers0.0.27.post2 vllm0.6.3.post1 vllm-flash-attn2.6.1 unsloth2025.3.18 unsl…

Redis專題

前言 Redis的各種思想跟機組Cache和操作系統對進程的管理非常類似&#xff01; 一&#xff1a;看到你的簡歷上寫了你的項目里面用到了redis&#xff0c;為啥用redis&#xff1f; 因為傳統的關系型數據庫如Mysql,已經不能適用所有的場景&#xff0c;比如秒殺的庫存扣減&#xff…