91欧美超碰AV自拍|国产成年人性爱视频免费看|亚洲 日韩 欧美一厂二区入|人人看人人爽人人操aV|丝袜美腿视频一区二区在线看|人人操人人爽人人爱|婷婷五月天超碰|97色色欧美亚州A√|另类A√无码精品一级av|欧美特级日韩特级

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下的NOR Flash下載算法

strongerHuang ? 來(lái)源:痞子衡嵌入式 ? 作者:痞子衡嵌入式 ? 2020-11-01 11:18 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

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

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

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_PacksNXPMIMXRT1062_DFP12.2.0armMIMXRT106x_QSPI_4KB_SEC.FLM)

如果默認(rèn)選擇的Flash下載算法文件不適用你的板子,那么你需要自己提供合適的算法文件(.FLM),并將其放入MDK安裝目錄下(Keil_v5ARMFlash),重新打開(kāi)工程選項(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下載算法是開(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_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í)是通過(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í)際板卡情況填寫正確。

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,表明下載算法本身不是使用固定地址鏈接,而是位置無(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擦除和寫入,只要用戶App被正確寫入Flash,IDE就能正常讀取Flash里代碼指令進(jìn)行單步調(diào)試了。如下圖便是擦除和寫入操作的實(shí)際API組合調(diào)用流程:

算法API詳解:

https://arm-oftware.github.io/CMSIS_5/Pack/html/algorithmFunc.html

至此,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ī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 單片機(jī)
    +關(guān)注

    關(guān)注

    6076

    文章

    45506

    瀏覽量

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

    關(guān)注

    23

    文章

    4785

    瀏覽量

    98121
  • keil
    +關(guān)注

    關(guān)注

    69

    文章

    1230

    瀏覽量

    172716

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

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

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

掃碼添加小助手

加入工程師交流群

    評(píng)論

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

    NOR Flash和NAND flash有什么區(qū)別

    在嵌入式系統(tǒng)、移動(dòng)設(shè)備與存儲(chǔ)領(lǐng)域,NOR Flash和NAND Flash是兩種最常見(jiàn)的非易失性存儲(chǔ)技術(shù)。盡管它們都屬于閃存(Flash EEPROM)家族,但在內(nèi)部結(jié)構(gòu)、接口方式、讀
    的頭像 發(fā)表于 03-11 15:08 ?69次閱讀
    <b class='flag-5'>NOR</b> <b class='flag-5'>Flash</b>和NAND <b class='flag-5'>flash</b>有什么區(qū)別

    NOR Flash 到 NAND Flash 和SD NAND,從底層結(jié)構(gòu)到應(yīng)用差異

    nor flash,nor nand,sd nand,spi nor,nand flash
    的頭像 發(fā)表于 03-05 18:24 ?63次閱讀
    從<b class='flag-5'>NOR</b> <b class='flag-5'>Flash</b> 到 NAND <b class='flag-5'>Flash</b> 和SD NAND,從底層結(jié)構(gòu)到應(yīng)用差異

    NOR Flash 到 NAND Flash 和SD NAND,從底層結(jié)構(gòu)到應(yīng)用差異

    )   磨損均衡(Wear Leveling)   預(yù)留空間(Over Provisioning)   強(qiáng)糾錯(cuò)算法(ECC,例如 LDPC 或 BCH)   那么 其實(shí)際壽命可以比某些 NOR Flash
    發(fā)表于 03-05 18:23

    SPI NOR Flash和SPI NAND Flash存儲(chǔ)芯片的區(qū)別

    SPI NOR Flash與SPI NAND Flash并非相互替代,而是互補(bǔ)關(guān)系。SPI NOR勝在讀取速度快、使用簡(jiǎn)單、可靠性高,是代碼存儲(chǔ)的理想選擇。SPI NAND則以其大容量
    的頭像 發(fā)表于 01-29 16:58 ?517次閱讀
    SPI <b class='flag-5'>NOR</b> <b class='flag-5'>Flash</b>和SPI NAND <b class='flag-5'>Flash</b>存儲(chǔ)芯片的區(qū)別

    有新版keil MDK-ARM V5 注冊(cè)機(jī)安裝包不,孩子下載keil卡在許可碼過(guò)期了,救救孩子吧

    有新版keil MDK-ARM V5 注冊(cè)機(jī)安裝包不,孩子下載keil卡在許可碼過(guò)期了,救救孩子吧
    發(fā)表于 01-14 19:37

    LAT1198+通過(guò) KEIL 制作 QSPI 接口的外部 Flash 下載算法應(yīng)用筆記

    時(shí),需要將代碼或數(shù)據(jù)燒錄到外部 Flash。如果調(diào)試工具不能夠一鍵燒錄,勢(shì)必會(huì)給調(diào)試帶來(lái)諸多的麻煩。本文以 STM32H750 芯片為例,介紹通過(guò) KEIL制作 QSPI 接口的外部 Flash
    發(fā)表于 01-11 17:25 ?0次下載

    國(guó)產(chǎn)SPI NOR Flash接口閃存介紹

    在當(dāng)今各類電子設(shè)備對(duì)存儲(chǔ)性能要求日益提升的背景,SPI NOR Flash憑借其高速讀取、低功耗及靈活接口等優(yōu)勢(shì),成為嵌入式系統(tǒng)代碼存儲(chǔ)的關(guān)鍵元件。GT25Q系列SPI NOR
    的頭像 發(fā)表于 12-26 11:51 ?474次閱讀

    Infineon SEMPER NOR Flash與HYPERRAM? 2.0 Gen2 Flash+RAM MCP產(chǎn)品解析

    ,為我們帶來(lái)了高性能、低引腳數(shù)的集成解決方案。 文件下載: Infineon Technologies 閃存+RAM MCP解決方案.pdf 產(chǎn)品特性 減少組件與簡(jiǎn)化布局 傳統(tǒng)的設(shè)計(jì)需要分別使用NOR Flash和RAM,而英飛
    的頭像 發(fā)表于 12-20 16:20 ?1221次閱讀

    聊聊MCU下載算法Keil MDK里的那些事兒

    嗨,嵌入式開(kāi)發(fā)的小伙伴們!用 Keil MDK(μVision)搭配 J-Link 或 DAPLink 調(diào)試器刷代碼到 MCU 的 Flash,是咱們?nèi)粘i_(kāi)發(fā)的老套路了。里面有個(gè)關(guān)鍵
    的頭像 發(fā)表于 12-16 09:30 ?4392次閱讀
    聊聊MCU<b class='flag-5'>下載</b><b class='flag-5'>算法</b>在<b class='flag-5'>Keil</b> <b class='flag-5'>MDK</b>里的那些事兒

    NOR Flash到NAND Flash和SD NAND,從底層結(jié)構(gòu)到應(yīng)用差異

    )   磨損均衡(Wear Leveling)   預(yù)留空間(Over Provisioning)   強(qiáng)糾錯(cuò)算法(ECC,例如 LDPC 或 BCH)   那么 其實(shí)際壽命可以比某些 NOR Flash
    發(fā)表于 12-08 17:54

    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)),外部flash的情況比較復(fù)雜,例如用的哪種
    的頭像 發(fā)表于 10-09 17:38 ?1672次閱讀
    CW32L012實(shí)現(xiàn)外部<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

    SPI NOR FLASH是什么,與SPI NAND Flash的區(qū)別

    SPI NOR FLASH是什么? ? SPI NOR FLASH是一種非易失性存儲(chǔ)器,它通過(guò)串行接口進(jìn)行數(shù)據(jù)傳輸,具有讀寫速度快、可靠性高、體積小等優(yōu)點(diǎn)。它采用類似SRAM的存儲(chǔ)方式
    的頭像 發(fā)表于 08-21 09:26 ?1625次閱讀

    Keil MDK到IAR EWARM:通過(guò)工程遷移實(shí)現(xiàn)項(xiàng)目資產(chǎn)的更好管理

    對(duì)于需要統(tǒng)一開(kāi)發(fā)環(huán)境或涉及多核架構(gòu)(如Cortex-A/R)的項(xiàng)目,越來(lái)越多的用戶選擇從Keil MDK遷移到IAR EWARM。這就會(huì)面臨著需要將之前的Keil MDK工程遷移到IA
    的頭像 發(fā)表于 05-08 09:03 ?1317次閱讀
    從<b class='flag-5'>Keil</b> <b class='flag-5'>MDK</b>到IAR EWARM:通過(guò)工程遷移實(shí)現(xiàn)項(xiàng)目資產(chǎn)的更好管理

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

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