<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          STM32的BOOT概述

          作者: 時(shí)間:2016-11-10 來(lái)源:網(wǎng)絡(luò) 收藏
          STM32三種啟動(dòng)模式對(duì)應(yīng)的存儲(chǔ)介質(zhì)均是芯片內(nèi)置的,它們是:

          1)用戶(hù)閃存 = 芯片內(nèi)置的Flash。
          2)SRAM = 芯片內(nèi)置的RAM區(qū),就是內(nèi)存啦。
          3)系統(tǒng)存儲(chǔ)器 = 芯片內(nèi)部一塊特定的區(qū)域,芯片出廠時(shí)在這個(gè)區(qū)域預(yù)置了一段Bootloader,就是通常說(shuō)的ISP程序。這個(gè)區(qū)
          域的內(nèi)容在芯片出廠后沒(méi)有人能夠修改或擦除,即它是一個(gè)ROM區(qū)。

          本文引用地址:http://www.ex-cimer.com/article/201611/317476.htm

          在每個(gè)STM32的芯片上都有兩個(gè)管腳BOOT0和BOOT1,這兩個(gè)管腳在芯片復(fù)位時(shí)的電平狀態(tài)決定了芯片復(fù)位后從哪個(gè)區(qū)域開(kāi)始執(zhí)
          行程序,見(jiàn)下表:

          BOOT1=x BOOT0=0 從用戶(hù)閃存啟動(dòng),這是正常的工作模式。

          BOOT1=0 BOOT0=1 從系統(tǒng)存儲(chǔ)器啟動(dòng),這種模式啟動(dòng)的程序功能由廠家設(shè)置。
          BOOT1=1 BOOT0=1 從內(nèi)置SRAM啟動(dòng),這種模式可以用于調(diào)試。

          在系統(tǒng)上電的時(shí)候,cpu首先根據(jù)這兩個(gè)腳來(lái)確定是哪種模式的啟動(dòng),然后就是把相應(yīng)模式的起始地址映射到0地址處,并從0地址處開(kāi)始執(zhí)行。

          在芯片出廠時(shí),st燒寫(xiě)了一個(gè)bootloader到rom中,也就是system memory。這個(gè)bootloader的主要任務(wù)就是通過(guò)uart1下載程序到內(nèi)置flash中去。工作流程如下:


          system memory boot模式,在執(zhí)行完成它的任務(wù)之后是必須要退出的。這個(gè)退出方式是通過(guò)一次硬件reset來(lái)實(shí)現(xiàn)的。在reset的時(shí)候,必須要配置BOOT[1:0]這兩個(gè)腳以使cpu在重啟之后進(jìn)入適當(dāng)?shù)哪J健?br />

          要注意的是,一般不使用內(nèi)置SRAM啟動(dòng)(BOOT1=1 BOOT0=1),因?yàn)镾RAM掉電后數(shù)據(jù)就丟失。多數(shù)情況下SRAM只是在調(diào)試時(shí)使用,也可以做其他一些用途。如做故障的局部診斷,寫(xiě)一段小程序加載到SRAM中診斷板上的其他電路,或用此方法讀寫(xiě)板上的Flash或EEPROM等。還可以通過(guò)這種方法解除內(nèi)部Flash的讀寫(xiě)保護(hù),當(dāng)然解除讀寫(xiě)保護(hù)的同時(shí)Flash的內(nèi)容也被自動(dòng)清除,以防止惡意的軟件拷貝。

          一般BOOT0和BOOT1跳線都跳到0



          關(guān)鍵詞: STM32BOO

          評(píng)論


          技術(shù)專(zhuān)區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();