色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

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+芯片沒有自帶內核復位功能的不足。

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

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


審核編輯 黃宇

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

    關注

    455

    文章

    50714

    瀏覽量

    423158
  • 寄存器
    +關注

    關注

    31

    文章

    5336

    瀏覽量

    120232
  • 內核
    +關注

    關注

    3

    文章

    1372

    瀏覽量

    40280
  • 軟件模擬
    +關注

    關注

    0

    文章

    8

    瀏覽量

    7224
收藏 人收藏

    評論

    相關推薦

    飛凌嵌入式ElfBoard ELF 1板卡-Linux內核移植之內核簡介

    及時,在遇到一些內核問題時就可以到linux官網的源碼查一下是不是有相關的提交記錄。獲取芯片原廠的linux源碼每個芯片原廠都有自己的git倉庫,他們會把已經開發完成的
    發表于 12-13 09:03

    實際項目開發為何選擇ARM? Cortex?-M4 內核的HK32MCU?

    ?Cortex?-M4內核的HK32F407芯片的深度知識,并圍繞各類實際案例詳細解讀了如何選型,為何選擇ARM?Cortex?-M4內核
    的頭像 發表于 10-22 17:19 ?407次閱讀
    實際項目開發<b class='flag-5'>中</b>為何選擇ARM? Cortex?-<b class='flag-5'>M</b>4 <b class='flag-5'>內核</b>的HK32MCU?

    CW32L010安全低功耗MCU,樹立M0+產品行業新標桿!

    是基于eFlash的單芯片低功耗微控制器,集成了主頻高達48MHz的ARM?Cortex?-M0+內核、高速嵌入式存儲器(多至64K字節FLASH和多至4K字節SRAM)以及
    的頭像 發表于 10-09 10:12 ?512次閱讀
    CW32L010安全低功耗MCU,樹立<b class='flag-5'>M0+</b>產品行業新標桿!

    基于 ARM Cortex M0+內核BAT32A237芯片

    簡介:車組合開關方案基于 ARM Cortex M0+內核BAT32A237芯片,支持燈光、轉向、雨刮、洗滌等開關輸入檢測,通過LIN接口傳送開關輸入狀態。 ** BAT32A237** 汽車
    發表于 07-31 16:07

    電機專用32位MCU PY32MD310,Arm? Cortex-M0+內核

    PY32MD310是一顆專為電機控制設計的MCU,非常適合用做三相/單相 BLDC/PMSM 的主控芯片芯片采用了高性能的 32 位 ARM? Cortex?-M0+ 內核,QFN3
    的頭像 發表于 06-07 15:01 ?513次閱讀
    電機專用32位MCU PY32MD310,Arm? Cortex-<b class='flag-5'>M0</b>+<b class='flag-5'>內核</b>

    XL32F003單片機 M0+內核 主頻48M,64 K flash加8K SRAM存儲器

    芯片主要特性: 內核: 32 位 ARM Cortex - M0+內核,最高48 MHz工作頻率 存儲器: 最大64Kbytes flash 存儲器,最大8Kbytes SRAM 低功
    發表于 05-17 18:04

    STM32 Cortex M3內核的3種低功耗模式,睡眠、停機和待機,在M0內核也適用嗎?

    M3內核的3種低功耗模式,睡眠、停機和待機,在M0內核也適用嗎
    發表于 05-16 06:56

    普冉半導體推出一款基于32位ARM Cortex-M0+內核的微控制器

    PY32F071單片機是一款基于32 位 ARM? Cortex? - M0+內核的微控制器,由普冉半導體推出。
    的頭像 發表于 04-30 11:24 ?786次閱讀
    普冉半導體推出一款基于32位ARM Cortex-<b class='flag-5'>M0</b>+<b class='flag-5'>內核</b>的微控制器

    賽元微新推出了大資源高工規的32位M0+內核MCU—SC32F12系列

    賽元微新推出了大資源高工規的32位M0+內核MCU——SC32F12系列,是賽元現有Arm Cortex?-M0+產品組合的向上拓展,能夠為您的設計提供三大優勢,大資源,高性能和快速開發。
    的頭像 發表于 04-26 10:15 ?1129次閱讀
    賽元微新推出了大資源高工規的32位<b class='flag-5'>M0+</b><b class='flag-5'>內核</b>MCU—SC32F12系列

    HC32L136 M0+內核在寫FLASH時程序會跑飛的原因?

    使用一款華大的HC32L136單片機M0+內核64k的flash,在0x0-0x8000放入bootloader 在0x8000-0xFFFF放入用戶代碼,在全速 執行用戶代碼
    發表于 04-18 06:04

    STM32如何用HAL庫進行內核復位

    STM32如何用HAL庫進行內核復位 普通的系統復位函數如下: / ** 簡短的系統重置 詳細信息發起系統重置請求以重置MCU。 * / __STATIC_INLINE void
    發表于 04-11 06:49

    Cortex-M85內核單片機如何快速上手

    2022年4月,Arm推出了全新的MCU級內核Cortex-M85。截止目前(2024年2月),Cortex-M85是最新、最強的Cortex-M
    發表于 02-29 09:35 ?741次閱讀
    Cortex-<b class='flag-5'>M</b>85<b class='flag-5'>內核</b>單片機如何快速上手

    PY32C613單片機,高性能 32 位 ARM M0+內核,主頻最高48M

    PY32C613單片機是普冉新推出的高性能的 32 位 ARM? Cortex?-M0+ 內核,寬電壓工作范圍的 MCU。價格在市場上非常有競爭性,外設非常的豐富。PY32C613嵌入高達 64
    發表于 01-19 15:14

    PY32C613單片機簡單介紹,高性能 32 位 ARM M0+內核,主頻最高48M

    PY32C613單片機是普冉新推出的高性能的 32 位 ARM? Cortex?-M0+ 內核,寬電壓工作范圍的 MCU。價格在市場上非常有競爭性,外設非常的豐富。PY32C613嵌入高達 64
    的頭像 發表于 01-16 17:43 ?885次閱讀

    普冉32位單片機 PY32C642,M0+內核,1.7 V ~ 5.5 V寬工作電壓

    PY32C642 單片機采用高性能的 32 位 ARM? Cortex?-M0+內核,寬電壓工作范圍。嵌入 24Kbytes Flash 和 3 Kbytes SRAM 存儲器,最高工作頻率 24
    的頭像 發表于 01-16 15:59 ?888次閱讀
    普冉32位單片機 PY32C642,<b class='flag-5'>M0+</b><b class='flag-5'>內核</b>,1.7 V ~ 5.5 V寬工作電壓
    主站蜘蛛池模板: 无码日韩人妻精品久久蜜桃入口| 色婷婷五月综合中文字幕| 手机观看毛片| 中文字幕免费在线视频| 成a人片亚洲日本久久| 好湿好紧水多AAAAA片秀人网| 女仆乖H调教跪趴| 胸大的姑娘中文字幕视频| 97豆奶视频国产| 国产亚洲999精品AA片在线爽| 女侠含泪巨臀迎合79| 亚洲国产成人99精品激情在线| 99热国产这里只有精品9九| 国产免费内射又粗又爽密桃视频 | 我的好妈妈BD免费观看| 97色色极品av影院| 饥渴的新婚女教师| 脱女学小内内摸出水网站免费| 最新色导航| 精品三级在线观看| 无套内射纹身女视频| 成人国产AV精品久久久久| 乱淫67194| 一区一区三区产品| 国产香蕉九九久久精品免费| 乳巨揉みま痴汉电车中文字幕动漫| 99精彩免费观看| 久久这里有精品| 野花日本大全免费高清完整版| 国产精品你懂的在线播放| 日本一本2017国产| xxxx老妇性hdbbbb| 男人吃奶摸下弄进去好爽| 中文字幕va一区二区三区| 精品无码日本蜜桃麻豆| 亚洲国产精品一区二区久久第| 国产精品久久久久久亚洲影视| 色悠久久综合| 国产av久久免费观看| 熟女久久久久久久久久久| 高清国语自产拍在线|