macOS燒錄stm32程序初步成功

完整總結:STM32H7 項目編譯與燒錄流程(macOS + OpenOCD/GDB)


1?? 編譯工程

在項目目錄下執行 make,生成 ELF 文件(如 Blink.elf):

cd /Users/code/Stm32code/Blink/build
make clean   # 可選:清理舊文件
make         # 編譯生成 Blink.elf

2?? 啟動 OpenOCD 調試服務

終端1:啟動 OpenOCD 連接 STM32H7(ST-Link V2):

openocd -f interface/stlink.cfg -f target/stm32h7x.cfg

關鍵輸出

Info : STLINK V2J17S4 (API v2) VID:PID 0483:3748
Info : Target voltage: 3.226333
Info : Device: STM32H74x/75x
Info : flash size probed value 2048k
Info : Bank (0) size is 1024 kb, base address is 0x08000000

注意

  • 如果出現 Error: erase time-out or operation error sector 0,可能是 Flash 保護或時序問題(后續需處理)。

3?? 使用 GDB 燒錄程序

終端2:啟動 GDB 并連接 OpenOCD:

arm-none-eabi-gdb -q /Users/code/Stm32code/Blink/build/Blink.elf
(gdb) target remote localhost:3333  # 連接OpenOCD
(gdb) monitor reset halt            # 復位并暫停CPU
(gdb) load 

若燒錄失敗

(gdb) load
Error erasing flash with vFlashErase packet

解決方法

  1. 手動擦除 Flash
    (gdb) monitor flash erase_sector 0 0 7  # 擦除所有扇區
    
  2. 降低 ST-Link 時鐘速度
    (gdb) monitor adapter speed 1000  # 1MHz
    
  3. 重新燒錄
    (gdb) load  # 成功輸出如下
    
    成功輸出
    Loading section .isr_vector, size 0x298 lma 0x8000000
    Loading section .text, size 0x1468 lma 0x8000298...
    Start address 0x08001638, load size 5928
    Transfer rate: 5 KB/sec, 988 bytes/write.
    

4?? 運行與調試
(gdb) monitor reset halt      # 確保復位
(gdb) continue                # 啟動程序

驗證

  • 檢查硬件行為(如 LED 閃爍)。
  • 如需調試,可設置斷點:
    (gdb) break main
    (gdb) continue
    

5?? 關鍵問題與解決
  1. Flash 擦除失敗

    • 原因:STM32H7 的 Flash 接口時序敏感或保護位未解除。
    • 解決
      • 手動擦除扇區:monitor flash erase_sector 0 0 7
      • 降低 ST-Link 速度:monitor adapter speed 1000
  2. HardFault 異常

    • 如果復位后卡在 HardFault,檢查:
      • 向量表地址是否正確(應為 0x08000000)。
      • 時鐘配置是否匹配硬件(H7 需設置正確的 Flash 等待周期)。
  3. OpenOCD 警告

    Warn : Prefer GDB command "target extended-remote :3333"
    
    • 可忽略,或改用 target extended-remote :3333(功能相同)。

完整流程圖

make編譯
終端1:啟動OpenOCD
終端2:GDB連接OpenOCD
首次load失敗?
手動擦除Flash+降速
重新load
燒錄成功
復位并運行

最終建議

  1. 自動化腳本:將常用命令寫入腳本(如 flash.sh):
    #!/bin/bash
    arm-none-eabi-gdb -ex "target remote :3333" -ex "monitor reset halt" -ex "load" -ex "monitor reset run" Blink.elf
    
  2. 備用燒錄方式:直接使用 OpenOCD 命令(避免 GDB 交互):
    openocd -f interface/stlink.cfg -f target/stm32h7x.cfg -c "program Blink.elf verify reset exit"
    

通過此流程,可高效完成 STM32H7 的編譯、燒錄和調試。遇到問題時,優先檢查 硬件連接Flash 擦除狀態
附帶幾張圖片

在這里插入圖片描述

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

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

相關文章

正則表達式的修飾符

修飾符 修飾符不寫在正則表達式里,標記位于表達式之外 /正則表達式/修飾符gglobal - 全局匹配 查找所有的匹配項。 i i (ignore case) - 忽略大小寫 示例:/abc/i 可以匹配 "abc", "Abc", "ABC" 等

JS浮點數精度問題

在JavaScript開發中,浮點數精度問題是一個常見的陷阱。本文將深入探討JavaScript中浮點數精度問題的原因、影響以及解決方案。 一、浮點數精度常見問題 (一)加法運算 console.log(0.1 0.2); // 0.30000000000000004 console.log(0.7 0.1…

本地Markdown開源知識庫選型指南

本地Markdown開源知識庫選型指南 以下是幾款優秀的本地Markdown開源知識庫解決方案,適合不同需求場景: 1. Obsidian (非完全開源但免費) 特點:基于Markdown的本地優先知識管理,豐富的插件生態優勢:雙向鏈接、圖形視…

蘇州SAP代理公司排名:工業園區企業推薦的服務商

目錄 一、SAP實施商選擇標準體系 1、行業經驗維度 2、實施方法論維度 3、資質認證維度 4、團隊實力維度 二、SAP蘇州實施商工博科技 1、SAP雙重認證,高等院校支持 2、以SAP ERP為核心,助力企業數字化轉型 三、蘇州使用SAP的企業 蘇州是中國工業…

springboot項目下面的單元測試注入的RedisConnectionFactory類redisConnectionFactory值為什么為空呢?

你遇到的問題是: RedisConnectionFactory redisConnectionFactory 在單元測試中為 null 這是 Spring Boot 單元測試中非常常見的問題,根本原因是你的測試類沒有啟用 Spring 容器上下文,導致 Resource 注解無法注入 Bean。 ? 正確做法&…

光電學、計算機科學及算法國際會議(OCSA 2025)征稿啟事?

在科技浪潮奔涌向前的當下,光電學、計算機科學及算法領域的創新成果不斷涌現,持續重塑著各個行業的格局,深刻影響著我們的生活。為了進一步促進該領域的學術交流與合作,匯聚全球智慧,光電學、計算機科學及算法國際會議…

小樣本分類新突破:QPT技術詳解

問題導向式提示調優(QPT) 這篇論文主要講了一個針對小樣本(數據量少)文本分類問題的新方法,叫問題導向式提示調優(QPT)。 核心思路是讓預訓練語言模型(比如BERT的升級版RoBERTa)在少量標注數據下,通過設計特定的“提問式模板”和“標簽詞擴展技術”來提升分類效果。…

Oracle EBS 12.1 處理ISG 發布的wsdl 被請求時遇到500錯誤

Oracle 12.1.3 通過ISG 發布了一個服務,該服務在被頻繁調用的時候,出現500 錯誤,臨時解決方案是可以通過重啟oafm組件解決,但是需要定位原因。 排查日志路徑 $INST_TOP/logs/ora/10.1.3/opmn/default_group~oafm~default_group~1…

shadcn/ui

文章目錄 前言? 核心特點📦 支持組件(常用)🚀 安裝使用(框架支持)初始化(Next.js 項目為例)添加一個組件 🧠 對比其他組件庫📘 官方資源? 總結? 功能特性&…

力扣每日一題——找到離給定兩個節點最近的節點

目錄 題目鏈接:2359. 找到離給定兩個節點最近的節點 - 力扣(LeetCode) 題目描述 解法一:雙指針路徑交匯法? 基本思路 關鍵步驟 為什么這樣可行呢我請問了? 舉個例子 特殊情況 Java寫法: C寫法&a…

Termux可用中間人網絡測試工具Xerosploit

Termux可用中間人網絡測試工具Xerosploit。 Xerosploit 是一款基于 MITM 的本地網絡滲透測試工具包。 食用方法: git clone https://github.com/LionSec/xerosploit cd xerosploit sudo python3 install.py 運行: sudo xerosploit 使用備注&#xff1…

vue3 導出excel

需求&#xff1a;導出自帶格式的excel表格 1.自定義二維數組格式 導出 全部代碼&#xff1a; <el-button click"exportExcel">導出</el-button> const exportExcel () > {const data [[商品, 單價, 數量, 總價],[A, 100, 1.55, { t: n, f: B2*C2…

【SQL】關鍵字

ORDER BY ORDER BY(排序) 語句可以按照一個或多個列的值進行升序&#xff08;ASC&#xff09;或降序&#xff08;DESC&#xff09;排序。 MAX / MIN MAX() 函數返回一組值中的最大值。這個函數常用于數字字段&#xff0c;但也可以用于文本字段來找出按字典順序最后的元素。 …

深度學習篇---OC-SORT實際應用效果

OC-SORT 算法在實際應用中的效果可從準確性、魯棒性、效率三個核心維度評估,其表現與傳統多目標跟蹤算法(如 SORT、DeepSORT)相比有顯著提升,尤其在復雜場景中優勢突出。以下是具體分析: 一、準確性:目標關聯更可靠 1. 遮擋場景下的 ID 保持能力 優勢表現: 傳統算法(…

處理知識庫文件_編寫powershell腳本文件_批量轉換其他格式文件到pdf文件---人工智能工作筆記0249

最近在做部門知識庫&#xff0c;選用的dify&#xff0c;作為rag的工具&#xff0c;但是經過多個對比&#xff0c;最后發現&#xff0c; 比較好用的是&#xff0c;納米搜索&#xff0c;但是可惜納米搜索無法在內網使用&#xff0c;無法把知識庫放到本地&#xff0c;導致 有信息…

NSSCTF [NISACTF 2022]ezheap

2058.[NISACTF 2022]ezheap(堆溢出) [NISACTF 2022]ezheap 1.準備 2.ida分析 main函數 int __cdecl main(int argc, const char **argv, const char **envp) {char *command; // [esp8h] [ebp-10h]char *s; // [espCh] [ebp-Ch]setbuf(stdin, 0);setbuf(stdout, 0);s (cha…

微信小店推客系統達人用戶管理的數據支持和便利

達人粉絲畫像關聯&#xff1a;系統通過技術手段&#xff0c;一定程度上獲取達人粉絲的畫像數據&#xff0c;如年齡分布、性別比例、地域分布、消費偏好等。運營者可以根據這些粉絲畫像&#xff0c;為達人匹配更符合其粉絲需求的商品。例如&#xff0c;若某達人的粉絲以年輕女性…

LeetCode 215:數組中的第K個最大元素 - 兩種高效解法詳解

文章目錄 問題描述解法一&#xff1a;快速選擇算法&#xff08;QuickSelect&#xff09;算法思想算法步驟Java實現復雜度分析算法特點 解法二&#xff1a;最小堆&#xff08;優先隊列&#xff09;算法思想算法步驟Java實現復雜度分析算法特點 兩種解法比較測試示例總結 在算法面…

視頻壓制(Video Encoding/Compression)

視頻壓制是指通過特定的算法和技術&#xff0c;將原始視頻文件轉換為更小體積或更適合傳播的格式的過程。其核心目的是在盡量保持畫質的前提下&#xff0c;減少視頻的文件大小&#xff0c;或適配不同播放設備、網絡環境的需求。 --- ### **關鍵概念解析** 1. **為什么需要壓制…

如何做好一個決策:基于 Excel的決策樹+敏感性分析應用

決策點: 開發新產品? (是 / 否) 因素 (如果是): 市場接受度 (高 / 中 / 低);概率: 高(0.3), 中(0.5), 低(0.2) 結果值 (NPV): 高(+$1M), 中(+$0.2M), 低(-$0.5M) 不開發成本/收益: $0 開發計算: EMV(市場接受度) = (0.3 * 1M) + (0.5 * 0.2M) + (0.2 * -0.5M) = $0.3M + $…