国产精品久久久aaaa,日日干夜夜操天天插,亚洲乱熟女香蕉一区二区三区少妇,99精品国产高清一区二区三区,国产成人精品一区二区色戒,久久久国产精品成人免费,亚洲精品毛片久久久久,99久久婷婷国产综合精品电影,国产一区二区三区任你鲁

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

中穎M0+內核芯片軟件模擬內核復位的方法

jf_pJlTbmA9 ? 來源:中穎電子(作者:余為國 ? 作者:中穎電子(作者: ? 2023-09-27 15:27 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

1、關于復位

說到復位,我們都不會陌生,對于一個MCU系統,復位電路是必不可少的一部分。復位的種類有很多:上電復位、低電壓復位、引腳復位、看門狗復位、軟件復位等等。本文說的內核復位是軟件復位的一種。

Cortex-M3內核芯片提供了兩種軟件復位,分別是系統復位和內核復位,而Cortex-M0+內核芯片只提供了系統復位,內核復位不支持,只能軟件模擬

2、系統復位和內核復位的區別

內核復位:只復位內核處理器,而不復位外設如GPIO、Timer、UART、Flash等的寄存器

系統復位:既復位內核處理器,又復位外設寄存器。

下面分別是Cortex-M3和Cortex-M0+的應用程序中斷及復位控制寄存器(AIRCR)配置圖,從圖中可以看出,置位AIRCR寄存器中的SYSRESETREQ位(位偏移:2),即可實現系統復位;置位VECTRESET位(位偏移:0),即可實現內核復位。Cortex-M0+中沒有VECTRESET的定義,故不支持內核復位。本文會介紹一種軟件模擬內核復位的方法。

wKgZomUDzuqANWvTAABV6fXjpz4116.png

wKgaomUDzu2ANPFHAACfwo1-wY8396.png

圖1 Cortex-M3應用程序中斷及復位控制寄存器(AIRCR)

wKgaomUDzu6AK1MNAABQIeUX0b8085.png

圖2 Cortex-M0+應用程序中斷及復位控制寄存器(AIRCR)

系統復位在ARM官方的庫文件中都有提供相關的函數,用戶直接調用即可。官方給出的系統復位函數定義如下所示:

wKgaomUDzvCATXbHAAB4W0yJjhI204.png

wKgZomUDzvGAZR7cAABvr6bWZmk645.png

內核復位在ARM官方的庫文件中沒有相關的函數,需要用戶自行編寫。Cortex-M3的內核復位函數編寫如下:

wKgZomUDzvKAa-SiAAA44nGzmGY589.png

3、軟件模擬內核復位的方法

內核復位在某些特殊應用下,如OTA升級時,往往會被用到。此時,不希望復位外設,只需要程序從頭開始跑即可。以中穎M0+內核芯片為例,在啟動配置章節有介紹到,用軟件模擬內核復位來使運行在引導區的程序改由從用戶代碼區啟動。

中穎M0+內核芯片從復位中退出時,會首先讀取向量表中(從地址0x00000000開始,見圖3)的頭兩個字。第一個字為主棧指針(MSP)的初始值,而第二個字則為決定程序執行起始地址(復位處理)的復位向量。該復位流程可以用軟件去模擬,圖4是軟件模擬內核復位的C語言源碼。

wKgaomUDzvSAesnDAADAhyWxZMA414.png

圖3向量表

wKgaomUDzvWAIXheAABBKuT0aPo097.png

圖4軟件模擬內核復位的C語言源碼

圖4源碼中,第1行定義了函數指針類型,取名為“FUNC_CALL”;第2,3行申明了兩個變量,分別是無符號整型變量main_pgm和函數指針類型變量func;第5~20行定義了一個函數,取名為__NVIC_CoreReset(),該函數可以實現對MSP裝載復位初始值,并使程序跳轉到復位向量處開始執行,進而模擬了內核復位。

函數__NVIC_CoreReset()中,第9行調用了ARM官方庫文件中的函數(見下圖),將存儲器0x0地址處的值賦給了寄存器MSP,實現了MSP復位初始值的裝載;第10行是將存儲器0x4地址處的值賦給變量main_pgm;第11行是將變量main_pgm強制轉換成函數指針類型并賦給func;第12行調用函數func(),最終使程序跳轉到了存儲器0x4地址存儲的復位向量處運行。

wKgaomUDzvaAOL8QAABFXUR_YRE503.png

用戶需要內核復位時,在程序中直接調用圖4中定義的函數__NVIC_CoreReset()即可。

4、總結

綜上所述,本文提供了一種軟件模擬內核復位的方法,通過調用自定義函數__NVIC_CoreReset()即可實現內核復位,給出了該函數的C語言源碼,用戶直接在自己程序中加載即可使用。該方法彌補了CortexM0+芯片沒有自帶內核復位功能的不足。

來源:中穎電子(作者:余為國)

免責聲明:本文為轉載文章,轉載此文目的在于傳遞更多信息,版權歸原作者所有。本文所用視頻、圖片、文字如涉及作品版權問題,請聯系小編進行處理


審核編輯 黃宇

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 芯片
    +關注

    關注

    463

    文章

    54009

    瀏覽量

    465969
  • 寄存器
    +關注

    關注

    31

    文章

    5608

    瀏覽量

    129968
  • 內核
    +關注

    關注

    4

    文章

    1467

    瀏覽量

    42873
  • 軟件模擬
    +關注

    關注

    0

    文章

    8

    瀏覽量

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

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    探索LPC11E6x 32位ARM Cortex - M0+微控制器:特性、應用與設計要點

    : LPC11E68JBD100E.pdf 一、LPC11E6x概述 LPC11E6x是基于ARM Cortex - M0+內核的低成本32位MCU系列,最高可運行在50MHz的CPU頻率下。它支持高
    的頭像 發表于 03-02 17:10 ?564次閱讀

    CW32在不同復位方式對應的復位范圍

    上電復位 / 掉電復位(POR/BOR) 整個 MCU 引腳輸入復位(NRST) 整個 MCU(除 RTC 外) IWDT/WWDT 復位
    發表于 12-22 09:44

    什么是內核LOCKUP故障復位

    當 CPU 遇到嚴重異常(如讀取到的指令無效、訪問 FLASH 時位寬和目標地址不匹配),會將 PC 指針停在當前地址處鎖定,并產生內核 LOCKUP 故障復位信號。 芯片上電后,LOCKUP
    發表于 12-15 08:33

    內核LOCKUP故障復位方法

    當 CPU 遇到嚴重異常(如讀取到的指令無效、訪問 FLASH 時位寬和目標地址不匹配),會將 PC 指針停在當前地址處鎖定,并產生內核 LOCKUP 故障復位信號。芯片上電后,LOCKUP
    發表于 12-11 07:15

    Cortex-M內核的精確延時的方法

    寄存器之前,先清0。讓我們看看DWT_CYCCNT的基地址,從ARM-Cortex-M手冊可以看到其基地址是0xE000 1004,復位
    發表于 11-21 07:51

    高性能32位M0+內核芯片集成多種通訊外設的PY32F002B

    微控制器的工作溫度范圍為-40°C ~ 85°C,工作電壓范圍 1.7 V ~ 5.5 V。芯片提供sleep/stop 低功耗工作模式,可以滿足不同的低功耗應用。 Arm? Cortex?-M0+ 內核 Arm? Cortex
    的頭像 發表于 10-31 10:38 ?402次閱讀

    STM32C031x4/x6:面向主流應用的Arm? Cortex?-M0+ 微控制器

    STMicroelectronics的STM32C0x Arm^? ^Cortex ^?^ -M0+ 32位MCU安裝了高性能Arm Cortex-M0+ 32位RISC內核,工作頻率
    的頭像 發表于 10-27 15:05 ?832次閱讀
    STM32C031x4/x6:面向主流應用的Arm? Cortex?-<b class='flag-5'>M0+</b> 微控制器

    主頻72Mhz采用高性能的32 位ARM?Cortex?-M0+ 內核的PY32C673芯片

    PY32C673 系列微控制器采用高性能的 32 位 ARM? Cortex?-M0+ 內核,寬電壓工作范圍的 MCU。嵌入高達 64 Kbytes flash 和 8 Kbytes SRAM
    的頭像 發表于 08-26 10:57 ?806次閱讀
    主頻72Mhz采用高性能的32 位ARM?Cortex?-<b class='flag-5'>M0+</b> <b class='flag-5'>內核</b>的PY32C673<b class='flag-5'>芯片</b>

    武漢芯源 CW32F030K8U7 eFlash 64MHz主頻 M0+內核單片機

    CW32F030x6/x8 是基于 eFlash 的單芯片微控制器,集成了主頻高達 64MHz 的 ARM? Cortex?-M0+ 內核、高速嵌入式存儲器(多至 64K 字節 FLASH 和多至
    發表于 06-21 15:54

    靈動微電子發布基于Arm Cortex M0+內核的低功耗MM32L0180系列MCU,擴展物聯網應用版圖

    靈動微電子近日宣布推出基于Arm Cortex M0+內核的MM32L0180系列微控制器MCU,以超低功耗設計與豐富外設資源賦能智能終端設備。該系列產品進一步完善了靈動低功耗產品矩陣,形成從
    的頭像 發表于 06-03 19:31 ?2117次閱讀
    靈動微電子發布基于Arm Cortex <b class='flag-5'>M0+</b><b class='flag-5'>內核</b>的低功耗MM32L0180系列MCU,擴展物聯網應用版圖

    微BAT32A6700系列采用高性能的ARM-Cortex M0+內核

    卓越的高溫穩定性和高集成度特性,全面滿足汽車和工業行業最嚴苛的應用需求,可應用于車載的高溫執行器場景,如面板開關、天窗、座椅、尾燈、傳感器及微型電機等應用。 產品特性 ARM Cortex M0+內核
    發表于 04-17 10:24

    如何禁用i.MX RT1170 MCUM4內核

    如何禁用 i.MX RT1170 MCU M4 內核? 您能否提供具體的可行方法? 或者是否可以將內核的工作時鐘頻率降低到
    發表于 04-09 07:28

    芯源CW32L011- ARM? Cortex?-M0+ 32 位低功耗微控制器

    產品特性 ● 內核:ARM? Cortex?-M0+ ? 最高主頻 96MHz ● 工作溫度:-40℃ 至 85℃;工作電壓:1.62V 至 5.5V ● 存儲容量 ? 最大 64K 字節
    發表于 04-01 09:26

    微BAT32A6700系列采用高性能的ARM-Cortex M0+內核

    卓越的高溫穩定性和高集成度特性,全面滿足汽車和工業行業最嚴苛的應用需求,可應用于車載的高溫執行器場景,如面板開關、天窗、座椅、尾燈、傳感器及微型電機等應用。 產品特性 ARM Cortex M0+內核
    發表于 03-26 09:53

    微CMS32F0332是M0+內核的MCU,最快支持64MHz運行。

    CMS32F0332是M0+內核,最快支持64MHz運行,工作電壓2.1V~5.5V,多達30個GPIO,2個UART,1個SPI,1個I2C,2組CCP模塊,內置2路模擬比較器、2路運算放大器、2
    發表于 03-18 09:04