netlhx 发表于 2015-9-1 08:10:20

请教SCATTER文件格式

SCATTER文件可以用来设置代码及变量的位置,只是不太清楚这种语法的格式


LR_IROM1 0x08000000 0x00100000{    ; load region size_region
ER_IROM1 0x08000000 0x00100000{; load address = execution address
   *.o (RESET, +First)
   *(InRoot$$Sections)
   .ANY (+RO)
}
RW_IRAM1 0x20000000 0x00050000{; RW data
   .ANY (+RW +ZI)
   }
}   哪位有这方面的介绍资料或直接就上面的代码解释一番么?

Mandelbrot_Set 发表于 2015-9-1 08:57:39

refer
http://www.keil.com/support/man/docs/armlink/armlink_pge1362075656353.htm

creep 发表于 2015-9-1 08:58:20

LR_IROM1 0x08000000 0x00100000是加载域(load region size_region),一般程序下载HEX/BIN就是下载到这个地方。
下面的是运行域(execution address)了,一般的加载域和运行域起始地址相同,也有不同的比如SDRAM等外设运行代码时。运行域中的代码存放顺序就是first放reset向量,下面的放*(InRoot$$Sections)用于复制一些代码相当于启动文件中的_main(),再下面就是只读的存放了。
ER_IROM1 0x08000000 0x00100000{; load address = execution address
   *.o (RESET, +First)
   *(InRoot$$Sections)
   .ANY (+RO)
}

下面的就是RAM的设置了,放读写和初始化为0的变量
RW_IRAM1 0x20000000 0x00050000{; RW data
   .ANY (+RW +ZI)
   }

版主是不是想设置F7的flash运行地址使用TCM接口的ART加速或者走AXI接口利用L1-cache,这个官方好像有个例子,也可以设置不同堆栈ram运行地址。


至于分散加载的详细说明好像keil网站上有个文档讲解:Linker User Guide,第七章专门说的就是Scatter-loading Features。

yanhaijian 发表于 2015-9-1 09:11:02

你百度搜索分散加载。

moyanming2013 发表于 2015-9-1 10:41:38

Mandelbrot_Set 发表于 2015-9-1 08:57
refer
http://www.keil.com/support/man/docs/armlink/armlink_pge1362075656353.htm

正解。。。

netlhx 发表于 2015-9-1 11:48:50

Mandelbrot_Set 发表于 2015-9-1 08:57
refer
http://www.keil.com/support/man/docs/armlink/armlink_pge1362075656353.htm

感谢啊

netlhx 发表于 2015-9-1 11:49:01

creep 发表于 2015-9-1 08:58
LR_IROM1 0x08000000 0x00100000是加载域(load region size_region),一般程序下载HEX/BIN就是下载到这 ...

感谢啊

netlhx 发表于 2015-9-1 11:49:22

yanhaijian 发表于 2015-9-1 09:11
你百度搜索分散加载。

感谢啊

netlhx 发表于 2015-9-1 11:49:30

moyanming2013 发表于 2015-9-1 10:41
正解。。。

感谢啊
页: [1]
查看完整版本: 请教SCATTER文件格式