keil分散加载文件

方法一:将整个文件的RW和ZI数据存放至指定内存。程序中不用做其他配置

LR_IROM1 0x08010000 0x00100000  {    ; load region size_region
  ER_IROM1 0x08010000 0x00100000  {  ; load address = execution address
   *.o (RESET, +First)
   *(InRoot$$Sections)
   .ANY (+RO)
   .ANY (+XO)
  }
  RW_IRAM1 0x20000000 0x00020000  {  ; RW data
   .ANY (+RW +ZI)
  }
  RW_IRAM2 0x10000000 0x00010000  {    
  开启CCM内存,地址0x10000000 大小0x10000
	port.o(+RW +ZI)           //将port.c文件中的RW ZI数据存放在CCM内存中
	queue.o(+RW +ZI)       //同上
	tasks.o(+RW +ZI)        //同上
	heap_4.o(+RW +ZI)    //同上
  }
}

方法二:将指定数据存放至指定内存。程序中需做设置

LR_IROM1 0x08010000 0x00100000  {    ; load region size_region
  ER_IROM1 0x08010000 0x00100000  {  ; load address = execution address
   *.o (RESET, +First)
   *(InRoot$$Sections)
   .ANY (+RO)
   .ANY (+XO)
  }
  RW_IRAM1 0x20000000 0x00020000  {  ; RW data
   .ANY (+RW +ZI)
  }
  EXRAM 0x60004000 0x00100000 
  {
	*(exram)
  }
}

程序中申请变量时指定内存区

#pragma arm section rwdata = "exram", zidata = "exram"

ST_Module stModule;

#pragma arm section

你可能感兴趣的:(单片机,嵌入式硬件)