18video性欧美19sex,欧美高清videosddfsexhd,性少妇videosexfreexxx片中国,激情五月激情综合五月看花,亚洲人成网77777色在线播放

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

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

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

STM32單片機(jī) ? 來(lái)源:未知 ? 2023-02-12 12:10 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群


關(guān)鍵詞:KEIL,QSPI,下載算法





目錄預(yù)覽




1. 引言

2. MDK 下載算法基礎(chǔ)知識(shí)

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

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

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

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

7. 添加 QSPI-FLASH 驅(qū)動(dòng)及其有關(guān)庫(kù)函數(shù)

8. 算法和使用方法

9. 小結(jié)



1.引言

隨著用戶的應(yīng)用越來(lái)越復(fù)雜以及 GUI 等需要大存儲(chǔ)空間的需求越來(lái)越多,很多時(shí)候我們需要將代碼或數(shù)據(jù)放在外擴(kuò)的 Flash 存儲(chǔ)空間。但是這樣存在一個(gè)外部 Flash 燒寫的問(wèn)題,尤其是在應(yīng)用調(diào)試時(shí),需要將代碼或數(shù)據(jù)燒錄到外部 Flash。


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


2.MDK 下載算法基礎(chǔ)知識(shí)

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

KeilSTM32H7xx_DFP2.6.0CMSISFlash

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


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


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

如圖 1

(Algorithm Functions (keil.com)所示

可以看出 Flash 的擦除過(guò)程包括以下幾個(gè)步驟:

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

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

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

除。

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





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

如圖 2

(Algorithm Functions (keil.com)

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

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

錄和調(diào)試的代碼)

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

c)加載算法文件到 RAM 中

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

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

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

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

f)操作結(jié)束



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


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

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

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


校驗(yàn)就是 把 axf 文件中的程序和實(shí)際下載到芯片的程序讀出來(lái)做比較。


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

b)加載算法到 RAM 中

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

d)檢查校驗(yàn)算法是否存在:

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

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

CRC 值做比較。

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

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

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

i)執(zhí)行 DebugCoreStop,調(diào)試內(nèi)核停止

g)運(yùn)行應(yīng)用,若運(yùn)行成功,則硬件復(fù)位

k)操作完成,停止調(diào)試端口


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

6.1使用 MDK 提供的通用模板

模板路徑:

C:Keil_v5ARMPacksARMCMSIS5.6.0Device_Template_Flash


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


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



6.2MDK 工程設(shè)置

6.2.1 修改使用的芯片型號(hào)



6.2.2修改輸出算法文件名


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


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


6.2.3設(shè)置算法文件中 RO 和 RW 段的獨(dú)立性


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


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


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


6.2.5 分散加載設(shè)置


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




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



長(zhǎng)按掃碼關(guān)注公眾號(hào)


更多資訊,盡在STM32


點(diǎn)擊“閱讀原文”,可下載原文檔


原文標(biāo)題:工程師筆記|通過(guò) KEIL 制作 QSPI 接口的外部 Flash 下載算法

文章出處:【微信公眾號(hào):STM32單片機(jī)】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

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

    關(guān)注

    6071

    文章

    45265

    瀏覽量

    660783
  • STM32
    +關(guān)注

    關(guān)注

    2301

    文章

    11084

    瀏覽量

    369797

原文標(biāo)題:工程師筆記|通過(guò) KEIL 制作 QSPI 接口的外部 Flash 下載算法

文章出處:【微信號(hào):STM32_STM8_MCU,微信公眾號(hào):STM32單片機(jī)】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    ART-Pi中啟用外部flash是在哪里配置了qspi的引腳呢?

    1、我目前是自己學(xué)習(xí)畫了一塊兒板子,想要學(xué)習(xí)rtthread+lvgl,我在添加完lvgl包的時(shí)候報(bào)錯(cuò)rom超了。于是了解到需要使用外部flash。我的板子上也連接了QSPI接口的W2
    發(fā)表于 10-10 06:09

    CW32L012實(shí)現(xiàn)外部flash下載算法

    外部flash或者內(nèi)置的片上flash,都是編譯器通過(guò)調(diào)用寫好的FLM文件來(lái)實(shí)現(xiàn)下載,單片機(jī)內(nèi)部的安裝pack包就會(huì)有(官方實(shí)現(xiàn)),
    的頭像 發(fā)表于 10-09 17:38 ?897次閱讀
    CW32L012實(shí)現(xiàn)<b class='flag-5'>外部</b><b class='flag-5'>flash</b><b class='flag-5'>下載</b><b class='flag-5'>算法</b>

    studio有沒(méi)有通過(guò)更改下載算法,同時(shí)下載到內(nèi)部flash外部flash?

    我現(xiàn)在使用的stm32h750,內(nèi)部flash很小,需要使用外部qspiflash來(lái)儲(chǔ)存程序。 studio可以像mdk一樣設(shè)置兩個(gè)下載算法嗎? 這樣才能一個(gè)程序使用兩個(gè)
    發(fā)表于 09-26 07:04

    ZYNQ UltraScalePlus RFSOC QSPI Flash固化常見(jiàn)問(wèn)題說(shuō)明

    璞致 ZYNQ UltraScalePlus RFSOC QSPI Flash 固化常見(jiàn)問(wèn)題說(shuō)明
    發(fā)表于 08-08 15:49 ?0次下載

    問(wèn),成為硬件工程師需要幾只手?#硬件工程師 #YXC晶振 #揚(yáng)興科技 #搞笑

    硬件工程師
    揚(yáng)興科技
    發(fā)布于 :2025年04月25日 17:15:37

    如何成為一名嵌入式軟件工程師?

    軟件工程師是連接硬件與軟件世界的橋梁,他們的工作對(duì)于產(chǎn)品的性能和穩(wěn)定性至關(guān)重要。 通過(guò)掌握核心技能、積累實(shí)戰(zhàn)經(jīng)驗(yàn)、關(guān)注未來(lái)發(fā)展趨勢(shì)并合理規(guī)劃職業(yè)路徑,嵌入式軟件工程師可以在職業(yè)生涯中不斷成長(zhǎng)并取得卓越成就。
    發(fā)表于 04-15 14:37

    基于APM32F407如何制作I2C EEPROM(AT24C02型號(hào))的MDK-Keil下載算法

    基于APM32F407如何制作I2C EEPROM(AT24C02型號(hào))的Keil下載算法,這樣在我們下載代碼時(shí)可以一鍵把數(shù)據(jù)燒錄到EEPR
    的頭像 發(fā)表于 04-11 11:06 ?1624次閱讀
    基于APM32F407如何<b class='flag-5'>制作</b>I2C EEPROM(AT24C02型號(hào))的MDK-<b class='flag-5'>Keil</b><b class='flag-5'>下載</b><b class='flag-5'>算法</b>

    硬件工程師:回答我!#回答我 #硬件工程師 #YXC晶振 #揚(yáng)興科技

    硬件工程師
    揚(yáng)興科技
    發(fā)布于 :2025年03月25日 18:46:59

    一招拿捏電子工程師#被AI拿捏了 #電子工程師 #電子電工

    電子工程師
    安泰小課堂
    發(fā)布于 :2025年03月25日 17:30:51

    Stm32CubeIDE能像Keil一樣指定不同文件下的代碼編譯到不同的FLASH地址嗎?

    Stm32CubeIDE能像Keil一樣指定不同文件下的代碼編譯到不同的FLASH地址嗎?比如部分代碼存放到內(nèi)部FLASH,另一部分存放到外部QSP
    發(fā)表于 03-07 08:09