STM32——啟動過程淺析

總:STM32——學習總綱

參考文件:

STM32 MAP文件淺析-V1.1

STM32 啟動文件淺析_V1.2

Cortex-M3權威指南(中文)、ARM Cotrex-M3權威指南(英文).zip

一、Map文件解析

1.1 MDK編譯過程文件

在編譯中,會生成11種編譯過程文件,可以設置輸出到一個文件夾,如output文件夾。

1.2 Map文件概念與作用

作用:

1.3 Map文件組成*

1.4 Map分析 Flash/RAM 大小

1.4.1 MDK output文件夾輸出配置

1.4.2 輸出map文件查看方式:

a.

b.

1.4.3 分析map文件結構

1.4.3.1 函數的調用關系(Section Cross References)

i.main, i表示符號的入口

1.4.3.2 刪除的冗余程序段(Removing Unused input sections from the image.)

1.4.3.3 映像符號表(Image Symbol Table)

包含局部符號,全局符號。

i.delay_us,表是函數入口地址

函數一般不帶static都是全局符號

1.4.3.4 映像內存分布(Memory Map of the image)

1.4.3.5 映像組件大小(Image component sizes)

1.4.3.5.1 SRAM/FLASH 大小計算:

FLASH = Code + RO+RW

SRAM = RW + ZI

庫的文件不開源(Library),無法優化;一般優化用戶代碼(Object)

1.4.3.6 map文件 SRAM/FLASH 總結

1.4.3.7 啟動文件堆、棧分配(startup_stm32f103xe.s)

二、STM32啟動過程

2.1 STM32 啟動模式(F1/F4/F7/H7)/自舉模式

2.1.1 前置

堆棧指針MSP指向棧頂地址(0x0000 0000 的值)

程序計數器指針PC指向復位向量(0x0000 0004 的值) →? ? Reset_Hdlr(中斷向量表復位向量)

啟動模式的設置,也就是指定MSP和PC的定位。?

2.1.2 啟動模式(F1)

也就是更改啟動模式,復位下載重啟

2.1.3 啟動模式(F4)

2.1.4?啟動模式(F7)

2.1.5?啟動模式(H7)

2.2 STM32 啟動過程

2.2.1 啟動文件 startup_stm32xxx.s

2.2.2 Reset_Handler函數

2.2.3 堆棧簡介

---》(1.4.3.7 啟動文件堆、棧分配(startup_stm32f103xe.s))

2.2.4 __Vectors 中斷向量表

存放的是函數首地址,函數指針。

2.2.4 啟動過程圖解

2.2.4.1?map文件查詢地址

具體啟動的實際地址可查詢map文件

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

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

相關文章

區塊鏈簡介

一、區塊鏈簡介 狹義上的定義: 區塊鏈是一種鏈式數據結構,通過按時間順序將數據塊逐一連接形成。這種結構通過密碼學確保了數據的不可篡改性和不可偽造性,形成了一種分布式賬本技術。 廣義上的定義: 區塊鏈技術不僅僅是一種數據…

NestJS中@Injectable裝飾器

一、基礎定義與核心作用 1.1 什么是Injectable? Injectable() 是 NestJS 依賴注入(Dependency Injection, DI)系統的核心裝飾器,用于將類標記為可注入的提供者(Provider)。它告知 NestJS 的 IoC&#xff08…

【機器學習深度學習】大模型應用落地:微調與RAG的角色與實踐

目錄 前言 一、微調與RAG:大模型應用落地的兩大支柱 1. 微調(Fine-tuning) 2. RAG(Retrieval-Augmented Generation) 二、微調可以做什么? 1. 模型自我認知調整 2. 對話風格優化 3. 提升問題理解能…

List、ArrayList 與順序表

目錄 一、List 介紹 二、線性表 三、自己實現 ArrayList 3.1 顯示元素 3.2 增 3.2.1 默認在數組后面新增元素 3.2.2 在指定位置中新增元素 3.3 查 3.4 取值 3.5 改 3.5.1 把 pos 位置的元素修改成 value 3.5.2 刪除某個元素 3.5.3 清空 四、認識 ArrayList 4.0 說…

Baumer工業相機堡盟工業相機如何通過YoloV8深度學習模型實現各類垃圾的分類檢測識別(C#代碼UI界面版)

Baumer工業相機堡盟工業相機如何通過YoloV8深度學習模型實現各類垃圾的分類檢測識別(C#代碼UI界面版)工業相機使用YoloV8模型實現各類垃圾的分類檢測識別工業相機通過YoloV8模型實現各類垃圾的分類檢測識別的技術背景在相機SDK中獲取圖像轉換圖像的代碼分…

EasyExcel高效工具類:簡化Excel導入導出,支持多Sheet與枚舉轉換

文章目錄前言一、依賴坐標二、工具類:ExcelUtil三、測試1.實體類2.前置操作3.單Sheet導出4.單Sheet導入5.多Sheet導出6.多Sheet導入7.完整代碼四、擴展:自定義注解實現枚舉類型轉換1.枚舉接口2.枚舉類3.注解4.轉換類5.使用示例6.測試總結前言 在現代應用…

技術速遞|GitHub Copilot for Eclipse 邁出重要一步

我們非常高興地宣布:2025 年 7 月 22 日,GitHub Copilot for Eclipse 又邁出了重要一步,Eclipse 變得更智能、更快捷,而且與 Eclipse 的集成也更無縫了!這是繼新功能上線以來,又一次質的提升。 &#x1f…

Coze Loop:開源智能體自動化流程編排平臺原理與實踐

項目簡介 Coze Loop 是 Coze 團隊開源的智能體自動化流程編排平臺。它以“Loop”為核心概念,支持開發者通過低代碼/可視化方式,將多種 AI Agent、插件、API、數據流等靈活編排為自動化工作流,實現復雜的智能體協作、任務自動化和多模態數據處理。Coze Loop 適用于企業自動化…

[GESP202309 四級] 2023年9月GESP C++四級上機題題解,附帶講解視頻!

本文為2023年9月GESP C四級的上機題目的詳細題解!覺得寫的不錯或者有幫助可以點個贊啦。 目錄 題目一講解視頻: 題目二講解視頻: 題目一:進制轉換 解題思路: 代碼(C): 題目二:變長編碼 解題思路: 代碼(C): 題目一講解視頻: 2023年9月GESP C四級上機題一題目…

【AI編程工具IDE/CLI/插件專欄】-國外IDE與Cursor能力對比

AI編程專欄(二) - Cursor 深度使用指南 Cursor 深度使用指南(二) - 新能力使用教程 從Trae 2.0與CodeBuddy IDE發布,談大廠布局IDE 如何選擇AI IDE?對比Cursor分析功能差異 AI編程工具IDE/CLI/插件專欄-熱門AI編程CLI初識與IDE對 前面文章介紹過了國…

word2vector細致分解(CBOW, SKIP_GRAM, 層次soft Max, 負采樣)

1 前世今生:NGRAM NGRAM:將詞當成一個離散的單元(因此存在一定的局限性,沒有考慮到詞與詞之間的關系) neural network language model:只能處理定長序列,訓練慢。使用RNN之后有所改善 2 兩種訓…

Elasticsearch向量庫

在Elasticsearch(ES)最新版本(目前8.x系列)中,無需額外的“embedding插件”,因為ES從7.14版本開始就原生支持向量數據類型(dense_vector) 和向量搜索能力,可直接作為向量…

嵌入式學習的第四十四天-ARM

一、ARM內核基礎知識1.ALU算術邏輯單元;完成運算的電路2.通用寄存器:R0~R15R13(SP):棧指針寄存器:指向棧的指針(指向正確的位置),為了保護現場 R14(LR…

QML開發:QML中的基本元素

文章目錄一、概述二、常用基本元素2.1 基礎視覺元素(常用于布局和顯示)2.1.1 元素 Item 的介紹和使用2.1.2 元素 Rectangle 的介紹和使用2.1.3 元素 Image 的介紹和使用2.1.4 元素 Text 的介紹和使用2.2 交互元素(用于接收用戶操作&#xff0…

Spring AI 項目實戰(二十二):Spring Boot + AI +DeepSeek實現智能合同數據問答助手?(附完整源碼)

系列文章 序號 文章名稱 1 Spring AI 項目實戰(一):Spring AI 核心模塊入門 2 Spring AI 項目實戰(二):Spring Boot + AI + DeepSeek 深度實戰(附完整源碼) 3 Spring AI 項目實戰(三):Spring Boot + AI + DeepSeek 打造智能客服系統(附完整源碼) 4

從 0 到 1 創建 InfluxDB 3 表:標簽、字段、命名規范一篇講透

前言 在使用 InfluxDB 3 存儲時序數據時,表的設計堪比蓋房子打地基,地基打歪,數據“塌方”指日可待。InfluxDB 雖然不是傳統意義上的關系型數據庫,但它有自己的一套“審美”:標簽(Tags)和字段(Fields)是它的雙核心,誰先誰后,關系重大,順序寫錯,查詢性能立馬打折。…

[sqlserver] 分析SQL Server中執行效率較低的SQL語句

查詢性能分析較低的SQL語句 -- 查詢性能分析 SELECT TOP 50qs.creation_time AS [編譯時間],qs.last_execution_time AS [最后執行時間],qs.execution_count AS [執行次數],qs.total_worker_time/1000 AS [CPU總時間(ms)],qs.total_elapsed_time/1000 AS [總耗時(ms)],(qs.tota…

SmartX 用戶建云實踐|寶信軟件:搭建“雙架構”私有云平臺,靈活滿足多種業務需求

上海寶信軟件股份有限公司(以下簡稱寶信軟件)系中國寶武實際控制、寶鋼股份控股的上市軟件企業,是中國領先的工業軟件行業應用解決方案和服務提供商,為寶武集團提供整體 IT 基礎架構解決方案與服務。為統一管理寶武集團旗下分散在…

應用科普 | 漫談6G通信的未來

【摘要前言】2019年推出的5G無線通信將移動設備的性能提升到了一個新的水平。首批應用利用5G提供移動寬帶,使消費者能夠以遠超以往的速度進行流媒體傳輸、游戲和連接。隨著技術的成熟,它已成為物聯網的關鍵組成部分,將機器匯集到一個全球網絡…

從零開始用 Eclipse 寫第一個 Java 程序:HelloWorld 全流程 + 避坑指南

對于 Java 初學者來說,第一次用 Eclipse 寫程序往往會手足無措 —— 找不到新建項目的入口、不知道包和類該怎么命名、運行時控制臺突然消失…… 別慌!本文以最經典的 “HelloWorld” 為例,手把手帶你走完從 Eclipse 項目創建到程序運行的完整…