MDK-ARM 分散加载文件
? ? Scatter Loading分散加载文件的概念http://www.keil.com/support/man/docs/armlink/armlink_Cegbbcjj.htm,也被称作linker script链接脚本文件。? ? ?
? ? Image映像文件组成http://www.keil.com/support/man/docs/armlink/armlink_Bhccdacb.htm
?
? ? ARM映象文件各组成部分在存储系统中的地址有两种:一种是在映象文件位于存储器中时(也就是该映象文件开始运行之前,通俗的说就是下载到Flash中的二进制代码)的地址,称为加载地址;一种是在映象文件运行时(通俗的说就是给板子上电,开始运行Flash中的程序了)的地址,称为运行时地址。赋初值的全局变量和静态变量在程序还没运行的时候,初值是被放在Flash中的,这个时候他们的地址称为加载地址,当程序运行后,这些初值会从Flash中拷贝到RAM中,这时候就是运行时地址了。
?
?
? ??通过Keil MDK的Build output窗口中Program size项只可查看总的RO,RW,ZI大小,可通过工程名.map文件查看各个文件中各自的RO,RW,ZI大小。
? ? 如果在Output窗口勾选了Debug Information,可以看到生成的axf文件是很大的,但其所含的调试信息是不会在调试的时候被下载到Flash/SRAM中的。参考http://www.embedinfo.com/wen-list.asp?id=344
? ? Keil中Linker选项卡参数--ro_base 表示RO区域的加载和执行地址,--rw_base 表示RW区域的执行地址,勾选Use Memory Layout from Target Dialog,那么加载文件就是从你定义irom和iram等地址得到的,如果不勾选的话就是通过你自己指定的加载文件来加载。
? ?
参考http://blog.csdn.net/wangfoquan/article/details/7647011