引言
隨著用戶的應用越來越復雜以及 GUI 等需要大存儲空間的需求越來越多,很多時候我們需要將代碼或數(shù)據(jù)放在外擴的 Flash 存儲空間。但是這樣存在一個外部 Flash 燒寫的問題,尤其是在應用調(diào)試時,需要將代碼或數(shù)據(jù)燒錄到外部 Flash。如果調(diào)試工具不能夠一鍵燒錄,勢必會給調(diào)試帶來諸多的麻煩。本文以 STM32H750 芯片為例,介紹通過 KEIL制作 QSPI 接口的外部 Flash 下載算法的方法。
MDK 下載算法基礎(chǔ)知識
FLASH 編程算法是一種用于擦除應用程序或?qū)贸绦蛳螺d到 Flash 的程序代碼。MDK 本身支持的各種器件都自帶下載算法,存放在 MDK 各種器件的軟件包里面,以STM32H7 為例,算法存在于 KeilSTM32H7xx_DFP2.6.0CMSISFlash(軟件包版本不同,數(shù)字 2.6.0 會不同)。但是,只有 STM32 官方部分開發(fā)板提供了算法工程,大多數(shù)用戶開發(fā)板都需要自己編寫下載算法。不同的 QSPI-FLASH 的驅(qū)動略有差別,因此下載算法也不同。所以,掌握通用的下載算法制作步驟很重要。
MDK 通過創(chuàng)建一批與地址信息無關(guān)的函數(shù),實現(xiàn)的功能主要有初始化,擦除,編程,讀取,校驗等,然后在 MDK 調(diào)試下載階段,會將算法文件加載到芯片的內(nèi)部 RAM 里面(加載地址可以通過 MDK 設(shè)置),然后 MDK 通過與這個算法文件的交互,實現(xiàn)程序下載,調(diào)試階段數(shù)據(jù)讀取等操作。
程序擦除操作執(zhí)行流程
程序燒錄操作執(zhí)行流程
程序校驗操作執(zhí)行流程
MDK 創(chuàng)建下載算法過程通用步驟
添加 QSPI-FLASH 驅(qū)動及其有關(guān)庫函數(shù)
算法使用方法
算法生成后,將對應的算法 FLM 文件拷貝到 MDK 安裝路徑下 C:Keil_v5ARMFlash。
小結(jié)
本文介紹了基于 MDK 通用模板和已有工程制作 MDK 下載算法的過程。制作過程很容易造成失敗,除了要注意工程中的相關(guān)設(shè)置以外,建議多參考 ST 官方固件包提供的DEMO,有時可以直接找到對應型號 MCU 的燒寫算法 DEMO,如果沒有可以參考功能外設(shè)相似的 MCU 工程 DEMO,也可以在其 DEMO 上直接修改,主要是替換 QSPI 的驅(qū)動(引腳、命令等),還有就是注意自己板子 MCU 的時鐘配置,建議直接拷貝可以成功運行工程中的時鐘配置。