欧美在线专区-欧美在线伊人-欧美在线一区二区三区欧美-欧美在线一区二区三区-pornodoxxx中国妞-pornodoldoo欧美另类

position>home>Blogs

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

[導(dǎo)讀]關(guān)于NOR Flash下載算法每個(gè)IDE/工具都有自己的下下載一套設(shè)計(jì),雖然基本設(shè)計(jì)理念是串行一樣的,但細(xì)節(jié)方面還是算法設(shè)計(jì)有區(qū)別。

關(guān)注+星標(biāo)公眾號(hào),下下載不錯(cuò)過(guò)精彩內(nèi)容
作者 | 痞子衡
轉(zhuǎn)自 | 痞子衡嵌入式
今天轉(zhuǎn)載痞子衡嵌入式的串行一篇文章,給大家Keil MDK工具下i.MXRT的算法設(shè)計(jì)串行NOR Flash下載算法設(shè)計(jì)
在i.MXRT硬件那些事系列之 《在串行NOR Flash XIP調(diào)試原理》 一文中,下下載痞子衡簡(jiǎn)單提了一下串行NOR Flash下載算法的串行概念,并沒(méi)有介紹具體設(shè)計(jì)細(xì)節(jié),算法設(shè)計(jì)關(guān)于NOR Flash下載算法每個(gè)IDE/工具都有自己的下下載一套設(shè)計(jì),雖然基本設(shè)計(jì)理念是串行一樣的,但是算法設(shè)計(jì)細(xì)節(jié)方面還是有區(qū)別。上一篇痞子衡介紹了 《J-Link下算法設(shè)計(jì)》 ,下下載今天痞子衡就來(lái)細(xì)聊Keil ?MDK下的串行NOR Flash下載算法:

一、Keil MDK5對(duì)i.MXRT的算法設(shè)計(jì)支持

Keil μVision可以說(shuō)是MCU開(kāi)發(fā)者最熟悉的IDE了,大部分人剛開(kāi)始入行嵌入式學(xué)MCS-51系列單片機(jī)應(yīng)該都是用得Keil C51環(huán)境(Keil μVision2),早期的Keil還只是一個(gè)小型的獨(dú)立軟件公司。2005年ARM收購(gòu)了Keil,并于2006年集成了RealView編譯器開(kāi)始支持ARM Cortex-M處理器,這便是后來(lái)的Keil MDK(Keil μVision3)。
2013年Keil μVision5發(fā)布,與Keil MDK4及之前版本不同,Keil MDK5分成MDK Core和Software Packs兩部分。MDK Core主要包含uVision5 IDE集成開(kāi)發(fā)環(huán)境和ARM Compiler5。Software Packs則可以在不更換MDK Core的情況下,單獨(dú)管理(下載、更新、移除)設(shè)備支持包和中間件更新包。
因此首次安裝的Keil MDK5并沒(méi)有直接支持i.MXRT,需要通過(guò)Software Packs組件來(lái)單獨(dú)安裝i.MXRT的相關(guān)軟件支持包。

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

Keil MDK5里默認(rèn)集成了Pack Installer,在IDE里可以直接打開(kāi)其界面,手動(dòng)添加所需的MCU主控相關(guān)軟件包。軟件包主要有兩個(gè):Device Family Pack (DFP)和Board Support Pack (BSP) ,前者是對(duì)MCU芯片本身的支持,后者是對(duì)MCU開(kāi)發(fā)板的支持。
如果你不主動(dòng)安裝MCU軟件包也行,當(dāng)你打開(kāi)SDK里的任何一個(gè)例程(以i.MXRT1060為例),如果該例程對(duì)應(yīng)的MCU軟件包沒(méi)有安裝,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)里無(wú)論選擇哪種調(diào)試器,其默認(rèn)Flash下載算法是一樣的,都來(lái)自于DFP包 (\Keil_Packs\NXP\MIMXRT1062_DFP\12.2.0\arm\MIMXRT106x_QSPI_4KB_SEC.FLM)
如果默認(rèn)選擇的Flash下載算法文件不適用你的板子,那么你需要自己提供合適的算法文件(.FLM),并將其放入MDK安裝目錄下(\Keil_v5\ARM\Flash),重新打開(kāi)工程選項(xiàng),新增的算法會(huì)自動(dòng)刷新到待選算法列表(還有另一種添加方式,即做一個(gè)完整的DFP包,包里包含下載算法,雖然ARM寫(xiě)了詳盡的文檔,但這種方式更適合芯片原廠去做):
搞定了合適的下載算法文件,最后還需要檢查下兩個(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下載算法是開(kāi)源的,有較詳細(xì)的文檔,文檔在arm-software的github主頁(yè),根據(jù)這些文檔,我們基本可以了解其下載算法設(shè)計(jì)細(xì)節(jié)。
  • 算法主頁(yè):https://arm-software.github.io/CMSIS_5/Pack/html/flashAlgorithm.html

3.1 下載算法模板工程

Keil MDK提供了一個(gè)Flash下載算法的基礎(chǔ)模板工程,工程在\Keil_v5\ARM\Flash\_Template\NewDevice.uvprojx,該工程僅支持MDK(不支持MDK-Lite)編譯,除了工程設(shè)置外,該模板工程僅包含四個(gè)文件:
\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)核類型在工程選項(xiàng)里將默認(rèn)的ARMCM0內(nèi)核改掉,然后在FlashDev.c和FlashPrg.c里將算法API函數(shù)全部實(shí)現(xiàn)(默認(rèn)是空的),最后編譯工程生成.FLM即是我們要的算法文件(最終.FLM其實(shí)是通過(guò)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í)際板卡情況填寫(xiě)正確。
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個(gè)API函數(shù),這些API函數(shù)提供了實(shí)際的Flash擦寫(xiě)驗(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,表明下載算法本身不是使用固定地址鏈接,而是位置無(wú)關(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)用來(lái)實(shí)現(xiàn)最重要的Flash擦除和寫(xiě)入,只要用戶App被正確寫(xiě)入Flash,IDE就能正常讀取Flash里代碼指令進(jìn)行單步調(diào)試了。如下圖便是擦除和寫(xiě)入操作的實(shí)際API組合調(diào)用流程:
  • 算法API詳解:
  • https://arm-oftware.github.io/CMSIS_5/Pack/html/algorithmFunc.html
至此,Keil MDK工具下i.MXRT的串行NOR Flash下載算法設(shè)計(jì)介紹完畢。

------------?END?------------

推薦閱讀:
如何編寫(xiě)ARM處理器的Bootloader
線程、進(jìn)程、多線程、多進(jìn)程 和 多任務(wù)?
幾款優(yōu)秀的支持C、C++等多種語(yǔ)言的在線編譯器

關(guān)注 微信公眾號(hào)『strongerHuang』,后臺(tái)回復(fù)“1024”查看更多內(nèi)容,回復(fù)“加群”按規(guī)則加入技術(shù)交流群。


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

長(zhǎng)按前往圖中包含的公眾號(hào)關(guān)注


點(diǎn)擊“ 閱讀原文”查看更多分享,歡迎點(diǎn)分享、收藏、點(diǎn)贊、在看

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

Popular articles

主站蜘蛛池模板: 97就要干| 色偷偷人人澡人人爽人人模| 美女被暴羞羞免费视频| 国产盗摄女厕美女嘘嘘在线观看| 卡一卡2卡3高清乱码网| 旧里番6080在线观看| 最近最好的中文字幕2019免费| 国语一级片| 中文字幕专区高清在线观看| 欧美日韩三级在线观看| 国产特黄一级片| 性片的生活| www.五月天婷婷| 好吊妞视频988在线播放| 深夜影院一级毛片| 国产欧美久久一区二区| 四虎成人免费| 羞羞漫画小舞被黄漫免费| 99精品视频在线观看免费| 波多吉衣| 性美国xxxxx免费| 麻豆伦理| 青青草97| 蜜桃熟了3| 色青青草原桃花久久综合| 美女扒开尿口让男人插| 亚洲一级毛片在线观| 日本不卡在线播放| 亚洲国产欧美日韩精品一区二区三区 | 午夜高清视频在线观看| 欧美激情xxxx性bbbb| 精彩视频一区二区三区| 老头一天弄了校花4次| 亚洲午夜久久久久久尤物| 美女脱个精光让男人桶爽| 999国产精品999久久久久久| 日本久久久久亚洲中字幕| 噜噜噜在线视频| 特黄一级大片| 日本波多野结衣电影| 青草青草久热精品视频在线观看 |