哈哈哈哈哈操欧洲电影,久草网在线,亚洲久久熟女熟妇视频,麻豆精品色,久久福利在线视频,日韩中文字幕的,淫乱毛视频一区,亚洲成人一二三,中文人妻日韩精品电影

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

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

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

中穎M0+內(nèi)核芯片軟件模擬內(nèi)核復(fù)位的方法

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

掃碼添加小助手

加入工程師交流群

1、關(guān)于復(fù)位

說(shuō)到復(fù)位,我們都不會(huì)陌生,對(duì)于一個(gè)MCU系統(tǒng),復(fù)位電路是必不可少的一部分。復(fù)位的種類有很多:上電復(fù)位、低電壓復(fù)位、引腳復(fù)位、看門狗復(fù)位、軟件復(fù)位等等。本文說(shuō)的內(nèi)核復(fù)位是軟件復(fù)位的一種。

Cortex-M3內(nèi)核芯片提供了兩種軟件復(fù)位,分別是系統(tǒng)復(fù)位和內(nèi)核復(fù)位,而Cortex-M0+內(nèi)核芯片只提供了系統(tǒng)復(fù)位,內(nèi)核復(fù)位不支持,只能軟件模擬

2、系統(tǒng)復(fù)位和內(nèi)核復(fù)位的區(qū)別

內(nèi)核復(fù)位:只復(fù)位內(nèi)核處理器,而不復(fù)位外設(shè)如GPIO、Timer、UART、Flash等的寄存器。

系統(tǒng)復(fù)位:既復(fù)位內(nèi)核處理器,又復(fù)位外設(shè)寄存器。

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

wKgZomUDzuqANWvTAABV6fXjpz4116.png

wKgaomUDzu2ANPFHAACfwo1-wY8396.png

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

wKgaomUDzu6AK1MNAABQIeUX0b8085.png

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

系統(tǒng)復(fù)位在ARM官方的庫(kù)文件中都有提供相關(guān)的函數(shù),用戶直接調(diào)用即可。官方給出的系統(tǒng)復(fù)位函數(shù)定義如下所示:

wKgaomUDzvCATXbHAAB4W0yJjhI204.png

wKgZomUDzvGAZR7cAABvr6bWZmk645.png

內(nèi)核復(fù)位在ARM官方的庫(kù)文件中沒(méi)有相關(guān)的函數(shù),需要用戶自行編寫。Cortex-M3的內(nèi)核復(fù)位函數(shù)編寫如下:

wKgZomUDzvKAa-SiAAA44nGzmGY589.png

3、軟件模擬內(nèi)核復(fù)位的方法

內(nèi)核復(fù)位在某些特殊應(yīng)用下,如OTA升級(jí)時(shí),往往會(huì)被用到。此時(shí),不希望復(fù)位外設(shè),只需要程序從頭開(kāi)始跑即可。以中穎M0+內(nèi)核芯片為例,在啟動(dòng)配置章節(jié)有介紹到,用軟件模擬內(nèi)核復(fù)位來(lái)使運(yùn)行在引導(dǎo)區(qū)的程序改由從用戶代碼區(qū)啟動(dòng)。

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

wKgaomUDzvSAesnDAADAhyWxZMA414.png

圖3向量表

wKgaomUDzvWAIXheAABBKuT0aPo097.png

圖4軟件模擬內(nèi)核復(fù)位的C語(yǔ)言源碼

圖4源碼中,第1行定義了函數(shù)指針類型,取名為“FUNC_CALL”;第2,3行申明了兩個(gè)變量,分別是無(wú)符號(hào)整型變量main_pgm和函數(shù)指針類型變量func;第5~20行定義了一個(gè)函數(shù),取名為_(kāi)_NVIC_CoreReset(),該函數(shù)可以實(shí)現(xiàn)對(duì)MSP裝載復(fù)位初始值,并使程序跳轉(zhuǎn)到復(fù)位向量處開(kāi)始執(zhí)行,進(jìn)而模擬了內(nèi)核復(fù)位。

函數(shù)__NVIC_CoreReset()中,第9行調(diào)用了ARM官方庫(kù)文件中的函數(shù)(見(jiàn)下圖),將存儲(chǔ)器0x0地址處的值賦給了寄存器MSP,實(shí)現(xiàn)了MSP復(fù)位初始值的裝載;第10行是將存儲(chǔ)器0x4地址處的值賦給變量main_pgm;第11行是將變量main_pgm強(qiáng)制轉(zhuǎn)換成函數(shù)指針類型并賦給func;第12行調(diào)用函數(shù)func(),最終使程序跳轉(zhuǎn)到了存儲(chǔ)器0x4地址存儲(chǔ)的復(fù)位向量處運(yùn)行。

wKgaomUDzvaAOL8QAABFXUR_YRE503.png

用戶需要內(nèi)核復(fù)位時(shí),在程序中直接調(diào)用圖4中定義的函數(shù)__NVIC_CoreReset()即可。

4、總結(jié)

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

來(lái)源:中穎電子(作者:余為國(guó))

免責(zé)聲明:本文為轉(zhuǎn)載文章,轉(zhuǎn)載此文目的在于傳遞更多信息,版權(quán)歸原作者所有。本文所用視頻、圖片、文字如涉及作品版權(quán)問(wèn)題,請(qǐng)聯(lián)系小編進(jìn)行處理


審核編輯 黃宇

聲明:本文內(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)投訴
  • 芯片
    +關(guān)注

    關(guān)注

    463

    文章

    54409

    瀏覽量

    469106
  • 寄存器
    +關(guān)注

    關(guān)注

    31

    文章

    5619

    瀏覽量

    130392
  • 內(nèi)核
    +關(guān)注

    關(guān)注

    4

    文章

    1474

    瀏覽量

    43089
  • 軟件模擬
    +關(guān)注

    關(guān)注

    0

    文章

    8

    瀏覽量

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

掃碼添加小助手

加入工程師交流群

    評(píng)論

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

    如何理解Linux內(nèi)核的PCIe驅(qū)動(dòng)

    各異的芯片組,加上各種 PCI 設(shè)備自身獨(dú)特的功能需求,Linux 內(nèi)核的 PCI 支持遠(yuǎn)比我們希望的要復(fù)雜得多。今天這篇文章,我們將從驅(qū)動(dòng)開(kāi)發(fā)的視角,梳理 Linux PCI 設(shè)備驅(qū)動(dòng)的核心生命周期與關(guān)鍵 API。
    的頭像 發(fā)表于 04-11 17:22 ?1253次閱讀

    探索LPC82x 32位ARM Cortex - M0+微控制器:特性、應(yīng)用與設(shè)計(jì)要點(diǎn)

    - M0+微控制器以其豐富的特性和廣泛的應(yīng)用場(chǎng)景,成為了眾多工程師的首選。本文將深入剖析LPC82x的特性、應(yīng)用以及設(shè)計(jì)過(guò)程的關(guān)鍵要點(diǎn)。 文件下載: LPC824M201JHI33E.pdf 一
    的頭像 發(fā)表于 04-09 09:45 ?117次閱讀

    探索LPC11E6x 32位ARM Cortex - M0+微控制器:特性、應(yīng)用與設(shè)計(jì)要點(diǎn)

    是基于ARM Cortex - M0+內(nèi)核的低成本32位MCU系列,最高可運(yùn)行在50 MHz的CPU頻率下。它支持高達(dá)256 KB的閃存、4 KB的EEPROM和36 KB的SRAM。ARM Cortex - M0+
    的頭像 發(fā)表于 04-09 09:25 ?451次閱讀

    探索LPC11E6x 32位ARM Cortex - M0+微控制器:特性、應(yīng)用與設(shè)計(jì)要點(diǎn)

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

    CW32在不同復(fù)位方式對(duì)應(yīng)的復(fù)位范圍

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

    什么是內(nèi)核LOCKUP故障復(fù)位?

    當(dāng) CPU 遇到嚴(yán)重異常(如讀取到的指令無(wú)效、訪問(wèn) FLASH 時(shí)位寬和目標(biāo)地址不匹配),會(huì)將 PC 指針停在當(dāng)前地址處鎖定,并產(chǎn)生內(nèi)核 LOCKUP 故障復(fù)位信號(hào)。 芯片上電后,LOCKUP
    發(fā)表于 12-15 08:33

    內(nèi)核LOCKUP故障復(fù)位方法

    當(dāng) CPU 遇到嚴(yán)重異常(如讀取到的指令無(wú)效、訪問(wèn) FLASH 時(shí)位寬和目標(biāo)地址不匹配),會(huì)將 PC 指針停在當(dāng)前地址處鎖定,并產(chǎn)生內(nèi)核 LOCKUP 故障復(fù)位信號(hào)。芯片上電后,LOCKUP
    發(fā)表于 12-11 07:15

    GCC -O0?編譯內(nèi)核:調(diào)試黨的?“救命神器”,這些優(yōu)勢(shì)?90%?開(kāi)發(fā)者沒(méi)吃透!

    在?Linux?內(nèi)核開(kāi)發(fā)、驅(qū)動(dòng)調(diào)試或內(nèi)核問(wèn)題定位的場(chǎng)景,“編譯優(yōu)化等級(jí)”?是個(gè)容易被忽略卻影響巨大的選擇。GCC?的優(yōu)化等級(jí)從?O0?到?O3、Os、Ofast?各有側(cè)重,而 O
    的頭像 發(fā)表于 12-03 07:05 ?976次閱讀
    GCC -O<b class='flag-5'>0</b>?編譯<b class='flag-5'>內(nèi)核</b>:調(diào)試黨的?“救命神器”,這些優(yōu)勢(shì)?90%?開(kāi)發(fā)者沒(méi)吃透!

    Cortex-M內(nèi)核的精確延時(shí)的方法

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

    為什么cortex-M0+功耗低?

    存儲(chǔ)器訪問(wèn)次數(shù)減少,降低 Flash 讀取功耗(Flash 訪問(wèn)是系統(tǒng)功耗的重要來(lái)源)。 更小代碼量還可選用容量更小的 Flash,進(jìn)一步降低芯片整體功耗。 6. 物理設(shè)計(jì)優(yōu)化 芯片面積更小:M0+
    發(fā)表于 11-19 08:15

    高性能32位M0+內(nèi)核芯片集成多種通訊外設(shè)的PY32F002B

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

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

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

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

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

    武漢芯源 CW32F030K8U7 eFlash 64MHz主頻 M0+內(nèi)核單片機(jī)

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

    靈動(dòng)微電子發(fā)布基于Arm Cortex M0+內(nèi)核的低功耗MM32L0180系列MCU,擴(kuò)展物聯(lián)網(wǎng)應(yīng)用版圖

    靈動(dòng)微電子近日宣布推出基于Arm Cortex M0+內(nèi)核的MM32L0180系列微控制器MCU,以超低功耗設(shè)計(jì)與豐富外設(shè)資源賦能智能終端設(shè)備。該系列產(chǎn)品進(jìn)一步完善了靈動(dòng)低功耗產(chǎn)品矩陣,形成從
    的頭像 發(fā)表于 06-03 19:31 ?2428次閱讀
    靈動(dòng)微電子發(fā)布基于Arm Cortex <b class='flag-5'>M0+</b><b class='flag-5'>內(nèi)核</b>的低功耗MM32L0180系列MCU,擴(kuò)展物聯(lián)網(wǎng)應(yīng)用版圖
    临朐县| 德昌县| 永川市| 兴文县| 荥经县| 衡阳县| 来安县| 河曲县| 皋兰县| 海口市| 扬州市| 论坛| 加查县| 遂平县| 文成县| 游戏| 台江县| 嘉定区| 清水县| 三门峡市| 平湖市| 格尔木市| 尉氏县| 沙河市| 武冈市| 玉田县| 罗田县| 荃湾区| 五常市| 高要市| 正宁县| 射阳县| 合山市| 高台县| 阜宁县| 宜城市| 庄浪县| 柏乡县| 射阳县| 胶州市| 哈巴河县|