日B视频 亚洲,啪啪啪网站一区二区,91色情精品久久,日日噜狠狠色综合久,超碰人妻少妇97在线,999青青视频,亚洲一区二卡,让本一区二区视频,日韩网站推荐

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加油站 ? 來(lái)源:未知 ? 2023-09-07 08:50 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

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

對(duì)于Non-XIP 程序,經(jīng)過(guò)冷啟動(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í)間一樣長(zhǎng)(每次都需要 BootROM 搬移加載),有點(diǎn)難以接受。那么對(duì)于這種熱啟動(dòng)的情況,程序啟動(dòng)時(shí)間能夠縮短嗎?答案是可以的,今天痞子衡就介紹下 i.MXRT 上的 INIT_VTOR 特性:

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

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

INIT_VTOR功能簡(jiǎn)介

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

簡(jiǎn)單來(lái)說(shuō),芯片上電啟動(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ǔ),我們來(lái)做個(gè)實(shí)驗(yàn)。痞子衡找了一塊MIMXRT1050-EVK12(Rev.A)板卡,將其啟動(dòng)設(shè)備換成串行 NAND 啟動(dòng)(電阻切換到使能 U33,并將 U33 替換成華邦 W25N01GV)。

然后按照串行 NAND 啟動(dòng)時(shí)間測(cè)試方法那樣修改SDK_2_13_0_EVKB-IMXRT1050oardsevkbimxrt1050demo_appsled_blinkyiar 例程(debug build,即代碼在 ITCM 運(yùn)行,注意修改鏈接文件中的 m_interrupts_start = 0x00002000),并在SystemInit() 函數(shù)里調(diào)用如下測(cè)試函數(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,并測(cè)試相應(yīng)啟動(dòng)時(shí)間。這里 Flash 運(yùn)行速度就選擇 60MHz:

wKgaomT5H2aAKAn5AAMJ690cG2E305.png

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

wKgaomT5H2eAW0UdAAKPtJnjHj4659.png

下面是設(shè)置了 IOMUXC_GPR->GPR16 指向 0x2000 之后的程序啟動(dòng)時(shí)間測(cè)試結(jié)果,只有一開(kāi)始的 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ì)疑問(wèn),設(shè)置了從 ITCM 直接熱啟動(dòng)后為何還是有 5.26ms 的啟動(dòng)時(shí)間?這其實(shí)主要是從進(jìn)入應(yīng)用程序 Reset_Handler 到執(zhí)行到測(cè)試 GPIO 拉低時(shí)的代碼所消耗的時(shí)間,并且需要注意的是由 BootROM 加載執(zhí)行的程序默認(rèn)是在 ROM 配置后的 396MHz 主頻下執(zhí)行的(主頻夠快,測(cè)試代碼消耗時(shí)間可以忽略不計(jì)),而直接復(fù)位從ITCM 里執(zhí)行的程序是在默認(rèn)主頻 12MHz 下執(zhí)行的(主頻較慢,測(cè)試代碼消耗時(shí)間不得不計(jì))。

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

wKgaomT5H2eAIOHQAAFKKSIpWPg547.png

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

wKgaomT5H2eAPPLeAAH_DYTe6kY727.png

END

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

wKgaomT5H2eAUoESAABCdkRE230504.jpg ? ? ?

NXP客棧


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

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

恩智浦MCU加油站


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

wKgaomT5H2eAIENNAAATNlPH08Y631.jpg ?

長(zhǎng)按二維碼,關(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)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • mcu
    mcu
    +關(guān)注

    關(guān)注

    147

    文章

    19164

    瀏覽量

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

    關(guān)注

    14

    文章

    6129

    瀏覽量

    155251

原文標(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)推薦

    i.MXRT1173跨界處理器能支持2GB NOR閃存嗎?

    does nxp i.MXRT1173 crossover processor can support 2GB NOR flash.If yes what need to be taken
    發(fā)表于 04-23 08:25

    PIC32MX5XX/6XX/7XX 32位微控制器:特性、應(yīng)用與引腳分析

    豐富的功能和卓越的性能,成為眾多工程師的首選。本文將深入探討該系列微控制器的各項(xiàng)特性、應(yīng)用場(chǎng)景以及引腳分布,為電子工程師在設(shè)計(jì)過(guò)程中提供全面的參考。 文件下載: PIC32MX564F128L-I
    的頭像 發(fā)表于 04-22 17:00 ?351次閱讀

    探索UPSD325xx系列:多功能嵌入式控制器的技術(shù)剖析

    探索UPSD325xx系列:多功能嵌入式控制器的技術(shù)剖析 在當(dāng)今的電子設(shè)計(jì)領(lǐng)域,嵌入式控制器的性能和功能直接影響著產(chǎn)品的競(jìng)爭(zhēng)力。UPSD325xx
    的頭像 發(fā)表于 04-17 15:55 ?292次閱讀

    dsPIC33EPXXXGM3XX/6XX/7XX數(shù)字信號(hào)控制器:高性能與多功能的完美結(jié)合

    Microchip的dsPIC33EPXXXGM3XX/6XX/7XX系列16位數(shù)字信號(hào)控制器,看看它有哪些獨(dú)特的特性和優(yōu)勢(shì)。 文件下載: DSPIC33EP128GM304T-
    的頭像 發(fā)表于 04-07 11:05 ?489次閱讀

    93XX66A/B/C系列EEPROM:特性、功能與應(yīng)用詳解

    93XX66A/B/C系列EEPROM:特性、功能與應(yīng)用詳解 在電子工程師的日常設(shè)計(jì)中,低功耗、非易失性的存儲(chǔ)器是不可或缺的組件。Microchip Technology Inc.的93XX
    的頭像 發(fā)表于 03-30 15:45 ?300次閱讀

    i.MXRT1064無(wú)法通過(guò)串行連接到MCU Boot Utility怎么解決?

    我有一個(gè)使用 i.MXRT1064 的定制板,我正在嘗試使用 SDP 串行下載協(xié)議連接到程序。MCU Boot Utility 無(wú)法連接到啟動(dòng)模式開(kāi)關(guān) 1:0 設(shè)置為 01 的芯片。
    發(fā)表于 03-10 06:45

    成功案例 I 35% 生產(chǎn)效率提升,羅德與施瓦茨借助 Celsius EC Solver 縮短仿真周期

    我們希望有一款能夠直接處理CAD模型的工具,以提升整體生產(chǎn)效率。CelsiusECSolver所展現(xiàn)的功能讓我們感到非常驚喜。基于我們的對(duì)比分析,該工具無(wú)疑是R&S的最佳仿真解決方案
    的頭像 發(fā)表于 02-27 17:12 ?1361次閱讀
    成功案例 <b class='flag-5'>I</b> 35% 生產(chǎn)效率提升,羅德與施瓦茨<b class='flag-5'>借助</b> Celsius EC Solver <b class='flag-5'>縮短</b><b class='flag-5'>熱</b>仿真周期

    深入解析xx555系列精密定時(shí)器:功能、應(yīng)用與設(shè)計(jì)要點(diǎn)

    深入解析xx555系列精密定時(shí)器:功能、應(yīng)用與設(shè)計(jì)要點(diǎn) 在電子工程師的工具箱中,定時(shí)器是一種至關(guān)重要的組件,它廣泛應(yīng)用于各種電子設(shè)備中,用于實(shí)現(xiàn)精確的時(shí)間控制。今天,我們將深入探討
    的頭像 發(fā)表于 02-10 15:40 ?1016次閱讀

    恩智浦i.MXRT1180的FlexSPI NOR啟動(dòng)連接方式

    最近屬于i.MXRT11xx陣營(yíng)的第二代旗艦i.MXRT1180正式發(fā)布了,今天咱們就來(lái)介紹它的FlexSPI NOR啟動(dòng)連接方式,在閱讀本文前最好把FlexSPI NOR啟動(dòng)連接方式(RT1060)先看完,對(duì)i.MXRT1xx
    的頭像 發(fā)表于 11-08 10:20 ?6577次閱讀
    恩智浦<b class='flag-5'>i.MXRT</b>1180的FlexSPI NOR啟動(dòng)連接方式

    重新配置SCB-&gt;VTOR = 0x08010000后,再次復(fù)位,程序異常的原因?

    SysInit / MX_TIM12_Init(); LL_TIM_EnableCounter(TIM12); SetResetBit(); MX_DMA_Init(); MX_I2C2_Init
    發(fā)表于 07-22 06:56

    復(fù)旦微低功耗mcuFM33A0xx系列代理供應(yīng)

    FM33A0xx系列 簡(jiǎn)介: FM33A0xx系列芯片是ARM Cortex-M0內(nèi)核的32位低功耗MCU芯片,最大可支持512KB FLASH程序
    發(fā)表于 06-12 18:03

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

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

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

    實(shí)現(xiàn)IAP功能,使用cubeide生成APP程序的bin文件寫入Flash之后,無(wú)法跳轉(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)的方法,但是理論雖好,如果沒(méi)有經(jīng)過(guò)實(shí)踐驗(yàn)證切實(shí)可行,不過(guò)是紙上談兵,所以今天痞子衡就找了兩個(gè) i
    的頭像 發(fā)表于 06-05 10:04 ?1319次閱讀
    多個(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)無(wú)非易失性存儲(chǔ)器,這時(shí)候?yàn)檎麄€(gè)系統(tǒng)配置合適的啟動(dòng)設(shè)備保證每個(gè) i.MXRT
    的頭像 發(fā)表于 06-05 10:01 ?1278次閱讀
    多個(gè)<b class='flag-5'>i.MXRT</b>共享一顆Flash啟動(dòng)的方法與實(shí)踐(上)
    专栏| 平顺县| 固原市| 米易县| 罗定市| 谷城县| 百色市| 苏州市| 久治县| 临沂市| 海原县| 体育| 龙口市| 奇台县| 红安县| 溧水县| 荣昌县| 兴海县| 吴桥县| 松阳县| 湾仔区| 元氏县| 高邮市| 池州市| 延川县| 察哈| 景东| 定西市| 稻城县| 嘉禾县| 象山县| 临猗县| 星座| 黔南| 瑞丽市| 三原县| 定南县| 贵德县| 西乌珠穆沁旗| 弥渡县| 大宁县|