色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

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

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

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

Keil MDK工具下i.MXRT的串行NOR Flash下載算法設(shè)計(jì)

Q4MP_gh_c472c21 ? 來源:痞子衡嵌入式 ? 作者:痞子衡嵌入式 ? 2020-11-16 16:21 ? 次閱讀

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

一、Keil MDK5對(duì)i.MXRT的支持

Keil μVision可以說是MCU開發(fā)者最熟悉的IDE了,大部分人剛開始入行嵌入式學(xué)MCS-51系列單片機(jī)應(yīng)該都是用得Keil C51環(huán)境(Keil μVision2),早期的Keil還只是一個(gè)小型的獨(dú)立軟件公司。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的情況下,單獨(dú)管理(下載、更新、移除)設(shè)備支持包和中間件更新包。

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

二、使用Pack Installer添加新i.MXRT型號(hào)支持

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

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

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

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

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

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

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

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

3.1 下載算法模板工程

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

Keil_v5ARMFlashFlashOS.h Keil_v5ARMFlash\_TemplateFlashDev.c Keil_v5ARMFlash\_TemplateFlashPrg.c Keil_v5ARMFlash\_TemplateTarget.lin

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

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

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

structFlashDeviceconstFlashDevice={ FLASH_DRV_VERS,//DriverVersion,donotmodify! "NewDevice256kBFlash",//DeviceName ONCHIP,//DeviceType 0x00000000,//DeviceStartAddress 0x00040000,//DeviceSizeinBytes(256kB) 1024,//ProgrammingPageSize 0,//Reserved,mustbe0 0xFF,//InitialContentofErasedMemory 100,//ProgramPageTimeout100mSec 3000,//EraseSectorTimeout3000mSec //SpecifySizeandAddressofSectors 0x002000,0x000000,//SectorSize8kB(8Sectors) 0x010000,0x010000,//SectorSize64kB(2Sectors) 0x002000,0x030000,//SectorSize8kB(8Sectors) SECTOR_END };

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

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

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

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

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

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

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

責(zé)任編輯:lq

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

    關(guān)注

    10

    文章

    1634

    瀏覽量

    148002
  • 算法
    +關(guān)注

    關(guān)注

    23

    文章

    4612

    瀏覽量

    92868
  • keil
    +關(guān)注

    關(guān)注

    68

    文章

    1212

    瀏覽量

    166871

原文標(biāo)題:淺析Keil MDK下的串行Flash下載算法設(shè)計(jì)

文章出處:【微信號(hào):gh_c472c2199c88,微信公眾號(hào):嵌入式微處理器】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    MCUXpresso IDE使用J-Link下載算法Flash調(diào)試注意事項(xiàng)

      大家好,我是痞子衡,是正經(jīng)搞技術(shù)的痞子。今天痞子衡給大家介紹的是MCUXpresso IDE使用J-Link下載算法Flash調(diào)試注意事項(xiàng)。  痞子衡前段時(shí)間寫過一篇小文《為
    發(fā)表于 11-04 09:02

    i.MXRT設(shè)計(jì)更新Segger J-Link Flash下載算法文件

    給大家分享的是為i.MXRT設(shè)計(jì)更新Segger J-Link Flash下載算法文件。  想要在Flash中調(diào)試,基本是離不開
    發(fā)表于 12-15 06:11

    i.MXRT系列FlexSPI驅(qū)動(dòng)Flash頁編程執(zhí)行時(shí)間

      大家好,我是痞子衡,是正經(jīng)搞技術(shù)的痞子。今天痞子衡給大家介紹的是i.MXRT系列FlexSPI驅(qū)動(dòng)Flash頁編程執(zhí)行時(shí)間。  痞子衡之前寫過一篇文章 《串行NOR
    發(fā)表于 12-21 07:30

    i.MXRTxxx系列ROM中靈活的串行NOR Flash啟動(dòng)硬復(fù)位引腳選擇

    今天痞子衡給大家介紹的是i.MXRTxxx系列ROM中靈活的串行NOR Flash啟動(dòng)硬復(fù)位引腳選擇。  關(guān)于 i.MXRT 系列 Boot
    發(fā)表于 12-21 06:34

    i.MXRT上使能NOR Flash的Continuous read模式在軟復(fù)位后無法正常啟動(dòng)怎么解決?

    i.MXRT上使能NOR Flash的Continuous read模式在軟復(fù)位后無法正常啟動(dòng)怎么解決?
    發(fā)表于 01-19 07:19

    IAR開發(fā)環(huán)境i.MXRT串行NOR Flash下載算法設(shè)計(jì)

      大家好,我是痞子衡,是正經(jīng)搞技術(shù)的痞子。今天痞子衡給大家介紹的是IAR開發(fā)環(huán)境i.MXRT串行NOR Flash
    發(fā)表于 01-26 07:46

    i.MXRT上使能NOR Flash的Continuous read模式在軟復(fù)位后無法正常啟動(dòng)問題的解決

    串行NOR Flash的Continuous read模式軟復(fù)位后i.MXRT無法啟動(dòng)問題解決方案之RESET#》,利用RESET#引
    發(fā)表于 01-26 06:52

    Keil MDK串行Flash下載算法設(shè)計(jì)

    大家好,我是痞子衡,是正經(jīng)搞技術(shù)的痞子。今天痞子衡給大家介紹的是Keil MDK工具i.MXRT串行
    的頭像 發(fā)表于 10-23 14:30 ?2918次閱讀
    <b class='flag-5'>Keil</b> <b class='flag-5'>MDK</b><b class='flag-5'>下</b>的<b class='flag-5'>串行</b><b class='flag-5'>Flash</b><b class='flag-5'>下載</b><b class='flag-5'>算法</b>設(shè)計(jì)

    淺析Keil MDK串行Flash下載算法設(shè)計(jì)

    今天給大家介紹的是 Keil MDK 工具 i.MXRT串行
    的頭像 發(fā)表于 12-23 13:15 ?1470次閱讀

    J-Link工具i.MXRT串行NOR Flash下載算法設(shè)計(jì)

    大家好,我是痞子衡,是正經(jīng)搞技術(shù)的痞子。今天痞子衡給大家介紹的是 J-Link 工具 i.MXRT串行 NOR
    的頭像 發(fā)表于 12-08 10:07 ?1033次閱讀

    Flash不支持SFDP,如何下載適用i.MXRT

    大家好,我是痞子衡,是正經(jīng)搞技術(shù)的痞子。今天痞子衡給大家介紹的是導(dǎo)致串行 NOR Flashi.MXRT 無法正常
    的頭像 發(fā)表于 10-30 10:30 ?713次閱讀

    痞子衡嵌入式:MCUXpresso IDE使用J-Link下載算法Flash調(diào)試注意事項(xiàng)(i.MXRT500為例)...

      大家好,我是痞子衡,是正經(jīng)搞技術(shù)的痞子。今天痞子衡給大家介紹的是MCUXpresso IDE使用J-Link下載算法Flash調(diào)試注意事項(xiàng)。  痞子衡前段時(shí)間寫過一篇小文《為
    發(fā)表于 10-29 10:36 ?0次下載
    痞子衡嵌入式:MCUXpresso IDE<b class='flag-5'>下</b>使用J-Link<b class='flag-5'>下載</b><b class='flag-5'>算法</b>在<b class='flag-5'>Flash</b>調(diào)試注意事項(xiàng)(<b class='flag-5'>i.MXRT</b>500為例)...

    痞子衡嵌入式:恩智浦i.MX RT1xxx系列MCU硬件那些事(2.5)- 串行NOR Flash下載算法(IAR EWARM篇)...

      大家好,我是痞子衡,是正經(jīng)搞技術(shù)的痞子。今天痞子衡給大家介紹的是IAR開發(fā)環(huán)境i.MXRT串行NOR Flash
    發(fā)表于 12-02 09:06 ?7次下載
    痞子衡嵌入式:恩智浦<b class='flag-5'>i</b>.MX RT1xxx系列MCU硬件那些事(2.5)- <b class='flag-5'>串行</b><b class='flag-5'>NOR</b> <b class='flag-5'>Flash</b><b class='flag-5'>下載</b><b class='flag-5'>算法</b>(IAR EWARM篇)...

    痞子衡嵌入式:串行NOR Flash的Continuous read模式軟復(fù)位后i.MXRT無法啟動(dòng)問題解決方案之SW Reset...

    串行NOR Flash的Continuous read模式軟復(fù)位后i.MXRT無法啟動(dòng)問題解決方案之RESET#》,利用RESET#引
    發(fā)表于 12-02 12:51 ?1次下載
    痞子衡嵌入式:<b class='flag-5'>串行</b><b class='flag-5'>NOR</b> <b class='flag-5'>Flash</b>的Continuous read模式<b class='flag-5'>下</b>軟復(fù)位后<b class='flag-5'>i.MXRT</b>無法啟動(dòng)問題解決方案之SW Reset...

    深入i.MXRT1050系列ROM中串行NOR Flash啟動(dòng)初始化流程

    我們知道外部串行NOR Flash是接到i.MXRT的FlexSPI外設(shè)引腳上,有時(shí)串行NOR
    的頭像 發(fā)表于 06-02 17:43 ?1497次閱讀
    深入<b class='flag-5'>i.MXRT</b>1050系列ROM中<b class='flag-5'>串行</b><b class='flag-5'>NOR</b> <b class='flag-5'>Flash</b>啟動(dòng)初始化流程
    主站蜘蛛池模板: 亚洲日本在线不卡二区 | 狠狠久久免费视频在线| 2023国产精品一卡2卡三卡4卡| 视频一区视频二区在线观看| 伦理电影v男人天堂| 好看的电影网站亚洲一区| 成人国产一区| 91麻豆精品一二三区在线| 亚洲免费视频在线| 神马电影我不卡4k手机在线观看| 老师扒开尿口男生摸尿口| 国产又粗又猛又爽黄老大爷| 纯肉巨黄H爆粗口男男分卷阅读| 在线观看精品视频看看播放| 羞羞答答影院在线| 色欲AV亚洲情无码AV蜜桃| 暖暖的高清视频在线观看免费中文 | 国内精品乱码卡一卡2卡三卡| 把腿张开老子CAO烂你动态图| 34g污奶绵uk甩奶| 伊人久在线| 嫩草影院永久在线一二三四| 國産麻豆AVMDMD0179| 国产精品爽爽久久久久久无码| 樱花草在线观看影院| 亚洲AV无码国产精品色午夜情| 日韩a视频在线观看| 桥本有菜黑丝| 饥渴的护士自慰被发现| 99久久国语露脸精品国产| 张津瑜的9分58秒7段免费| 亚洲人成77777| 亚洲欧美日本久久综合网站| 午夜视频体内射.COM.COM| 我的奶头被客人吸的又肿又红| 色婷婷国产麻豆AV| 神马影院在线eecss伦理片| 三级中国免费的| 污文乖不疼的| 亚洲 天堂 国产在线播放| 亚洲国产区中文在线观看|