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

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

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

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

借助i.MXRT10xx系列INIT_VTOR功能縮短程序熱重啟時(shí)間

恩智浦MCU加油站 ? 來源:未知 ? 2023-09-07 08:50 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

最近痞子衡寫了篇文章 《i.MXRT從Serial NAND啟動(dòng)時(shí)間測量》,這篇文章詳細(xì)測試了不同長度的 Non-XIP 程序在不同 NAND 訪問速度下由 BootROM 加載啟動(dòng)所需要的時(shí)間,比如 240KB 的程序在 60MHz NAND 的訪問速度下啟動(dòng)時(shí)間接近 30ms,這個(gè)啟動(dòng)時(shí)間對(duì)于有些響應(yīng)時(shí)間敏感的應(yīng)用(比如汽車電子)來說還是比較長的。

對(duì)于Non-XIP 程序,經(jīng)過冷啟動(dòng)后,其程序體本身已經(jīng)被加載進(jìn)芯片內(nèi)部 SRAM 了,除非發(fā)生 POR,否則 SRAM 中的程序會(huì)一直保持著。假設(shè)程序在惡劣的電磁環(huán)境中運(yùn)行,代碼里雖然包含異常復(fù)位的處理,但是每次程序復(fù)位啟動(dòng)時(shí)間還是和冷啟動(dòng)時(shí)間一樣長(每次都需要 BootROM 搬移加載),有點(diǎn)難以接受。那么對(duì)于這種熱啟動(dòng)的情況,程序啟動(dòng)時(shí)間能夠縮短嗎?答案是可以的,今天痞子衡就介紹下 i.MXRT 上的 INIT_VTOR 特性:

  • 備注1:本文主角是i.MXRT1050,但內(nèi)容也基本適用其它i.MXRT10xx系列。

  • 備注2:同樣的測試在i.MXRT1160/1170下無效,因?yàn)镃M7_INIT_VTOR所在的IOMUXC_LPSR_GPR->GPR26在軟復(fù)位下不能保持。

INIT_VTOR功能簡介

在介紹INIT_VTOR 功能之前,大家首先要對(duì) ARM Cortex-M 內(nèi)核的中斷向量表偏移寄存器 SCB->VTOR 功能有所了解,具體可以看痞子衡的舊文 《Cortex-M中斷向量表原理及其重定向方法》。

簡單來說,芯片上電啟動(dòng)后內(nèi)核都是從 SCB->VTOR 指向的地址處獲取程序中斷向量表里的第二個(gè)向量即所謂的復(fù)位函數(shù)Reset_Handler。有了復(fù)位函數(shù),就找到了程序入口。

;摘取自 startup_MIMXRT1052.s


__vector_table
        DCD     sfe(CSTACK)
        DCD     Reset_Handler


        DCD     NMI_Handler
        DCD     HardFault_Handler
        DCD     MemManage_Handler
        DCD     BusFault_Handler
        DCD     UsageFault_Handler
        ...

對(duì)于i.MXRT1050,我們知道芯片上電復(fù)位都是執(zhí)行 BootROM 代碼,BootROM 中斷向量表固定放在了 0x0020_0000 地址處。那么這個(gè) 0x0020_0000 地址是怎么被賦給 SCB->VTOR 寄存器的呢?這就引出了本文主角 IOMUXC_GPR->GPR16[32:7] - CM7_INIT_VTOR 位,這 25bits 的 CM7_INIT_VTOR 值每次復(fù)位都會(huì)被芯片系統(tǒng)自動(dòng)加載進(jìn) SCB->VTOR[32:7] 中,其默認(rèn)值即對(duì)應(yīng) BootROM 中斷向量表地址。

wKgaomT5H2aAdRDcAAHCJimzT7I824.png

正如痞子衡舊文 《妙用i.MXRT1xxx里SystemReset不復(fù)位的GPR寄存器》 提及的那樣,IOMUXC_GPR 寄存器僅在 POR 復(fù)位或者整體重新上電時(shí)才會(huì)被置位,這就意味著我們?cè)趹?yīng)用程序中只需要設(shè)置一次 CM7_INIT_VTOR 值,其后不管發(fā)生多少次類似NVIC_SystemReset() 的復(fù)位,CM7_INIT_VTOR 值都不會(huì)改變。

使用INIT_VTOR縮短程序熱重啟有了上一節(jié)的理論基礎(chǔ),我們來做個(gè)實(shí)驗(yàn)。痞子衡找了一塊MIMXRT1050-EVK12(Rev.A)板卡,將其啟動(dòng)設(shè)備換成串行 NAND 啟動(dòng)(電阻切換到使能 U33,并將 U33 替換成華邦 W25N01GV)。

然后按照串行 NAND 啟動(dòng)時(shí)間測試方法那樣修改SDK_2_13_0_EVKB-IMXRT1050oardsevkbimxrt1050demo_appsled_blinkyiar 例程(debug build,即代碼在 ITCM 運(yùn)行,注意修改鏈接文件中的 m_interrupts_start = 0x00002000),并在SystemInit() 函數(shù)里調(diào)用如下測試函數(shù),根據(jù)是否設(shè)置 IOMUXC_GPR->GPR16 寄存器編譯出兩個(gè)不同鏡像文件(直接編輯 bin 文件將其均填充至 120KB)。

void set_led_gpio(void)
{
  CLOCK_EnableClock(kCLOCK_Iomuxc);
  gpio_pin_config_t USER_LED_config = {
      .direction = kGPIO_DigitalOutput,
      .outputLogic = 0U,
      .interruptMode = kGPIO_NoIntmode
  };
  GPIO_PinInit(GPIO1, 9U, &USER_LED_config);
  IOMUXC_SetPinMux(IOMUXC_GPIO_AD_B0_09_GPIO1_IO09, 0U); 
  IOMUXC_SetPinConfig(IOMUXC_GPIO_AD_B0_09_GPIO1_IO09, 0x10B0U); 


  SystemCoreClockUpdate();
  GPIO_PinWrite(GPIO1, 9U, 0U);
  SDK_DelayAtLeastUs(5000, SystemCoreClock);
  // 根據(jù)是否設(shè)置 CM7_INIT_VTOR 分別編譯兩個(gè)不同鏡像文件
  // 設(shè)置 CM7_INIT_VTOR 指向地址 0x00002000,即用戶應(yīng)用程序中斷向量表
  IOMUXC_GPR->GPR16 = (IOMUXC_GPR->GPR16 & (~IOMUXC_GPR_GPR16_CM7_INIT_VTOR_MASK)) | IOMUXC_GPR_GPR16_CM7_INIT_VTOR(0x2000 >> 7);
  NVIC_SystemReset();
  while (1);
}

然后借助 MCUBootUtility 工具將這兩個(gè)不同鏡像文件下載進(jìn)串行 NAND flash,并測試相應(yīng)啟動(dòng)時(shí)間。這里 Flash 運(yùn)行速度就選擇 60MHz:

wKgaomT5H2aAKAn5AAMJ690cG2E305.png

下面是不設(shè)置 IOMUXC_GPR->GPR16 的程序啟動(dòng)時(shí)間測試結(jié)果,無論是一開始的POR 冷啟動(dòng)還是后面 NVIC_SystemReset() 引起的熱啟動(dòng),啟動(dòng)時(shí)間都需要約 18.66ms

wKgaomT5H2eAW0UdAAKPtJnjHj4659.png

下面是設(shè)置了 IOMUXC_GPR->GPR16 指向 0x2000 之后的程序啟動(dòng)時(shí)間測試結(jié)果,只有一開始的 POR 冷啟動(dòng)時(shí)間是 18.66ms,后面 NVIC_SystemReset() 引起的熱啟動(dòng)時(shí)間僅需要約 5.26ms。

wKgaomT5H2eAboIyAAK8a9zvM1Y368.png

上述實(shí)驗(yàn)結(jié)果證明,設(shè)置 IOMUXC_GPR->GPR16 指向應(yīng)用程序中斷向量表之后確實(shí)能縮短程序熱啟動(dòng)時(shí)間。有朋友可能會(huì)疑問,設(shè)置了從 ITCM 直接熱啟動(dòng)后為何還是有 5.26ms 的啟動(dòng)時(shí)間?這其實(shí)主要是從進(jìn)入應(yīng)用程序 Reset_Handler 到執(zhí)行到測試 GPIO 拉低時(shí)的代碼所消耗的時(shí)間,并且需要注意的是由 BootROM 加載執(zhí)行的程序默認(rèn)是在 ROM 配置后的 396MHz 主頻下執(zhí)行的(主頻夠快,測試代碼消耗時(shí)間可以忽略不計(jì)),而直接復(fù)位從ITCM 里執(zhí)行的程序是在默認(rèn)主頻 12MHz 下執(zhí)行的(主頻較慢,測試代碼消耗時(shí)間不得不計(jì))。

最后再提一下,除了直接在應(yīng)用程序里設(shè)置 IOMUXC_GPR->GPR16 之外,也可以借助 BootROM 的 DCD 功能來設(shè)置,同樣可以借助 MCUBootUtility 直接完成(詳細(xì)步驟可參考《利用i.MXRT1xxx系列ROM集成的DCD功能可輕松配置指定外設(shè)》),痞子衡實(shí)測是有效的。

wKgaomT5H2eAIOHQAAFKKSIpWPg547.png

翻看i.MXRT1050 參考手冊(cè) System Boot 章節(jié),IOMUXC_GPR寄存器地址空間也確實(shí)在有效的 DCD 設(shè)置范圍。

wKgaomT5H2eAPPLeAAH_DYTe6kY727.png

END

更多恩智浦AI-IoT市場和產(chǎn)品信息,邀您同時(shí)關(guān)注“NXP客?!蔽⑿殴娞?hào)

wKgaomT5H2eAUoESAABCdkRE230504.jpg ? ? ?

NXP客棧


恩智浦致力于打造安全的連接和基礎(chǔ)設(shè)施解決方案,為智慧生活保駕護(hù)航。

長按二維碼,關(guān)注我們

恩智浦MCU加油站


這是由恩智浦官方運(yùn)營的公眾號(hào),著重為您推薦恩智浦MCU的產(chǎn)品信息、開發(fā)技巧、教程文檔、培訓(xùn)課程等內(nèi)容。

wKgaomT5H2eAIENNAAATNlPH08Y631.jpg ?

長按二維碼,關(guān)注我們


原文標(biāo)題:借助i.MXRT10xx系列INIT_VTOR功能縮短程序熱重啟時(shí)間

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

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

    關(guān)注

    146

    文章

    17984

    瀏覽量

    366880
  • 恩智浦
    +關(guān)注

    關(guān)注

    14

    文章

    5981

    瀏覽量

    116768

原文標(biāo)題:借助i.MXRT10xx系列INIT_VTOR功能縮短程序熱重啟時(shí)間

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

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

掃碼添加小助手

加入工程師交流群

    評(píng)論

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

    實(shí)現(xiàn)IAP功能,使用cubeide生成APP程序的bin文件寫入Flash之后,無法跳轉(zhuǎn)到APP程序中,為什么?

    實(shí)現(xiàn)IAP功能,使用cubeide生成APP程序的bin文件寫入Flash之后,無法跳轉(zhuǎn)到APP程序中。 但是使用KEIL編譯生成的bin文件寫入FLASH之后,可以正常執(zhí)行。 在檢查棧頂?shù)刂肥欠?/div>
    發(fā)表于 06-09 07:32

    使用cubeide生成APP程序的bin文件寫入Flash之后,無法跳轉(zhuǎn)到APP程序中,怎么解決?

    實(shí)現(xiàn)IAP功能,使用cubeide生成APP程序的bin文件寫入Flash之后,無法跳轉(zhuǎn)到APP程序中。 但是使用KEIL編譯生成的bin文件寫入FLASH之后,可以正常執(zhí)行。 在檢查棧頂?shù)刂肥欠?/div>
    發(fā)表于 06-06 08:04

    多個(gè)i.MXRT共享一顆Flash啟動(dòng)的方法與實(shí)踐(下)

    在 《多個(gè)i.MXRT共享一顆Flash啟動(dòng)的方法與實(shí)踐(上)》 一文里痞子衡給大家從理論上介紹一種多 i.MXRT 共享 Flash 啟動(dòng)的方法,但是理論雖好,如果沒有經(jīng)過實(shí)踐驗(yàn)證切實(shí)可行,不過是紙上談兵,所以今天痞子衡就找了兩個(gè) i
    的頭像 發(fā)表于 06-05 10:04 ?528次閱讀
    多個(gè)<b class='flag-5'>i.MXRT</b>共享一顆Flash啟動(dòng)的方法與實(shí)踐(下)

    多個(gè)i.MXRT共享一顆Flash啟動(dòng)的方法與實(shí)踐(上)

    有些客戶應(yīng)用會(huì)采用多顆 i.MXRT 芯片設(shè)計(jì)一主多從的硬件架構(gòu)(目的不一,或仿多核 MCU 系統(tǒng)、或拓展 GPIO 數(shù)量),因?yàn)?i.MXRT 片內(nèi)無非易失性存儲(chǔ)器,這時(shí)候?yàn)檎麄€(gè)系統(tǒng)配置合適的啟動(dòng)設(shè)備保證每個(gè) i.MXRT
    的頭像 發(fā)表于 06-05 10:01 ?515次閱讀
    多個(gè)<b class='flag-5'>i.MXRT</b>共享一顆Flash啟動(dòng)的方法與實(shí)踐(上)

    國產(chǎn)電壓基準(zhǔn)源對(duì)標(biāo)REF34XX/ADR34XX的模擬I/O模塊替換方案

    國產(chǎn)電壓基準(zhǔn)源對(duì)標(biāo)REF34XX/ADR34XX的模擬I/O模塊替換方案
    的頭像 發(fā)表于 04-03 09:49 ?420次閱讀
    國產(chǎn)電壓基準(zhǔn)源對(duì)標(biāo)REF34<b class='flag-5'>XX</b>/ADR34<b class='flag-5'>XX</b>的模擬<b class='flag-5'>I</b>/O模塊替換方案

    RT10XX RC24M開啟自動(dòng)校準(zhǔn)功能

    RT10XX系列的時(shí)鐘源主要由外接24M XTAL, 內(nèi)部的RC24M,外接32K RTC,內(nèi)部32K時(shí)鐘,PLL及其PFD構(gòu)成。在正式開始介紹自動(dòng)校準(zhǔn)功能前,我們先對(duì)RT10XX的時(shí)
    的頭像 發(fā)表于 02-20 10:51 ?983次閱讀
    RT<b class='flag-5'>10XX</b> RC24M開啟自動(dòng)校準(zhǔn)<b class='flag-5'>功能</b>

    AN166 GD32H7xx系列特性設(shè)計(jì)指南

    電子發(fā)燒友網(wǎng)站提供《AN166 GD32H7xx系列特性設(shè)計(jì)指南.pdf》資料免費(fèi)下載
    發(fā)表于 01-17 14:38 ?0次下載
    AN166 GD32H7<b class='flag-5'>xx</b><b class='flag-5'>系列</b><b class='flag-5'>熱</b>特性設(shè)計(jì)指南

    MSP430x5xx和MSP430x6xx系列系列用戶指南

    電子發(fā)燒友網(wǎng)站提供《MSP430x5xx和MSP430x6xx系列系列用戶指南.pdf》資料免費(fèi)下載
    發(fā)表于 12-19 15:32 ?2次下載
    MSP430x5<b class='flag-5'>xx</b>和MSP430x6<b class='flag-5'>xx</b><b class='flag-5'>系列</b><b class='flag-5'>系列</b>用戶指南

    Simcenter Flotherm XT電子分析軟件

    ,并在流程早期優(yōu)化電子熱管理。SimcenterFlothermXT的優(yōu)勢縮短電子設(shè)計(jì)過程使MCAD和EDA設(shè)計(jì)流程更接近設(shè)計(jì),從而將分析過程的時(shí)間
    的頭像 發(fā)表于 11-12 16:10 ?1270次閱讀
    Simcenter Flotherm XT電子<b class='flag-5'>熱</b>分析軟件

    從MSP430F4xx系列遷移到MSP430FR58xx/FR59xx/FR68xx/FR69xx系列

    電子發(fā)燒友網(wǎng)站提供《從MSP430F4xx系列遷移到MSP430FR58xx/FR59xx/FR68xx/FR69
    發(fā)表于 10-10 11:38 ?0次下載
    從MSP430F4<b class='flag-5'>xx</b><b class='flag-5'>系列</b>遷移到MSP430FR58<b class='flag-5'>xx</b>/FR59<b class='flag-5'>xx</b>/FR68<b class='flag-5'>xx</b>/FR69<b class='flag-5'>xx</b><b class='flag-5'>系列</b>

    iPhone 16 Pro機(jī)型發(fā)貨時(shí)間縮短

    iPhone 15 Pro系列實(shí)現(xiàn)了顯著縮短。具體而言,iPhone 16 Pro的發(fā)貨時(shí)間縮短了1-2周,而Pro Max更是縮短了2-3
    的頭像 發(fā)表于 09-24 15:11 ?902次閱讀

    AM65xx時(shí)間同步架構(gòu)

    電子發(fā)燒友網(wǎng)站提供《AM65xx時(shí)間同步架構(gòu).pdf》資料免費(fèi)下載
    發(fā)表于 09-19 13:38 ?0次下載
    AM65<b class='flag-5'>xx</b><b class='flag-5'>時(shí)間</b>同步架構(gòu)

    【GD32 MCU 移植教程】8、從 STM32F4xx 系列移植到 GD32F4xx

    GD32F4xx 系列 MCU 是基于 Arm? Cortex?-M4 處理器的 32 位通用微控制器,與 STM32F4xx系列 MCU 保持高度兼容。本文主要從以下三個(gè)方面進(jìn)行介紹
    的頭像 發(fā)表于 09-06 09:40 ?2631次閱讀
    【GD32 MCU 移植教程】8、從 STM32F4<b class='flag-5'>xx</b> <b class='flag-5'>系列</b>移植到 GD32F4<b class='flag-5'>xx</b> 系

    通過VCO即時(shí)校準(zhǔn)顯著縮短鎖定時(shí)間

    電子發(fā)燒友網(wǎng)站提供《通過VCO即時(shí)校準(zhǔn)顯著縮短鎖定時(shí)間.pdf》資料免費(fèi)下載
    發(fā)表于 08-28 09:32 ?0次下載
    通過VCO即時(shí)校準(zhǔn)顯著<b class='flag-5'>縮短</b>鎖定<b class='flag-5'>時(shí)間</b>

    不同J-Link版本對(duì)于i.MXRT1170連接復(fù)位后處理行為

    大家好,我是痞子衡,是正經(jīng)搞技術(shù)的痞子。今天痞子衡給大家介紹的是不同J-Link版本對(duì)于i.MXRT1170連接復(fù)位后處理行為。
    的頭像 發(fā)表于 08-08 15:29 ?863次閱讀
    不同J-Link版本對(duì)于<b class='flag-5'>i.MXRT</b>1170連接復(fù)位后處理行為