在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

工程師筆記|通過 KEIL 制作 QSPI 接口的外部 Flash 下載算法

STM32單片機 ? 來源:未知 ? 2023-02-12 12:10 ? 次閱讀


關鍵詞:KEIL,QSPI,下載算法





目錄預覽




1. 引言

2. MDK 下載算法基礎知識

3.程序擦除操作執(zhí)行流程

4.程序燒錄操作執(zhí)行流程

5. 程序校驗操作執(zhí)行流程

6. MDK 創(chuàng)建下載算法過程通用步驟

7. 添加 QSPI-FLASH 驅動及其有關庫函數(shù)

8. 算法和使用方法

9. 小結



1.引言

隨著用戶的應用越來越復雜以及 GUI 等需要大存儲空間的需求越來越多,很多時候我們需要將代碼或數(shù)據(jù)放在外擴的 Flash 存儲空間。但是這樣存在一個外部 Flash 燒寫的問題,尤其是在應用調試時,需要將代碼或數(shù)據(jù)燒錄到外部 Flash。


如果調試工具不能夠一鍵燒錄,勢必會給調試帶來諸多的麻煩。本文以 STM32H750 芯片為例,介紹通過 KEIL制作 QSPI 接口的外部 Flash 下載算法的方法。


2.MDK 下載算法基礎知識

FLASH 編程算法是一種用于擦除應用程序或將應用程序下載到 Flash 的程序代碼。MDK 本身支持的各種器件都自帶下載算法,存放在 MDK 各種器件的軟件包里面,以STM32H7 為例,算法存在于

KeilSTM32H7xx_DFP2.6.0CMSISFlash

(軟件包版本不同,數(shù)字 2.6.0 會不同)。但是,只有 STM32 官方部分開發(fā)板提供了算法工程,大多數(shù)用戶開發(fā)板都需要自己編寫下載算法。不同的 QSPI-FLASH 的驅動略有差別,因此下載算法也不同。所以,掌握通用的下載算法制作步驟很重要。


MDK 通過創(chuàng)建一批與地址信息無關的函數(shù),實現(xiàn)的功能主要有初始化,擦除,編程,讀取,校驗等,然后在 MDK 調試下載階段,會將算法文件加載到芯片的內部 RAM 里面(加載地址可以通過 MDK 設置),然后 MDK 通過與這個算法文件的交互,實現(xiàn)程序下載,調試階段數(shù)據(jù)讀取等操作。


3.程序擦除操作執(zhí)行流程

如圖 1

(Algorithm Functions (keil.com)所示

可以看出 Flash 的擦除過程包括以下幾個步驟:

a) 加載算法到 RAM(一般指片內 SRAM)

b) 執(zhí)行初始化函數(shù) Init

c) 執(zhí)行擦除操作,根據(jù)用戶的 MDK 配置,這里可以選擇整個芯片擦除或者扇區(qū)擦

除。

d) 擦除操作結束后執(zhí)行 Uninit 函數(shù)





4.程序燒錄操作執(zhí)行流程

如圖 2

(Algorithm Functions (keil.com)

所示,程序燒錄執(zhí)行流程包括以下步驟:

a)對所有的 AXF 文件做 init 初始化(AXF 是 MDK 生成的可執(zhí)行文件,也就是需要燒

錄和調試的代碼)

b)查看燒寫算法 FLM 文件是否存在,如果不存在,則操作結束;如果存在,則繼續(xù)

c)加載算法文件到 RAM 中

d)執(zhí)行初始化函數(shù) Init

e)加載用戶程序代碼至 RAM 中

f)執(zhí)行寫入編程函數(shù) Program Page

g)執(zhí)行 Uninit 函數(shù)

f)操作結束



從以上操作過程中可以看出,我們的用戶代碼是先放在 RAM 中緩存的,然后 IDE 通過調用 RAM 中的 FLASH 寫入函數(shù) Program Page 將代碼寫入到 Flash 中,完成代碼的燒錄。


5.程序校驗操作執(zhí)行流程

程序校驗操作大致流程如圖 3(Algorithm Functions (keil.com)所示

其中校驗要用到 MDK 生成的 axf 可執(zhí)行文件。


校驗就是 把 axf 文件中的程序和實際下載到芯片的程序讀出來做比較。


a)查看燒寫算法 FLM 文件是否存在,如果不存在,則操作失?。蝗绻嬖冢瑒t繼續(xù)

b)加載算法到 RAM 中

c)執(zhí)行初始化 Init

d)檢查校驗算法是否存在:

如果存在,加載應用程序到 RAM 中,然后執(zhí)行校驗算法函數(shù)

如果不存在,計算 CRC,將芯片中讀取出來的數(shù)據(jù)和 RAM 中加載應用計算輸出的

CRC 值做比較。

e)執(zhí)行 Uninit 函數(shù)。

f)替換 BKPT( BreakPoint 斷點指令)為 B. 死循環(huán)指令

h)執(zhí)行 RecoverySupportStop, 恢復支持停止。

i)執(zhí)行 DebugCoreStop,調試內核停止

g)運行應用,若運行成功,則硬件復位

k)操作完成,停止調試端口


6.MDK 創(chuàng)建下載算法過程通用步驟

6.1使用 MDK 提供的通用模板

模板路徑:

C:Keil_v5ARMPacksARMCMSIS5.6.0Device_Template_Flash


請找到自己 MDK 的安裝路徑,找到后將工程拷貝出來。然后將以下兩個文件的只讀屬性取消。FlashDev.c 是 flash 信息描述文件,需要根據(jù)自己的 flash 實際情況修改。FlashPrg.c 是具體擦除、寫入、校驗等接口函數(shù)實現(xiàn)文件,需要自己根據(jù)實際情況進行開發(fā)。


同時MDK提供的工程模板原始名字是 NewDevice.uvprojx, 大家可以根據(jù)自己的需要做修改。



6.2MDK 工程設置

6.2.1 修改使用的芯片型號



6.2.2修改輸出算法文件名


圖6.修改輸出算法文件名


這個名字是方便用戶查看的, 比如設置為 stm32h7,那么輸出的算法文件就是stm32h7.flm。


6.2.3設置算法文件中 RO 和 RW 段的獨立性


選擇“ ROPI”以及 “RWPI”選項, 可以避免用戶不得不將代碼加載到內存中的特定位置。


6.2.4將程序可執(zhí)行文件 axf 修改為 FLM


通過以下命令即可在編譯后生成 FLM 文件。


6.2.5 分散加載設置


分散加載文件 Target.lin 模板中有提供,--diag_suppress L6305 用于屏蔽 L6503 類型警告信息,設置了分散加載后, 此處的配置就不再起作用了。




本文主要介紹了基于 MDK 通用模板和已有工程制作 MDK 下載算法的過程。因文章篇幅有限,未展示完整內容,完整文章請點擊“閱讀原文”下載。



長按掃碼關注公眾號


更多資訊,盡在STM32


點擊“閱讀原文”,可下載原文檔


原文標題:工程師筆記|通過 KEIL 制作 QSPI 接口的外部 Flash 下載算法

文章出處:【微信公眾號:STM32單片機】歡迎添加關注!文章轉載請注明出處。

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 單片機
    +關注

    關注

    6040

    文章

    44604

    瀏覽量

    637064
  • STM32
    +關注

    關注

    2270

    文章

    10918

    瀏覽量

    356832

原文標題:工程師筆記|通過 KEIL 制作 QSPI 接口的外部 Flash 下載算法

文章出處:【微信號:STM32_STM8_MCU,微信公眾號:STM32單片機】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    嵌入式工程師常用的開發(fā)工具有哪些?

    。 一、集成開發(fā)環(huán)境(IDE) IDE是嵌入式開發(fā)的核心工具之一。例如 Keil MDK,它支持多種微控制器架構,提供了強大的代碼編輯、編譯、調試功能。工程師可以在一個集成的環(huán)境中高效地編寫代碼、進行
    發(fā)表于 12-20 15:29

    FPGA算法工程師、邏輯工程師、原型驗證工程師有什么區(qū)別?

    ,共同進步。 歡迎加入FPGA技術微信交流群14群! 交流問題(一) Q:FPGA中的FPGA算法工程師、FPGA邏輯工程師、FPGA原型驗證工程師三者有什么區(qū)別? A:FPGA
    發(fā)表于 09-23 18:26

    在mmWave SDK增加QSPI Flash驅動的示例

    電子發(fā)燒友網站提供《在mmWave SDK增加QSPI Flash驅動的示例.pdf》資料免費下載
    發(fā)表于 09-11 14:20 ?0次下載
    在mmWave SDK增加<b class='flag-5'>QSPI</b> <b class='flag-5'>Flash</b>驅動的示例

    嵌入式軟件工程師和硬件工程師的區(qū)別?

    設備。他們需要理解嵌入式系統(tǒng)的基本原理,熟悉各種硬件接口和通信協(xié)議,以及熟練掌握硬件設計工具。 主要負責的任務和領域 嵌入式硬件工程師的任務主要包括: * 硬件設計:包括電路設計、硬件原型制作、調試等
    發(fā)表于 05-16 11:00

    大廠電子工程師常見面試題#電子工程師 #硬件工程師 #電路知識 #面試題

    電子工程師電路
    安泰小課堂
    發(fā)布于 :2024年04月30日 17:33:15

    STM32F746 QSPIFlash擴展后,添加到工程下載發(fā)現(xiàn)報錯,為什么?

    使用 W25Q128 模塊 ,使用的是微雪STM32F746IGT6的開發(fā)板,在QSPI進行Flash擴展了解發(fā)現(xiàn)需要做一個.FLM的Flash編程算法,我找一個STM32H7的進行修
    發(fā)表于 04-17 06:31

    求助,如何使用openOCD下載程序到stm32h750外部flash?

    QSPIflash驅動描述“stmqspi”,這表明openOCD應該是對外部flash下載有支持的,但我沒找到有關它的實現(xiàn)。
    發(fā)表于 03-27 06:20

    在STLinkV2用下載算法將程序下載到外部flash報錯怎么解決?

    你好:在uVision用下載算法將程序下載到外部flash(QSPIFLASH W25Q256JV) .使用CMSIS_DAP可以下載,執(zhí)行正常. 但是改用STLinkV2,就會出現(xiàn)
    發(fā)表于 03-20 06:12

    NUCLEO-H7A3ZIQ使用keil外部下載算法后提示Flash Timeout的原因?

    我用ospi驅動w25q128,可以讀出id,可以寫入和讀取數(shù)據(jù)。然后自己寫了個KEIL外部下載算法,修改了鏈接器腳本讓圖片資源存儲在w25q128。 但是點擊下載后,Erase過程
    發(fā)表于 03-19 06:18

    U5A9-DK開發(fā)板在TouchGFX模板工程外部下載算法報錯怎么解決?

    U5A9-DK開發(fā)板在TouchGFX的模板工程外部下載算法好像有問題,若圖片資源不多,則可以正常下載,一旦外部資源超過芯片自帶
    發(fā)表于 03-13 08:34

    STM32H7B0通過QSPI地址映射外部flash開始使用正常,出現(xiàn)QSPI功能異常是什么原因導致的?

    STM32H7B0 通過QSPI地址映射外部flash開始使用正常,后面出現(xiàn)QSPI功能異常(直接尋址和地址映射均不能訪問
    發(fā)表于 03-08 06:34

    rtthread studio已經成功編寫了外部flash下載算法,程序也能下載進去但是不能進行調試怎么辦?

    已經成功編寫了外部flash下載算法,程序也能下載進去,但是不能進行調試怎么辦? 我想放在內部flash
    發(fā)表于 02-20 07:24
    主站蜘蛛池模板: 午夜三级福利| 91深夜福利| 国产亚洲午夜精品a一区二区| 亚洲色图欧美视频| 国产成年美女毛片80s| 色色视频免费网| 一级毛片ab片高清毛片| 69xxxxxxxxxhd日本| 国产精品资源在线观看网站| 天天射天天爽| 亚洲精品福利视频| 97玖玖| 二十年等一人小说在线观看| 成人淫片| 高清毛片aaaaaaaaa片| 97影院理论午夜论不卡| 午夜视频在线观看一区| 天天干天天舔天天操| 亚洲午夜网未来影院| 国产成人综合久久| 97久久综合区小说区图片专区| 一级特黄视频| 亚洲精品午夜视频| 日日操操干干| 日日舔夜夜操| 国产第一页在线观看| 国产午夜爽爽窝窝在线观看| 久久国产乱子伦精品免费看| 免费特黄视频| 久久精品国产精品亚洲红杏| 欧美性69| 91三级在线观看| 男人操女人免费视频| 欧美精品黑人性xxxx| 日本不卡视频免费| 狠狠干精品| 一级特黄性色生活片一区二区| 亚洲综合色吧| 欧美一区二区三区免费看| 六月综合| 国产在线美女|