一区二区三区三上|欧美在线视频五区|国产午夜无码在线观看视频|亚洲国产裸体网站|无码成年人影视|亚洲AV亚洲AV|成人开心激情五月|欧美性爱内射视频|超碰人人干人人上|一区二区无码三区亚洲人区久久精品

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

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

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

一文知道MCU上電復(fù)位啟動(dòng)過程

h1654155282.3538 ? 來源:陳翠 ? 2019-10-08 10:37 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

MCU上電(復(fù)位)時(shí),從固定的地址啟動(dòng),一般是地址0x00000000,如ARM7;個(gè)別特殊的如STM32默認(rèn)啟動(dòng)地址為0x8000000(flash區(qū)啟動(dòng))。啟動(dòng)過程主要完成兩部分工作,一個(gè)是硬件執(zhí)行環(huán)境,如中斷向量表、寄存器、看門狗等,另一個(gè)是軟件環(huán)境,如C庫(kù)環(huán)境、ZI(未初始化的內(nèi)存變量)等。

一、硬件環(huán)境工作

1.初始時(shí)鐘

初始化內(nèi)核時(shí)鐘,主時(shí)鐘,各個(gè)外設(shè)的時(shí)鐘。

2.關(guān)閉看門狗

看門狗是用來監(jiān)控應(yīng)用程序的異常跑飛而復(fù)位CPU,在初始化階段,由于沒有“喂狗”這一動(dòng)作,有可能導(dǎo)致CPU不斷復(fù)位,因此,首先會(huì)關(guān)閉看門狗,初始化完,再開啟。

3.建立中斷向量表

中斷向量表,中斷源的識(shí)別標(biāo)志,可用來形成相應(yīng)的中斷服務(wù)程序的入口地址,或者中斷服務(wù)程序入口地址的偏移量和段基值。CPU利用中斷向量表轉(zhuǎn)入中斷服務(wù)程序處理相關(guān)事務(wù)。

4.初始化堆棧寄存器

堆棧的作用一個(gè)就是保存現(xiàn)場(chǎng)(上下文),如函數(shù)調(diào)用或者中斷發(fā)送時(shí),將當(dāng)前執(zhí)行地址壓棧,調(diào)用完成再返回此處執(zhí)行程序。另一個(gè)作用就是保存參數(shù),如臨時(shí)變量。因此,在啟動(dòng)階段需初始化堆棧寄存器、堆棧的大小、起始地址等。

5.內(nèi)存初始化

選擇內(nèi)部或者外部RAM。

二、軟件環(huán)境工作

1.把RO,RW從它們的加載域復(fù)制到它們的運(yùn)行域中去。

2.初始化(清零)ZI域。

3.初始化堆棧指針

4.初始化C庫(kù)環(huán)境

包括C庫(kù)所需的內(nèi)存空間、程序執(zhí)行所需資源、C庫(kù)初始化。

三、CortexM3啟動(dòng)

CortexM3有3種啟動(dòng)方式

1、BOOT1=1BOOT0=1,中斷向量表定位于SRAM區(qū),即起始地址為0x2000000,同時(shí)復(fù)位后PC指針位于0x2000000處。

2、BOOT1=xBOOT0=0,中斷向量表定位于FLASH區(qū),即起始地址為0x8000000,同時(shí)復(fù)位后PC指針位于0x8000000處。

3、BOOT1=0BOOT0=1,中斷向量表定位于內(nèi)置Bootloader區(qū),此時(shí)可通過串口下載程序的二進(jìn)制文件到flash區(qū)。

而Cortex-M3內(nèi)核規(guī)定,起始地址必須存放堆頂指針,而第二個(gè)地址則必須存放復(fù)位中斷入口向量地址,這樣在Cortex-M3內(nèi)核復(fù)位后,會(huì)自動(dòng)從起始地址的下一個(gè)32位空間取出復(fù)位中斷入口向量,跳轉(zhuǎn)執(zhí)行復(fù)位中斷服務(wù)程序。對(duì)比ARM7/ARM9內(nèi)核,Cortex-M3內(nèi)核則是固定了中斷向量表的位置而起始地址是可變化的。即是對(duì)于flash啟動(dòng)來說(正常工作也是flash啟動(dòng)),0x8000000地址存放的是棧頂?shù)刂穇_initial_sp,0x8000004地址存放的是復(fù)位中斷向量Reset_Handler入口地址(STM32使用32位總線,存儲(chǔ)空間為4字節(jié)對(duì)齊);在編寫多段程序時(shí),偏移地址空間需注意,如編寫一個(gè)BootLoader,從BootLoader到應(yīng)用程序段的相互跳轉(zhuǎn)。

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

    關(guān)注

    146

    文章

    17985

    瀏覽量

    367375
  • 上電復(fù)位
    +關(guān)注

    關(guān)注

    1

    文章

    43

    瀏覽量

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

掃碼添加小助手

加入工程師交流群

    評(píng)論

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

    電復(fù)位延時(shí)電路

    電復(fù)位延時(shí)電路
    發(fā)表于 12-04 12:12 ?9751次閱讀
    <b class='flag-5'>上</b><b class='flag-5'>電復(fù)位</b>延時(shí)電路

    STM32H7的啟動(dòng)過程分析

    本章教程主要跟大家講STM32H7的啟動(dòng)過程,這里的啟動(dòng)過程是指從CPU電復(fù)位執(zhí)行第1條指令開始(匯編文件)到進(jìn)入C程序main()函數(shù)入口之間的部分。
    的頭像 發(fā)表于 10-17 14:42 ?2752次閱讀

    詳解STM32啟動(dòng)過程

    本章教程主要跟大家講STM32H7的啟動(dòng)過程,這里的啟動(dòng)過程是指從CPU電復(fù)位執(zhí)行第1條指令開始(匯編文件)到進(jìn)入C程序main()函數(shù)入口之間的部分。
    發(fā)表于 11-14 11:24 ?2105次閱讀

    U-Boot啟動(dòng)過程--詳細(xì)版的完全分析

    我們知道,bootloader是系統(tǒng)電后最初加載運(yùn)行的代碼。它提供了處理器電復(fù)位后最開始需要執(zhí)行的初始化代碼。在PC機(jī)上引導(dǎo)程序般由
    發(fā)表于 12-12 22:50

    講STM32H7的啟動(dòng)過程

    第13章 STM32H7啟動(dòng)過程詳解本章教程主要跟大家講STM32H7的啟動(dòng)過程,這里的啟動(dòng)過程是指從CPU電復(fù)位執(zhí)行第1條指令開始(匯編
    發(fā)表于 08-03 06:15

    STM32F429啟動(dòng)過程詳解

    第13章 STM32F429啟動(dòng)過程詳解本章教程主要跟大家講STM32F429的啟動(dòng)過程,這里的啟動(dòng)過程是指從CPU電復(fù)位執(zhí)行第1條指令開
    發(fā)表于 08-03 06:15

    STM32H7啟動(dòng)過程詳解

    第13章 STM32H7啟動(dòng)過程詳解本章教程主要跟大家講STM32H7的啟動(dòng)過程,這里的啟動(dòng)過程是指從CPU電復(fù)位執(zhí)行第1條指令開始(匯編
    發(fā)表于 08-03 06:41

    電復(fù)位和按鍵復(fù)位區(qū)別

    電復(fù)位是指電壓從無到有在RESET處會(huì)先處于高電平段時(shí)間,然后由于該點(diǎn)通過電阻接地,則RESET該點(diǎn)的電平會(huì)逐漸的改變?yōu)榈碗娖?,從而使得單片機(jī)
    發(fā)表于 10-20 15:24 ?11.9w次閱讀
    <b class='flag-5'>上</b><b class='flag-5'>電復(fù)位</b>和按鍵<b class='flag-5'>復(fù)位</b>區(qū)別

    單片機(jī)上電復(fù)位與欠壓復(fù)位過程解析

    電復(fù)位:是由外部總線產(chǎn)生的種異步復(fù)位,單片機(jī)電壓監(jiān)測(cè)電路檢測(cè)到電源電壓VDD上升時(shí),會(huì)產(chǎn)生個(gè)
    發(fā)表于 03-23 15:14 ?1.1w次閱讀
    單片機(jī)上<b class='flag-5'>電復(fù)位</b>與欠壓<b class='flag-5'>復(fù)位</b>的<b class='flag-5'>過程</b>解析

    BootLoader與MCU啟動(dòng)過程

    ARM之Cortex M3的啟動(dòng)過程目前,多數(shù)MCU廠商都提供個(gè)啟動(dòng)文件。當(dāng)然,編程者也可以自己編寫啟動(dòng)文件,具體編寫要求ARM的網(wǎng)站上都
    發(fā)表于 10-25 16:36 ?10次下載
    BootLoader與<b class='flag-5'>MCU</b><b class='flag-5'>啟動(dòng)過程</b>

    STM32電后啟動(dòng)過程

    STM32電后啟動(dòng)過程
    發(fā)表于 11-15 18:21 ?16次下載
    STM32<b class='flag-5'>上</b>電后<b class='flag-5'>啟動(dòng)過程</b>

    stm32啟動(dòng)過程

    三個(gè)不同作用的空間在單片機(jī)里面占了三個(gè)空間,單片機(jī)引導(dǎo)哪個(gè)空間資源啟動(dòng),由BOOT1和BOOT0決定!正常來說般是從flash啟動(dòng)!?。《?、從flash啟動(dòng)過程2.1 數(shù)據(jù)在堆棧中存
    發(fā)表于 12-16 16:57 ?8次下載
    stm32<b class='flag-5'>啟動(dòng)過程</b>

    STM32電復(fù)位電路參數(shù)選擇

    1.電復(fù)位電路的作用2.電復(fù)位電路工作原理
    發(fā)表于 01-17 12:28 ?27次下載
    STM32<b class='flag-5'>上</b><b class='flag-5'>電復(fù)位</b>電路參數(shù)選擇

    分析ARM Cortex-M內(nèi)核復(fù)位啟動(dòng)過程

    ARM Cortex-M內(nèi)核的復(fù)位啟動(dòng)過程也被稱為復(fù)位序列(Reset sequence),下面就來簡(jiǎn)要總結(jié)分析下這一過程。
    的頭像 發(fā)表于 03-20 09:58 ?3167次閱讀

    stm32啟動(dòng)過程詳解

    啟動(dòng)過程。本文將詳細(xì)介紹STM32的啟動(dòng)過程。 復(fù)位電路 對(duì)于STM32微控制器來說,復(fù)位啟動(dòng)
    的頭像 發(fā)表于 12-08 15:47 ?2374次閱讀