位帶操作
概念其實(shí)30年前就有了,那還是 8051 單片機(jī)開(kāi)創(chuàng)的先河。如今CortexM3 將此能力進(jìn)化,這里的位帶操作是8051 位尋址區(qū)的威力大幅加強(qiáng)版。
概念:
位帶操作就是指可以使用普通的加載/存儲(chǔ)指令來(lái)對(duì)單一的比特(bit)來(lái)進(jìn)行讀寫(xiě)。打個(gè)比喻,就相當(dāng)于是為位帶區(qū)的每一位都起了一個(gè)別名,或者說(shuō)是為為帶區(qū)的每一位新建了一個(gè)快捷方式,通過(guò)對(duì)指定別名的訪(fǎng)問(wèn)來(lái)代替對(duì)指定位的訪(fǎng)問(wèn)。說(shuō)明:指定位與別名之間的映射過(guò)程是由內(nèi)核完成的,無(wú)需人工干預(yù)。
為了能使用普通指令來(lái)加載和存儲(chǔ)那么這個(gè)別名肯定得膨脹成32位(一個(gè)字),不過(guò)這個(gè)32位只有低位有效。所以這樣就可以通過(guò)對(duì)別名的訪(fǎng)問(wèn)來(lái)代替對(duì)位帶區(qū)指定位的訪(fǎng)問(wèn)了。
位帶區(qū):支持位帶操作的地址范圍,在cortexM3中有兩個(gè)地區(qū)實(shí)現(xiàn)了位帶操作,一個(gè)是SRAM的最低1MB范圍,另一個(gè)是片內(nèi)外設(shè)區(qū)的最低1MB范圍。這兩個(gè)區(qū)中的地址除了可以像普通的RAM 一樣使用外,它們還都在“位帶別名區(qū)”有自己的位帶別名,位帶別名區(qū)把每個(gè)比特膨脹成一個(gè)32 位的字。當(dāng)你通過(guò)位帶別名區(qū)訪(fǎng)問(wèn)這些字時(shí),就可以達(dá)到訪(fǎng)問(wèn)原始比特的目的。
位帶別名區(qū):對(duì)別名地址的訪(fǎng)問(wèn)最終會(huì)作用到位帶區(qū)對(duì)應(yīng)位,注意這個(gè)過(guò)程中有一個(gè)地址映射的過(guò)程。