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

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > ARM Cortex-M3 學(xué)習(xí)筆記(4-6)

          ARM Cortex-M3 學(xué)習(xí)筆記(4-6)

          作者: 時(shí)間:2016-11-20 來源:網(wǎng)絡(luò) 收藏
          最近在學(xué)ARM Cortex-M3,找了本號(hào)稱很經(jīng)典的書“An Definitive Guide to The ARM Cortex-M3”在看。這個(gè)系列學(xué)習(xí)筆記其實(shí)就是在學(xué)習(xí)這本書的過程中做的讀書筆記。

          對(duì)內(nèi)存的互斥訪問

          Cortex-M3 中提供了三對(duì)用于互斥訪問的內(nèi)存的指令,分別是:LDREX/STREX, LDREXH/STREXH, LDREXB/STREXB,這三對(duì)指令分別對(duì)應(yīng)于字、半字、字節(jié) 的取出與寫入。

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

          LDREX 的基本指令格式為:

          LDREX Rxf, [Rn, #offset]

          這條指令與LDR Rxf,[Rn,#offset] 的作用是相同的,唯一的區(qū)別是這條指令還會(huì)通知內(nèi)核對(duì)它所訪問的內(nèi)存空間特殊關(guān)照。如何特殊關(guān)照,在STREX 指令執(zhí)行時(shí)顯現(xiàn)出來。

          STREX的基本指令格式為:

          STREX Rd, Rxf, [Rn, #offset],作用是將Rxf 的內(nèi)容寫入到 Rn+#offset 地址處的內(nèi)存,并且將Rd的值改寫為0,當(dāng)然這些操作的前提是這條指令是LDR Rxf,[Rn, #offset]指令執(zhí)行之后的第一條對(duì)Rn+#offset地址處執(zhí)行寫入操作的指令。如果在STREX指令執(zhí)行之前就有其他的指令對(duì)Rn+#offset 地址處的內(nèi)存進(jìn)行了寫入操作,那么STREX指令將不會(huì)改動(dòng)Rn+#offset 地址處內(nèi)存,并將Rd的值改寫為1以此來表明寫入操作不成功。這樣,通過在程序中判斷Rd的值就可以確定STREX指令是否成功了,如果不成功可以重新再試以此。通過這種機(jī)制,就可以實(shí)現(xiàn)對(duì)資源的保護(hù)了。



          關(guān)鍵詞: ARMCortex-M

          評(píng)論


          相關(guān)推薦

          技術(shù)專區(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); })();