日本黄色一级经典视频|伊人久久精品视频|亚洲黄色色周成人视频九九九|av免费网址黄色小短片|黄色Av无码亚洲成年人|亚洲1区2区3区无码|真人黄片免费观看|无码一级小说欧美日免费三级|日韩中文字幕91在线看|精品久久久无码中文字幕边打电话

當(dāng)前位置:首頁 > > 嵌入式微處理器
[導(dǎo)讀]本文詳細介紹了Keil MDK工具下i.MXRT的串行NOR Flash下載算法設(shè)計。


大家好,我是痞子衡,是正經(jīng)搞技術(shù)的痞子。今天痞子衡給大家介紹的是Keil MDK工具下i.MXRT的串行NOR Flash下載算法設(shè)計

一、Keil MDK5對i.MXRT的支持

Keil μVision可以說是MCU開發(fā)者最熟悉的IDE了,大部分人剛開始入行嵌入式學(xué)MCS-51系列單片機應(yīng)該都是用得Keil C51環(huán)境(Keil μVision2),早期的Keil還只是一個小型的獨立軟件公司。2005年ARM收購了Keil,并于2006年集成了RealView編譯器開始支持ARM Cortex-M處理器,這便是后來的Keil MDK(Keil μVision3)。

2013年Keil μVision5發(fā)布,與Keil MDK4及之前版本不同,Keil MDK5分成MDK Core和Software Packs兩部分。MDK Core主要包含uVision5 IDE集成開發(fā)環(huán)境和ARM Compiler5。Software Packs則可以在不更換MDK Core的情況下,單獨管理(下載、更新、移除)設(shè)備支持包和中間件更新包。

因此首次安裝的Keil MDK5并沒有直接支持i.MXRT,需要通過Software Packs組件來單獨安裝i.MXRT的相關(guān)軟件支持包。

二、使用Pack Installer添加新i.MXRT型號支持

Keil MDK5里默認集成了Pack Installer,在IDE里可以直接打開其界面,手動添加所需的MCU主控相關(guān)軟件包。軟件包主要有兩個:Device Family Pack (DFP)和Board Support Pack (BSP) ,前者是對MCU芯片本身的支持,后者是對MCU開發(fā)板的支持。

如果你不主動安裝MCU軟件包也行,當(dāng)你打開SDK里的任何一個例程(以i.MXRT1060為例),如果該例程對應(yīng)的MCU軟件包沒有安裝,IDE會自動觸發(fā)Pack的安裝。DFP是必須要安裝的,BSP要看你具體使用哪塊板卡,痞子衡用得官方i.MXRT1060-EVK,因此還需要再手動安裝NXP::EVK-MIMXRT1060_BSP:

安裝完MCU軟件包后,便可以正常編譯SDK工程,然后在Flash下載和調(diào)試了。痞子衡使用的是恩智浦官方EVK,板子上自帶了DAPLink調(diào)試器,當(dāng)然除了板載調(diào)試器,我們也可以外接J-Link調(diào)試器,在MDK工程選項里無論選擇哪種調(diào)試器,其默認Flash下載算法是一樣的,都來自于DFP包(\Keil_Packs\NXP\MIMXRT1062_DFP\12.2.0\arm\MIMXRT106x_QSPI_4KB_SEC.FLM)

如果默認選擇的Flash下載算法文件不適用你的板子,那么你需要自己提供合適的算法文件(.FLM),并將其放入MDK安裝目錄下(\Keil_v5\ARM\Flash),重新打開工程選項,新增的算法會自動刷新到待選算法列表(還有另一種添加方式,即做一個完整的DFP包,包里包含下載算法,雖然ARM寫了詳盡的文檔,但這種方式更適合芯片原廠去做):

搞定了合適的下載算法文件,最后還需要檢查下兩個地址范圍,一個是Flash對應(yīng)的實際映射地址空間,另一個是下載算法文件運行RAM地址空間。這點跟上一篇介紹的J-Link算法JLinkDevices.xml文件里需要填的兩個地址空間設(shè)計是一致的。

三、NOR Flash下載算法設(shè)計

Keil MDK下Flash下載算法是開源的,有較詳細的文檔,文檔在arm-software的github主頁,根據(jù)這些文檔,我們基本可以了解其下載算法設(shè)計細節(jié)。

  • 算法主頁:https://arm-software.github.io/CMSIS_5/Pack/html/flashAlgorithm.html

3.1 下載算法模板工程

Keil MDK提供了一個Flash下載算法的基礎(chǔ)模板工程,工程在\Keil_v5\ARM\Flash\_Template\NewDevice.uvprojx,該工程僅支持MDK(不支持MDK-Lite)編譯,除了工程設(shè)置外,該模板工程僅包含四個文件:

\Keil_v5\ARM\Flash\FlashOS.h
\Keil_v5\ARM\Flash\_Template\FlashDev.c
\Keil_v5\ARM\Flash\_Template\FlashPrg.c
\Keil_v5\ARM\Flash\_Template\Target.lin

拿到基礎(chǔ)模板工程,我們需要根據(jù)目標(biāo)MCU內(nèi)核類型在工程選項里將默認的ARMCM0內(nèi)核改掉,然后在FlashDev.c和FlashPrg.c里將算法API函數(shù)全部實現(xiàn)(默認是空的),最后編譯工程生成.FLM即是我們要的算法文件(最終.FLM其實是通過After Build里的腳本命令將.axf直接改名的,F(xiàn)LM文件本質(zhì)上就是axf格式文件)。

3.2 下載算法結(jié)構(gòu)設(shè)計

算法本身結(jié)構(gòu)其實很簡單,在FlashDev.c文件中有一個名為FlashDevice的結(jié)構(gòu)體常量,其原型定義在FlashOS.h中。該結(jié)構(gòu)體主要給IDE提供必要的Flash信息,其值必須根據(jù)實際板卡情況填寫正確。

struct?FlashDevice?const?FlashDevice??=??{
???FLASH_DRV_VERS,?????????????//?Driver?Version,?do?not?modify!
???"New?Device?256kB?Flash",???//?Device?Name?
???ONCHIP,?????????????????????//?Device?Type
???0x00000000,?????????????????//?Device?Start?Address
???0x00040000,?????????????????//?Device?Size?in?Bytes?(256kB)
???1024,???????????????????????//?Programming?Page?Size
???0,??????????????????????????//?Reserved,?must?be?0
???0xFF,???????????????????????//?Initial?Content?of?Erased?Memory
???100,????????????????????????//?Program?Page?Timeout?100?mSec
???3000,???????????????????????//?Erase?Sector?Timeout?3000?mSec

//?Specify?Size?and?Address?of?Sectors
???0x002000,?0x000000,?????????//?Sector?Size??8kB?(8?Sectors)
???0x010000,?0x010000,?????????//?Sector?Size?64kB?(2?Sectors)?
???0x002000,?0x030000,?????????//?Sector?Size??8kB?(8?Sectors)
???SECTOR_END
};

除了FlashDevice之外,最核心當(dāng)然是FlashPrg.c里的7個API函數(shù),這些API函數(shù)提供了實際的Flash擦寫驗功能,IDE會自動按需調(diào)用這些API去實現(xiàn)在線下載。這些API原型是固定的,但具體函數(shù)實現(xiàn)是因板卡而異的。

關(guān)于算法工程還有一個不得不提的設(shè)計,那就是工程選項C/C++(包括Asm)下都勾選了Read-Only Position Independent 和 Read-Write Position Independent,表明下載算法本身不是使用固定地址鏈接,而是位置無關(guān)鏈接(也叫相對地址鏈接),算法代碼機器碼是可以被放到任意地址去執(zhí)行的,這也是為什么你可以在例程選項里去指定RAM for Algorithm。

3.3 下載算法API調(diào)用流程

當(dāng)在IDE里啟動在線下載時,IDE會先將算法文件.FLM里的可執(zhí)行機器碼加載進指定的RAM空間,然后組合調(diào)用來實現(xiàn)最重要的Flash擦除和寫入,只要用戶App被正確寫入Flash,IDE就能正常讀取Flash里代碼指令進行單步調(diào)試了。如下圖便是擦除和寫入操作的實際API組合調(diào)用流程:

  • 算法API詳解: https://arm-software.github.io/CMSIS_5/Pack/html/algorithmFunc.html

下一篇文章,痞子衡將帶大家繼續(xù)探究IAR EWARM下的下載算法設(shè)計,讓我們把主流Cortex-M集成開發(fā)環(huán)境的算法設(shè)計思路全部擼一遍,看看哪家更巧妙。

至此,Keil MDK工具下i.MXRT的串行NOR Flash下載算法設(shè)計痞子衡便介紹完畢了,掌聲在哪里~~~


-END-


來源 | 痞子衡嵌入式

作者 |?痞子衡


|?整理文章為傳播相關(guān)技術(shù),版權(quán)歸原作者所有?|

|?如有侵權(quán),請聯(lián)系刪除?|


【1】知名半導(dǎo)體MCU大廠軟件開發(fā)C代碼規(guī)范

【2】工業(yè)項目,用MCU還是PLC?

【3】為什么嵌入式工程師會對8位MCU有誤解?

【4】RGB 接口和 MCU 接口有什么不一樣?

【5】8位微控制器(MCU)的隱形成本



免責(zé)聲明:本文內(nèi)容由21ic獲得授權(quán)后發(fā)布,版權(quán)歸原作者所有,本平臺僅提供信息存儲服務(wù)。文章僅代表作者個人觀點,不代表本平臺立場,如有問題,請聯(lián)系我們,謝謝!

嵌入式ARM

掃描二維碼,關(guān)注更多精彩內(nèi)容

本站聲明: 本文章由作者或相關(guān)機構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點,本站亦不保證或承諾內(nèi)容真實性等。需要轉(zhuǎn)載請聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請及時聯(lián)系本站刪除。
換一批
延伸閱讀

LED驅(qū)動電源的輸入包括高壓工頻交流(即市電)、低壓直流、高壓直流、低壓高頻交流(如電子變壓器的輸出)等。

關(guān)鍵字: 驅(qū)動電源

在工業(yè)自動化蓬勃發(fā)展的當(dāng)下,工業(yè)電機作為核心動力設(shè)備,其驅(qū)動電源的性能直接關(guān)系到整個系統(tǒng)的穩(wěn)定性和可靠性。其中,反電動勢抑制與過流保護是驅(qū)動電源設(shè)計中至關(guān)重要的兩個環(huán)節(jié),集成化方案的設(shè)計成為提升電機驅(qū)動性能的關(guān)鍵。

關(guān)鍵字: 工業(yè)電機 驅(qū)動電源

LED 驅(qū)動電源作為 LED 照明系統(tǒng)的 “心臟”,其穩(wěn)定性直接決定了整個照明設(shè)備的使用壽命。然而,在實際應(yīng)用中,LED 驅(qū)動電源易損壞的問題卻十分常見,不僅增加了維護成本,還影響了用戶體驗。要解決這一問題,需從設(shè)計、生...

關(guān)鍵字: 驅(qū)動電源 照明系統(tǒng) 散熱

根據(jù)LED驅(qū)動電源的公式,電感內(nèi)電流波動大小和電感值成反比,輸出紋波和輸出電容值成反比。所以加大電感值和輸出電容值可以減小紋波。

關(guān)鍵字: LED 設(shè)計 驅(qū)動電源

電動汽車(EV)作為新能源汽車的重要代表,正逐漸成為全球汽車產(chǎn)業(yè)的重要發(fā)展方向。電動汽車的核心技術(shù)之一是電機驅(qū)動控制系統(tǒng),而絕緣柵雙極型晶體管(IGBT)作為電機驅(qū)動系統(tǒng)中的關(guān)鍵元件,其性能直接影響到電動汽車的動力性能和...

關(guān)鍵字: 電動汽車 新能源 驅(qū)動電源

在現(xiàn)代城市建設(shè)中,街道及停車場照明作為基礎(chǔ)設(shè)施的重要組成部分,其質(zhì)量和效率直接關(guān)系到城市的公共安全、居民生活質(zhì)量和能源利用效率。隨著科技的進步,高亮度白光發(fā)光二極管(LED)因其獨特的優(yōu)勢逐漸取代傳統(tǒng)光源,成為大功率區(qū)域...

關(guān)鍵字: 發(fā)光二極管 驅(qū)動電源 LED

LED通用照明設(shè)計工程師會遇到許多挑戰(zhàn),如功率密度、功率因數(shù)校正(PFC)、空間受限和可靠性等。

關(guān)鍵字: LED 驅(qū)動電源 功率因數(shù)校正

在LED照明技術(shù)日益普及的今天,LED驅(qū)動電源的電磁干擾(EMI)問題成為了一個不可忽視的挑戰(zhàn)。電磁干擾不僅會影響LED燈具的正常工作,還可能對周圍電子設(shè)備造成不利影響,甚至引發(fā)系統(tǒng)故障。因此,采取有效的硬件措施來解決L...

關(guān)鍵字: LED照明技術(shù) 電磁干擾 驅(qū)動電源

開關(guān)電源具有效率高的特性,而且開關(guān)電源的變壓器體積比串聯(lián)穩(wěn)壓型電源的要小得多,電源電路比較整潔,整機重量也有所下降,所以,現(xiàn)在的LED驅(qū)動電源

關(guān)鍵字: LED 驅(qū)動電源 開關(guān)電源

LED驅(qū)動電源是把電源供應(yīng)轉(zhuǎn)換為特定的電壓電流以驅(qū)動LED發(fā)光的電壓轉(zhuǎn)換器,通常情況下:LED驅(qū)動電源的輸入包括高壓工頻交流(即市電)、低壓直流、高壓直流、低壓高頻交流(如電子變壓器的輸出)等。

關(guān)鍵字: LED 隧道燈 驅(qū)動電源
關(guān)閉