天天看點

51、AVR、PIC、ARM單片機的總線與存儲空間的了解

51單片機

   特殊指令MOVC實作讀取程式存儲區域的靜态資料,隻能讀取,不能寫入,是以不能實作自程式設計。

   外部存儲器通過P2、P0端口連接配接位址和資料總線,可實作擴充。P0與P2組合實作位址輸出,

   P0實作資料總線,是以一個資料周期需要兩個總線周期。16位位址可通路64K外部位址空間。

   外部記憶體位址與内部記憶體位址是平行的,是以都有0x0001,但是通路外部存儲器通過MOVX指令實作。

-----------------

AVR:程式存儲空間與SRAM資料存儲空間獨立編址。

           資料存儲空間:通用寄存器、IO寄存器、臨時資料區。

           靜态資料存儲在程式存儲空間,用LPM、SPM指令存取靜态常量。

           全局變量:存放在SRAM中,對于C語言來說,由編譯器規劃整個SRAM資料區域的記憶體配置設定。

         SRAM:全局變量、棧空間、堆空間,如果沒有實作malloc,那麼就沒有實作堆管理。那麼記憶體配置設定基本就是從棧上配置設定。是以就隻存在兩個區域,一個全局變量區,一個局部變量區(棧)。

AVR的記憶體位址空間的首位址是R0-R31通用寄存器。其它的狀态寄存器SREG和堆棧指針寄存器SP

AVR可以實作自程式設計,通過SPM指令修改程式存儲區。

------------------

PIC單片機

     哈弗結構,獨立編址。通用寄存器獨立空間。

     8位單片機,指令簡化,沒有直接的存儲程式存儲空間的指令,隻能通過PC寄存器或其它指令方式多步解決間接通路程式存儲空間。

     是以不能實作自程式設計。

    16單片機,特殊指令TBLRW指令來實作讀寫程式存儲空間。 可實作自程式設計。

     dsPIC單片機還可以講程式空間映射到資料空間,然後直接通過訪記憶體指令操作。

可程式設計FLASH:通常為NorFlash,可以實作随機通路,是以可以挂接在總線上直接尋址,是以可以直接運作程式。但是隻能塊擦除,是以不适合做資料存儲。

小型單片機,通常就采用NorFlash作為内部程式存儲器,SRAM做資料存儲器。這樣的單片機一般隻實作簡單功能,程式代碼不大(<1M),資料處理也不多。

如果要實作NandFalsh存儲,然後加載到SRAM或SDRAM、DDRAM中運作,那麼記憶體通常是外擴的,因為要在單片機内實作大塊的RAM是沒有空間的。而随着頻率的增加,能耗的增加,才有可能支撐起大的存儲器,是以對于小型單片機來說,都是直接從NorFlash運作,SRAM做資料存儲器。或者從NANDFlash加載到外部SDRAM中運作。對于嵌入式單片機來說,可以采用DDRAM外擴記憶體。

ARM單片機:

    統一編址,可以實作自程式設計。

    AMBA總線:多個核心、多個存儲器。

        對于M系列低端單片機,直接內建有NorFlash來運作程式,是以不需要外擴記憶體。

    對于高端M系列單片機、A系列單片機:外擴DRAM存儲器。NandFlash存儲程式,運作後從NandFlash加載程式到DRAM記憶體運作。

    低端單片機的自程式設計:直接讀寫NorFlash區域來實作,就如讀寫記憶體。

    高端單片機,程式存放在外存中,程式是通過外設寄存器空間讀入記憶體位址空間,是以NandFlash僅僅是寄存器空間,并不占用記憶體空間。自程式設計,也就是讀寫NandFlash裝置。

全靜态運作:

     就是說CPU頻率為1HZ依然可以運作,為什麼這樣呢。是因為内部沒有需要定期重新整理的器件,如SDRAM等,因為采用SRAM記憶體,因而可以實作全靜态運作。