新聞中心

EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 讓單片機(jī)運(yùn)行速度更快一些

讓單片機(jī)運(yùn)行速度更快一些

作者: 時(shí)間:2016-12-02 來(lái)源:網(wǎng)絡(luò) 收藏


所以,在RamApp.lnx中指定的定位規(guī)則應(yīng)該在SDRAM中,如下:
  
MEMORY
  {
  ram1: ORIGIN = 0x00003000, LENGTH = 0xf000
  ram: ORIGIN = 0x00F00000, LENGTH = 0x7000
  }
  SECTIONS
  {
  .data : {} > ram1
  .text : {} > ram
  }

最后,在860單片機(jī)系統(tǒng)的地址映射規(guī)則如圖2所示。對(duì)照?qǐng)D1,可以觀察到這和傳統(tǒng)的程序地址映射有很大不同。


圖2地址映射表

3.2 搬運(yùn)的過(guò)程

860T上電復(fù)位,RomTool.bin首先被執(zhí)行,完成初始化工作后,運(yùn)行代碼搬運(yùn)函數(shù),將RAMapp.bin搬運(yùn)到SDRAM中,隨后改變PC(Program Counter)的值,無(wú)條件轉(zhuǎn)移到SDRAM中運(yùn)行RAMapp.bin,如圖3所示。


圖3從Flash到SDRAM搬運(yùn)代碼的過(guò)程

3.3 搬運(yùn)代碼的驅(qū)動(dòng)模塊及跳轉(zhuǎn)模塊源代碼

(1)搬運(yùn)代碼驅(qū)動(dòng)模塊的代碼

void MoveCodeF_to_RAM(UWORD *FlashCode_Add, UWORD *RamCode_Add,UWORD CodeLen) {
  do{
  *RamCode_Add++ = *FlashCode_Add++;
  CodeLen?
  } while ( CodeLen!=0)
  }

該段代碼是將開(kāi)始地址為FlashCode_Add,長(zhǎng)度為CodeLen的Flash代碼搬運(yùn)到開(kāi)始地址為RamCode_Add,長(zhǎng)度為CodeLen的SDRAM 中。

(2)主函數(shù)及跳轉(zhuǎn)模塊

  #define FlashCode_Add_V 0x02810000
  #define RamCode_Add_V 0x00f00000
  #define CodeLen_V 0x00070000/4
  void main(){
  UWORD *I=(UWORD *) FlashCode_Add_v;
  UWORD *j= (UWORD *) RamCode_Add_v;
  UWORD *k= (UWORD *) CodeLen_V;
  MoveCodeF_to_RAM( (UWORD *) i, (UWORD *) j, (UWORD *)k );
  # 跳轉(zhuǎn)模塊
  asm(“addis r2,0,0x00f0”);
  asm(“ori r2,r2,0x0000”); # 代碼起始地址0x00f00000
  asm(“mtspr LR,r2”);
  asm(“bclr 20,0”); # 無(wú)條件轉(zhuǎn)跳到鏈接寄存器
  # (LR)中的地址
  }
  FlashCode_Add_V:被搬運(yùn)代碼的首地址,在Flash中。
  RamCode_Add_V:被搬運(yùn)代碼的目標(biāo)地址,在RAM中。
  CodeLen_V:被搬運(yùn)代碼的長(zhǎng)度,按32位計(jì)算。

該函數(shù)在調(diào)用代碼搬運(yùn)MoveCodeF_to_RAM函數(shù),將代碼從Flash搬運(yùn)到SDRAM中后,將程序指針轉(zhuǎn)移到SDRAM中。注意跳轉(zhuǎn)的地址一定要和RamCode_Add_V一致。

4 小 結(jié)

可見(jiàn),正確完成代碼搬運(yùn)的關(guān)鍵在于:
  
① 確定被搬運(yùn)代碼的物理地址映射規(guī)則, 物理地址一定是在SDRAM中;
② 被搬運(yùn)代碼是被燒結(jié)在Flash中,后來(lái)又被搬運(yùn)到SDRAM中;
③ 無(wú)條件轉(zhuǎn)移到SDRAM中,運(yùn)行被搬運(yùn)代碼(應(yīng)用程序代碼)。

對(duì)于其它型號(hào)的單片機(jī),可以根據(jù)該原理類(lèi)推,方法是一樣的,只是具體的代碼不同而已。相信你的單片機(jī)系統(tǒng)在經(jīng)過(guò)這樣的處理后,效率一定會(huì)高很多。

上一頁(yè) 1 2 下一頁(yè)

關(guān)鍵詞: 單片機(jī)運(yùn)行速

評(píng)論


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

關(guān)閉