chinese直男口爆体育生外卖, 99久久er热在这里只有精品99, 又色又爽又黄18禁美女裸身无遮挡, gogogo高清免费观看日本电视,私密按摩师高清版在线,人妻视频毛茸茸,91论坛 兴趣闲谈,欧美 亚洲 精品 8区,国产精品久久久久精品免费

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

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

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

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

454398 ? 來(lái)源:alpha007 ? 作者:alpha007 ? 2022-12-23 13:15 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

今天給大家介紹的是 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_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ě)了詳盡的文檔,但這種方式更適合芯片原廠(chǎng)去做):

搞定了合適的下載算法文件,最后還需要檢查下兩個(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)核類(lè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ě)正確。

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 擦寫(xiě)驗(yàn)功能,IDE 會(huì)自動(dòng)按需調(diào)用這些 API 去實(shí)現(xiàn)在線(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)在線(xiàn)下載時(shí),IDE 會(huì)先將算法文件 .FLM 里的可執(zhí)行機(jī)器碼加載進(jìn)指定的 RAM 空間,然后組合調(diào)用來(lái)實(shí)現(xiàn)最重要的 Flash 擦除和寫(xiě)入,只要用戶(hù) App 被正確寫(xiě)入 Flash,IDE 就能正常讀取 Flash 里代碼指令進(jìn)行單步調(diào)試了。

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

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

審核編輯 黃昊宇

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(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)投訴
  • 串行
    +關(guān)注

    關(guān)注

    0

    文章

    256

    瀏覽量

    35518
  • keil
    +關(guān)注

    關(guān)注

    69

    文章

    1231

    瀏覽量

    173116
  • MDK
    MDK
    +關(guān)注

    關(guān)注

    4

    文章

    211

    瀏覽量

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

掃碼添加小助手

加入工程師交流群

    評(píng)論

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

    有新版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次下載

    聊聊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 ?4590次閱讀
    聊聊MCU<b class='flag-5'>下載</b><b class='flag-5'>算法</b>在<b class='flag-5'>Keil</b> <b class='flag-5'>MDK</b>里的那些事兒

    【瑞薩RA6E2地奇星開(kāi)發(fā)板試用】+開(kāi)發(fā)環(huán)境構(gòu)建與下載測(cè)試

    MDK及IAR EWARM。 這里介紹的是一種混合式的方法,即使用RASC來(lái)配置引腳并生成Keil MDK的項(xiàng)目工程,然后再在Keil MDK
    發(fā)表于 12-06 00:11

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

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

    scons --target=mdk5編譯不成功如何解決?

    is not available, please check your keil installation Keil5 project is generating... Keil Version: 0.0
    發(fā)表于 09-26 07:20

    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

    【RA4E2開(kāi)發(fā)板評(píng)測(cè)】1、從開(kāi)箱到點(diǎn)亮 LED

    MDK 中修改 Flash 下載算法地址: 點(diǎn)擊 Keil 的魔法棒選項(xiàng) (Options for Target)。 轉(zhuǎn)到 \"Debug
    發(fā)表于 09-05 17:37

    【RA4E2開(kāi)發(fā)板評(píng)測(cè)】RACS配置+MDK編程+RA Flash Programmer下載程序測(cè)試LED經(jīng)驗(yàn)分享

    中可以解決低版本編譯錯(cuò)誤的問(wèn)題,仍舊有報(bào)警,但是也遇到過(guò)再添加代碼后編譯錯(cuò)誤的問(wèn)題。測(cè)試過(guò)幾個(gè)版本的MDK,最終建議還是去官網(wǎng)下載MDA最新版的社區(qū)版。 RA的編程思路也是采用硬件抽象層的的編程方法
    發(fā)表于 08-31 14:50

    SFUD驅(qū)動(dòng)庫(kù)實(shí)戰(zhàn)手冊(cè):串行SPI Flash開(kāi)發(fā)全流程解析

    工作原理與實(shí)戰(zhàn)技巧。 SFUD( Serial Flash Universal Driver)是開(kāi)源的串行SPI Flash通用驅(qū)動(dòng)庫(kù)。 ? 旨在解決不同品牌及規(guī)格串行
    的頭像 發(fā)表于 07-29 13:19 ?838次閱讀
    SFUD驅(qū)動(dòng)庫(kù)實(shí)戰(zhàn)手冊(cè):<b class='flag-5'>串行</b>SPI <b class='flag-5'>Flash</b>開(kāi)發(fā)全流程解析

    【RA4L1-SENSOR】電壓檢測(cè)器1。開(kāi)箱+Keil環(huán)境搭建

    模擬比較器、溫度傳感器 8 x 48 段碼 LCD 驅(qū)動(dòng)器 12 通道電容式觸摸 串行音頻接口 (SSI) 。 ** 。* 準(zhǔn)備操作系統(tǒng)(win10) 開(kāi)發(fā)板軟件(mdk5) 使用在Github上
    發(fā)表于 06-19 09:25

    請(qǐng)問(wèn)CYPM1011-24LQXI能否直接在keil MDK中開(kāi)發(fā)呢?

    抱歉打擾一,請(qǐng)問(wèn)這款芯片CYPM1011-24LQXI能否直接在keil MDK中開(kāi)發(fā)呢
    發(fā)表于 05-30 06:20

    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)越多的用戶(hù)選擇從Keil MDK遷移到IAR EWARM。這就會(huì)面臨著需要將之前的Keil MDK工程遷移到IA
    的頭像 發(fā)表于 05-08 09:03 ?1464次閱讀
    從<b class='flag-5'>Keil</b> <b class='flag-5'>MDK</b>到IAR EWARM:通過(guò)工程遷移實(shí)現(xiàn)項(xiàng)目資產(chǎn)的更好管理

    【RA-Eco-RA4M2開(kāi)發(fā)板評(píng)測(cè)】RA-Eco-RA4M2 Keil 開(kāi)發(fā)環(huán)境搭建

    MDK for ARM版本有Keil 4和Keil 5:使用Keil 5建議安裝5.38以上版本。筆者的MDK是5.38a。 從
    發(fā)表于 04-27 22:54

    瑞薩RA8系列教程 | 基于 Keil 開(kāi)發(fā) RA8單片機(jī)

    本文結(jié)合瑞薩Cortext-M85單片機(jī)RA8D1、Keil MDK,以及瑞薩自家的代碼初始化工具(Smart Configurator)給大家描述一,快速在Keil
    的頭像 發(fā)表于 04-22 17:41 ?1485次閱讀
    瑞薩RA8系列教程 | 基于 <b class='flag-5'>Keil</b> 開(kāi)發(fā) RA8單片機(jī)