通過 STM32CubeMX制作外部Flash的燒寫驅(qū)動 (.stdlr)
前言
目前,越來越多的應用需要擴展外部的Flash來滿足存儲需求。那么,在調(diào)試及批量生產(chǎn)的過程中,需要對外擴的Flash進行燒錄操作。由于STM32 ST-LINK Utility以及STM32CubeProgrammer中,對Flash支持的型號有限,只能覆蓋一部分MCU和Flash的型號,無法完全滿足客戶的需求。而且,它提供的external loader的制作模板存在覆蓋的芯片型號較少,且無法前期QSPI Flash調(diào)試的問題。本文旨在提供一種通過stm32CubeMX制作external Flash loader的方法??蛻艨梢愿鶕?jù)自己的型號,進行定制化的生成。本文中,以某客戶實際使用的MCU(STM32H750) 和Flash(S25LP128F) 為例進行講解。
準備工作
安裝STM32CubeIDE
安裝MCU對應型號的HAL庫
External loader開發(fā)
External Loader的開發(fā)分成三個部分,第一部分是使用STM32CubeMX進行工程的配置及生成。第二部分是外部Flash的驅(qū)動調(diào)試,主要包含初始化,擦除,寫入以及讀出等操作。第三部分調(diào)用驅(qū)動函數(shù)進行external loader的生成,包括外部Flash信息的定義,包括Flash容量的大小,page的大小,以及Sector相關的信息;第三步中external loader所需要的代碼及對應器件的驅(qū)動,可以在下面的GitHub倉庫中獲取,同時也歡迎大家將自己調(diào)試好的器件驅(qū)動提交到該倉庫。
地址:
https://github.com/WellinZHANG/External_Loader
使用STM32CubeMX生成工程
此處,我們使用STM32CubeIDE集成的STM32CubeMX進行工程的配置和生成。
新建工程
選擇對應的器件,填入工程名稱,并選擇存放位置:


管腳配置
按照硬件原理圖選擇好對應的Flash管腳,此處選擇為Bank2,配置如下圖。注意調(diào)整管腳的速度為High,同時使能QSPI的中斷。FlashSize值設置為N,F(xiàn)lash的大小配置2N+1。


時鐘配置
根據(jù)板子上的時鐘源,進行對應的時鐘配置,此處采用內(nèi)部作為系統(tǒng)PLL的時鐘源。

生成工程
切換到Code Generator選項卡,勾選“Generate perioheral initialization as pair of ‘.c/.h’files per peripheral”選項。

調(diào)試QSPI驅(qū)動
從開篇提到的GitHub倉庫中獲取相關的驅(qū)動代碼。

第一步
將External-Loaders QSPI testing目錄mian_test.c中的代碼添加到工程中對應的main.c文件中。




注意添加代碼時保留USER CODE BEGIN x和USER CODE END x標簽,否則添加的代碼會在Cube MX重新生成代碼時被覆蓋掉。
第二步
將External-LoadersQSPI DriversIS25LP128F目錄下的QSPI的HAL驅(qū)動文件替換工程中對應的文件。

第三步
打開CubeMX,重新生成工程。因為為了適配所有系列的QSPI接口,GitHub所提供QSPI的HAL驅(qū)動中,沒有提供相應的QSPI外設配置函數(shù),需要通過CubeMX來生成。

第四步
如上圖所示由于每個型號的FLASH的控制指令略有差別,所以在此步需要根據(jù)自己選用的QPSI FLASH器件進行調(diào)整。同時需要進行調(diào)試QSPI的讀寫是否正常。如果QSPIF lash讀寫不正常,那么在下圖中標注的位置添加斷點,就可以排查是哪一個環(huán)節(jié)出錯,進一步對驅(qū)動進行調(diào)整。

修改配置生成QSPI Loader
完成QSPI的驅(qū)動調(diào)試之后,我們需要添加生成external Loader所需要的代碼并修改對應的配置。
第一步
添加對應的代碼,存放在External-LoadersLoader_Files目錄下,由于H7和其他的系列的linker file有所區(qū)別,所以此處分為H7和others兩個文件夾進行存放。我們此處選用H7目錄下的問題件。將所有的文件添加到工程中。


第二步
修改Dev_Inf.c中的name為你想設置的名稱,一般設置為MCU+Flash名稱。

第三步
修改Linker的配置,通過“project”-> “Properties ”打開設置頁。將紅框內(nèi)的ld文件修改為linker.ld.(已經(jīng)在第一步中添加到工程)。

第四步
修改配置,編譯后生成stdlr文件。通過“project”-> “Properties ”打開設置頁,在 “post build steps”處添加如下指令:

最后,編譯便可在工程目錄下生成對應的stdlr文件。將其復制到STM32CubeProgrammer安裝目錄下的extral loader文件夾下,便可使用。

總結(jié)
通過該方法可以快速的生成一個外部燒寫腳本對外部的QSPI FLASH進行燒錄。
責任編輯:xj
原文標題:工程師筆記 | 通過 STM32CubeMX制作外部Flash的燒寫驅(qū)動 (.stdlr)
文章出處:【微信公眾號:STM32單片機】歡迎添加關注!文章轉(zhuǎn)載請注明出處。
-
FlaSh
+關注
關注
10文章
1761瀏覽量
155951 -
驅(qū)動
+關注
關注
12文章
1994瀏覽量
88732 -
STM32
+關注
關注
2313文章
11195瀏覽量
374751 -
燒寫
+關注
關注
0文章
59瀏覽量
14893
原文標題:工程師筆記 | 通過 STM32CubeMX制作外部Flash的燒寫驅(qū)動 (.stdlr)
文章出處:【微信號:STM32_STM8_MCU,微信公眾號:STM32單片機】歡迎添加關注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
如何在 STM32Cube CMake 工程中添加源文件
LAT1574_如何在 STM32Cube CMake 工程中添加源文件
LAT1198+通過 KEIL 制作 QSPI 接口的外部 Flash 下載算法應用筆記
淺談PY32離線燒錄器的燒寫滾碼功能
如何通過STM32CubeMX制作外部Flash的燒寫驅(qū)動 (.stdlr)
評論