新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > ARM Cortex-M3 學習筆記(4-6)

        ARM Cortex-M3 學習筆記(4-6)

        作者: 時間:2016-11-20 來源:網絡 收藏
        最近在學ARM Cortex-M3,找了本號稱很經典的書“An Definitive Guide to The ARM Cortex-M3”在看。這個系列學習筆記其實就是在學習這本書的過程中做的讀書筆記。

        對內存的互斥訪問

        Cortex-M3 中提供了三對用于互斥訪問的內存的指令,分別是:LDREX/STREX, LDREXH/STREXH, LDREXB/STREXB,這三對指令分別對應于字、半字、字節 的取出與寫入。

        本文引用地址:http://www.104case.com/article/201611/318834.htm

        LDREX 的基本指令格式為:

        LDREX Rxf, [Rn, #offset]

        這條指令與LDR Rxf,[Rn,#offset] 的作用是相同的,唯一的區別是這條指令還會通知內核對它所訪問的內存空間特殊關照。如何特殊關照,在STREX 指令執行時顯現出來。

        STREX的基本指令格式為:

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



        關鍵詞: ARMCortex-M

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 岳池县| 鸡西市| 南川市| 亳州市| 永顺县| 遂溪县| 鲁甸县| 象山县| 永和县| 尖扎县| 宁国市| 湘阴县| 玛沁县| 屯门区| 裕民县| 松江区| 辽中县| 西峡县| 铁岭县| 高邑县| 华阴市| 昌平区| 巴塘县| 南丹县| 九江县| 饶河县| 榆社县| 博乐市| 昌都县| 华蓥市| 焦作市| 临汾市| 株洲县| 隆化县| 东平县| 炉霍县| 关岭| 新昌县| 年辖:市辖区| 西昌市| 曲水县|