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