Stm32 燒錄 Micropython

目錄

前言

準備工作

開始操作

問題回顧

后記


前言

? ? ? ?去年曾經嘗試Pico制作openmv固件,由于知識儲備不夠最后失敗了,留了一個大坑,有了前幾天的基礎,慢慢補齊知識,最近這一周一直在學習如何編譯Stm固件并燒錄到單片機里,之前編譯過lvgl for pico的固件,所以也算是熟門熟路了。

準備工作

  • 我有五塊Stm32的單片機,頭兩個失敗原因是,編譯出來的固件超過FLASH了。

F103C8T6(失敗)

F401RCT6(失敗)

F411CEU6(成功)

F407VET6

(未試)

H743CEU6

(未試)

CPU72MHz84MHz100MHz168MHz480MHz
RAM20KB64KB128KB192KB1MB
FLASH64KB256KB512KB512KB2MB
  • Make的安裝 =====> 用于管理整個編譯和鏈接過程
  • Gcc的安裝 =====> 編譯mpy-cross
  • arm-none-eabi-gcc的安裝 =====>用于將 C/C++ 源代碼編譯成適用于 ARM 嵌入式系統的機器代碼
  • F411CEU6的?配置文件
  • dfu文件的 燒錄工具
  • 其他,用DfuSe不能識別,用STM32CubeProgrammer可以燒錄bin

開始操作

  • 獲取Micropython的代碼,這里我選擇是1.24.0版本
git clone https://github.com/micropython/micropython.git
cd micropython
git checkout v1.24.0
git submodule update --init
  • 獲取配置文件,并放置在micropython\ports\stm32\boards下,如果不需要修改配置文件,可直接編譯
make BOARD=WEACT_F411CEU6
  • 可以看到在stm32文件夾下新生成了一個“build-WEACT_F411CEU6”,可以在這里邊找到
firmware.dfu
firmware0.bin
firmware1.bin
  • 用單片機的typeC插到電腦上,使用Boot按鈕和Reset按鈕操作,直到電腦設備管理器中看到“Stm32 BootLoader”,如果沒有看到,則需要安裝驅動(可以用zadig安裝)
  • 這時,使用dfu工具查看,會看到如下信息,可以看到 [0483:df11] 即為目標機
C:\Users\Administrator>dfu-util --list
dfu-util 0.11Copyright 2005-2009 Weston Schmidt, Harald Welte and OpenMoko Inc.
Copyright 2010-2021 Tormod Volden and Stefan Schmidt
This program is Free Software and has ABSOLUTELY NO WARRANTY
Please report bugs to http://sourceforge.net/p/dfu-util/tickets/Found DFU: [0483:df11] ver=2200, devnum=4, cfg=1, intf=0, path="1-1.3", alt=3, name="@Device Feature/0xFFFF0000/01*004 e", serial="3362334E3034"
Found DFU: [0483:df11] ver=2200, devnum=4, cfg=1, intf=0, path="1-1.3", alt=2, name="@OTP Memory /0x1FFF7800/01*512 e,01*016 e", serial="3362334E3034"
Found DFU: [0483:df11] ver=2200, devnum=4, cfg=1, intf=0, path="1-1.3", alt=1, name="@Option Bytes  /0x1FFFC000/01*016 e", serial="3362334E3034"
Found DFU: [0483:df11] ver=2200, devnum=4, cfg=1, intf=0, path="1-1.3", alt=0, name="@Internal Flash  /0x08000000/04*016Kg,01*064Kg,03*128Kg", serial="3362334E3034"
  • 執行燒錄
D:\A_GitCode\micropython\ports\stm32\build-WEACT_F411CEU6>dfu-util -a 0 -s :leave -D firmware.dfu
dfu-util 0.11Copyright 2005-2009 Weston Schmidt, Harald Welte and OpenMoko Inc.
Copyright 2010-2021 Tormod Volden and Stefan Schmidt
This program is Free Software and has ABSOLUTELY NO WARRANTY
Please report bugs to http://sourceforge.net/p/dfu-util/tickets/Match vendor ID from file: 0483
Match product ID from file: df11
Multiple alternate interfaces for DfuSe file
Opening DFU capable USB device...
Device ID 0483:df11
Device DFU version 011a
Claiming USB DFU Interface...
Setting Alternate Interface #0 ...
Determining device status...
DFU state(10) = dfuERROR, status(10) = Device's firmware is corrupt. It cannot return to run-time (non-DFU) operations
Clearing status
Determining device status...
DFU state(2) = dfuIDLE, status(0) = No error condition is present
DFU mode device DFU version 011a
Device returned transfer size 2048
DfuSe interface name: "Internal Flash  "
File contains 1 DFU images
Parsing DFU image 1
Target name: ST...
Image for alternate setting 0, (2 elements, total size = 314432)
Setting Alternate Interface #0 ...
Parsing element 1, address = 0x08000000, size = 14704
Erase           [=========================] 100%        14704 bytes
Erase    done.
Download        [=========================] 100%        14704 bytes
Download done.
Parsing element 2, address = 0x08020000, size = 299712
Erase           [=========================] 100%       299712 bytes
Erase    done.
Download        [=========================] 100%       299712 bytes
Download done.
Done parsing DfuSe file
Submitting leave request...
Transitioning to dfuMANIFEST state
  • 結束燒錄,可以看到設備管理器出現一個大容量存儲設備,這時就可以打開Thonny,編寫一段代碼查看燒錄的固件情況

問題回顧

  • 這次遇到的問題,比前幾篇遇到的都多,前前后后大概一周時間,包括等F411到貨的時間
  • F103和F401的問題是固件過大,套路摸的差不多,mpconfigboard.h定義組件信息,決定哪些硬件組件和功能在當前開發板上啟用、mpconfigboard.mk定義鏈接信息,指定固件構建過程中的源文件、庫文件、鏈接器腳本等、stm32f4xx_hal_conf.h定義庫信息,配置 STM32 HAL 庫的使用情況,決定哪些外設和功能被啟用、pins.csv定義引腳信息,指定開發板上各個引腳的名稱、類型、功能等,這些引腳不是那么重要,只是為了方便起個別名,最重的還有一個就是HSE,F411這個外置了一個25MHz的晶振
  • 除了固件過大的問題,再就是生成的bin固件是兩個,一個0.bin,一個1.bin,走了很多彎路,最后得到結論,這兩個都要燒錄到單片機中(上文我選用的dfu,所以就不用管bin了),根據你mpconfigboard.mk中的地址來設置,如果沒設置,可以在make的時候設置V=1查看

后記

? ? ? ?還是吃了基礎薄弱的虧,弄了一下午,期間還走了用Daplink測串口、晶振計算錯誤等彎路,最后找到了這個標準的配置文件后,才算排除了一些因素,最后鎖定在bin燒錄問題上,最后換dfu才成功。好啦,接下來可以踏實的嘗試畫PCB了,回過頭來再繼續補坑Micropython+Pico2+Lvgl(官方的停止更新了)、Micropython+Pico1/Pico2+Openmv(官方不支持)。考慮到Lvgl的C版本還一直活躍,可以繼續嘗試C+Stm32+Lvgl。另外單片機支持TensorFlow Lite,做一些簡單的邊緣計算,還是可以玩玩的。

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

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

相關文章

鹽化行業數字化轉型規劃詳細方案(124頁PPT)(文末有下載方式)

資料解讀:《鹽化行業數字化轉型規劃詳細解決方案》 詳細資料請看本解讀文章的最后內容。 該文檔聚焦鹽化行業數字化轉型,全面闡述了鹽化企業信息化建設的規劃方案,涵蓋戰略、架構、實施計劃、風險及效益等多個方面,旨在通過數字化…

2025年人工智能火爆技術總結

2025年人工智能火爆技術總結: 生成式人工智能 生成式人工智能可生成高質量的圖像、視頻、音頻和文本等多種內容。如昆侖萬維的SkyReels-V2能生成無限時長電影,其基于擴散強迫框架,結合多模態大語言模型和強化學習等技術,在運動動…

邊緣計算革命:大模型輕量化部署全棧實戰指南

當ResNet-152模型能在樹莓派4B上實現每秒27幀實時推理時,邊緣智能時代真正到來。本文解析從模型壓縮到硬件加速的完整技術棧,實測Transformer類模型在移動端的部署時延可壓縮至16ms,揭示ARM芯片實現INT4量化的工程秘訣與十種典型場景優化方案…

邊緣計算:數字世界的”末梢神經系統”解析-優雅草卓伊凡

邊緣計算:數字世界的”末梢神經系統”解析-優雅草卓伊凡 一、邊緣計算深度解析 1.1 邊緣計算的定義與架構 邊緣計算(Edge Computing)是一種分布式計算范式,它將數據處理能力從傳統的集中式云數據中心推向網絡邊緣,更…

面試手撕——迭代法中序遍歷二叉樹

思路 訪問順序和處理順序不一致導致迭代法難寫,體現在總要先遍歷根節點,才能訪問左右孩子,用null標記,null標記的節點表示已經訪問過了,下一次可以處理,所以在當前棧頂節點不是null的時候,都要…

AD系列:Windows Server 2025 安裝AD CS角色和頒發證書

什么是 Active Directory 證書服務? Active Directory 證書服務 (AD CS) 是一個 Windows Server 角色,負責頒發和管理在安全通信和身份驗證協議中使用的公鑰基礎結構 (PKI) 證書。 頒發和管理證書 數字證書可用于對電子文檔和消息進行加密和數字簽名&…

kubernetes》》k8s》》Service 、Ingress 區別

K8S>>Service 資料 K8S >>Ingress 資料 Ingress VS Service 物理層數據鏈路層網絡層傳輸層會話層表示層應用層 Ingress是一種用于暴露HTTP和HTTPS路由的資源,它提供了七層(應用層)的負載均衡功能。Ingress可以根據主機名、…

【java WEB】恢復補充說明

Server 出現javax.servlet.http.HttpServlet", according to the project’s Dynamic Web Module facet version (3.0), was not found on the Java Build Path. 右鍵項目 > Properties > Project Facets。Dynamic Web Module facet version選4.0即可 還需要在serv…

VMware 創建虛擬機+簡易安裝Ubuntu的詳細操作步驟

VMware 創建虛擬機安裝Ubuntu的詳細操作步驟 一、創建虛擬機1.1 點擊創建新的虛擬機1.2 選擇自定義創建虛擬機1.3 選擇虛擬機的硬件兼容性1.4 安裝客戶機操作系統1.5 簡易安裝信息1.6 命名虛擬機名稱1.7 處理器配置1.8 虛擬機內核選擇1.9 網絡類型1.9 選擇I/O 控制器類型1.10 選…

GCC-C語言“自定義段”

一、起因 事情的起因是這樣的,在看別人代碼時,發現了一種很有意思的寫法,因為本人主要是以應用層開發為主,所以對這種寫法還是比較少見的,所以研究了一下,就牽扯出了一些知識點,這里先賣個關子,繼續往下看。 二、經過 發現了一串這樣的代碼 static void do_mac(mcmd_…

【信息系統項目管理師-論文真題】2021上半年論文詳解(包括解題思路和寫作要點)

更多內容請見: 備考信息系統項目管理師-專欄介紹和目錄 文章目錄 試題1:論信息系統項目的合同管理1、寫作要點2、解題思路項目合同管理的過程項目合同主要的條款內容試題2:論信息系統項目的范圍管理1、寫作要點2、解題思路項目范圍管理的過程核心范圍對應的需求跟蹤矩陣項目…

python2反編譯部分

文章目錄 1、所需環境2、確認打包工具(沒成功)3、 解包.exe文件(以PyInstaller為例) - useful【***總的來說這一步對我有用】4、定位關鍵文件 - useful5、 修復.pyc文件頭(關鍵步驟!)- maybe-ig…

基于STM32的中點圓算法,畫空心圓的函數

中點圓算法(Midpoint Circle Algorithm)是一種高效繪制圓的算法,它利用圓的對稱性和整數運算來避免浮點計算,非常適合嵌入式系統使用。 空心圓繪制函數實現 /*** brief 使用中點圓算法繪制空心圓* param x0: 圓心x坐標* param y0: 圓心y坐標* param…

Android Kotlin 項目完整集成 Bugly 異常監控指南

Android Kotlin 項目集成 Bugly 異常監控完整指南 一、Bugly 簡介 Bugly 是騰訊提供的專業移動應用異常監控平臺,支持: 崩潰報告(Java/Native)錯誤分析性能監控熱更新功能(需額外配置) 二、集成步驟 1…

【電腦維修】MERCURY水星無線網卡導致 Windows 網絡適配器無法連接的一種情況

故障現象 Powershell 無法啟動, Terminal 無法啟動, CMD 無法啟動。 操作1 重新拔插 MERCURY 無線USB網卡,上述各種終端恢復相應。 分析 應該是MERCURY驅動故障導致卡死 操作2 磁盤出現 MERCURY 盤。里面是一個 MERCURY.exe 驅動安裝程…

Docker 打上 Tag 和 Push 的意思

在 Docker 中,打 Tag(Tagging) 和 Push(Pushing) 是兩個關鍵操作,用于管理鏡像的版本并上傳到鏡像倉庫(如 Docker Hub、阿里云 ACR、Harbor 等)。 1. 打 Tag(Tagging&…

簡化excel校驗提高開發效率

業務背景:上傳excel文件進行基礎數據校驗,然而東西太多寫著寫著就...自然成了測試的KPI了 解決思路:使用現有的注解處理,原理使用validate注解原理 直接上干貨,一行代碼搞定校驗: ValidateUtils.validat…

基于Koa實現的服務端渲染 ?

前段時間剛寫完畢業論文,現在一上來就是“基于”,哈哈。🤯 這篇文章持續更新,涉及到的技術棧是Koa、Vue和Vite (用React手搓服務端渲染好麻煩)。但是現在能上生產的服務端渲染估計是Next(配合Re…

Linux運維——Vim基礎

Vim基礎 一、移動光標1.1、基礎移動1.2、屏幕滾動 二、編輯操作2.1、插入模式2.2、刪除與修改2.3、復制粘貼 三、搜索與替換3.1、搜索3.2、替換 4、分屏與窗口管理4.1、分屏操作4.2、窗口調整 五、宏與批量操作六、效率技巧七、操作符7.1、內置操作符7.2、操作符 文本對象&…

git操作合集

更新文件 在 Git 中更新已經上傳到倉庫的文件 1、檢查當前狀態 首先,打開終端或命令行工具,進入你的 Git 倉庫目錄(即包含 .git 文件夾的目錄)。運行以下命令來查看當前倉庫的狀態: git status 此命令會顯示哪些文…