欧美性猛交xxxx免费看_牛牛在线视频国产免费_天堂草原电视剧在线观看免费_国产粉嫩高清在线观看_国产欧美日本亚洲精品一5区

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

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

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

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

jf_pJlTbmA9 ? 來源:中穎電子(作者:余為國 ? 作者:中穎電子(作者: ? 2023-09-27 15:27 ? 次閱讀

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

說到復(fù)位,我們都不會陌生,對于一個MCU系統(tǒng),復(fù)位電路是必不可少的一部分。復(fù)位的種類有很多:上電復(fù)位、低電壓復(fù)位、引腳復(fù)位、看門狗復(fù)位、軟件復(fù)位等等。本文說的內(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),即可實現(xiàn)系統(tǒng)復(fù)位;置位VECTRESET位(位偏移:0),即可實現(xiàn)內(nèi)核復(fù)位。Cortex-M0+中沒有VECTRESET的定義,故不支持內(nèi)核復(fù)位。本文會介紹一種軟件模擬內(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官方的庫文件中都有提供相關(guān)的函數(shù),用戶直接調(diào)用即可。官方給出的系統(tǒng)復(fù)位函數(shù)定義如下所示:

wKgaomUDzvCATXbHAAB4W0yJjhI204.png

wKgZomUDzvGAZR7cAABvr6bWZmk645.png

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

wKgZomUDzvKAa-SiAAA44nGzmGY589.png

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

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

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

wKgaomUDzvSAesnDAADAhyWxZMA414.png

圖3向量表

wKgaomUDzvWAIXheAABBKuT0aPo097.png

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

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

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

wKgaomUDzvaAOL8QAABFXUR_YRE503.png

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

4、總結(jié)

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

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

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


審核編輯 黃宇

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

    關(guān)注

    456

    文章

    51283

    瀏覽量

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

    關(guān)注

    31

    文章

    5372

    瀏覽量

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

    關(guān)注

    3

    文章

    1384

    瀏覽量

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

    關(guān)注

    0

    文章

    8

    瀏覽量

    7246
收藏 人收藏

    評論

    相關(guān)推薦

    笙泉科技超低功耗、高性價比MCU(M0+ : MG32L00)

    ? Cortex?-M0+內(nèi)核,最高主頻達(dá)24MHz,內(nèi)置64KB Flash、4KB SRAM,集成12 位高精度ADC、RTC、PWM、比較器等模擬外設(shè),具有UART、LPUART、SPI、I2C
    發(fā)表于 01-20 10:51

    飛凌嵌入式ElfBoard ELF 1板卡-Linux內(nèi)核移植之內(nèi)核簡介

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

    實際項目開發(fā)為何選擇ARM? Cortex?-M4 內(nèi)核的HK32MCU?

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

    CW32L010安全低功耗MCU,樹立M0+產(chǎn)品行業(yè)新標(biāo)桿!

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

    Linux內(nèi)核測試技術(shù)

    。內(nèi)核測試技術(shù)是實現(xiàn)這一目標(biāo)的關(guān)鍵手段。本文將詳細(xì)介紹 Linux 內(nèi)核測試的各種技術(shù),包括單元測試、集成測試、功能測試和性能測試等,并討論不同測試方法的優(yōu)缺點及其適用場景。
    的頭像 發(fā)表于 08-13 13:42 ?604次閱讀
    Linux<b class='flag-5'>內(nèi)核</b>測試技術(shù)

    基于 ARM Cortex M0+內(nèi)核BAT32A237芯片

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

    電機(jī)專用32位MCU PY32MD310,Arm? Cortex-M0+內(nèi)核

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

    XL32F003單片機(jī) M0+內(nèi)核 主頻48M,64 K flash加8K SRAM存儲器

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

    XL32F003單片機(jī) M0+內(nèi)核 主頻48M,64 K flash加8K SRAM存儲器

    XL32F003是芯嶺技術(shù)推出的一顆高性能單片機(jī),搭配32位ARM Cortex-M0+內(nèi)核,最高工作頻率48 MHz。 芯片嵌入高達(dá)64 Kbytes flash和8 Kbytes SRAM存儲器
    的頭像 發(fā)表于 05-16 15:31 ?788次閱讀
    XL32F003單片機(jī) <b class='flag-5'>M0+</b><b class='flag-5'>內(nèi)核</b> 主頻48<b class='flag-5'>M</b>,64 K flash加8K SRAM存儲器

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

    M3內(nèi)核的3種低功耗模式,睡眠、停機(jī)和待機(jī),在M0內(nèi)核也適用嗎
    發(fā)表于 05-16 06:56

    普冉半導(dǎo)體推出一款基于32位ARM Cortex-M0+內(nèi)核的微控制器

    PY32F071單片機(jī)是一款基于32 位 ARM? Cortex? - M0+內(nèi)核的微控制器,由普冉半導(dǎo)體推出。
    的頭像 發(fā)表于 04-30 11:24 ?867次閱讀
    普冉半導(dǎo)體推出一款基于32位ARM Cortex-<b class='flag-5'>M0</b>+<b class='flag-5'>內(nèi)核</b>的微控制器

    賽元微新推出了大資源高工規(guī)的32位M0+內(nèi)核MCU—SC32F12系列

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

    HC32L136 M0+內(nèi)核在寫FLASH時程序會跑飛的原因?

    使用一款華大的HC32L136單片機(jī)M0+內(nèi)核64k的flash,在0x0-0x8000放入bootloader 在0x8000-0xFFFF放入用戶代碼,在全速 執(zhí)行用戶代碼
    發(fā)表于 04-18 06:04

    STM32如何用HAL庫進(jìn)行內(nèi)核復(fù)位?

    STM32如何用HAL庫進(jìn)行內(nèi)核復(fù)位 普通的系統(tǒng)復(fù)位函數(shù)如下: / ** 簡短的系統(tǒng)重置 詳細(xì)信息發(fā)起系統(tǒng)重置請求以重置MCU。 * / __STATIC_INLINE void
    發(fā)表于 04-11 06:49

    Cortex-M85內(nèi)核單片機(jī)如何快速上手

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