`

MDK-ARM 分散加载文件

 
阅读更多

    Scatter Loading分散加载文件的概念http://www.keil.com/support/man/docs/armlink/armlink_Cegbbcjj.htm

    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中的,参考RealView MDK中生成带调试信息和不带调试信息的AXF文件一文。axf后缀的文件是elf格式文件(在linux下可通过readelf -h或者file命令读出其elf头文件的信息)。hex后缀的文件是不带调式信息的,它被flash programmer直接下载到flash中,并在上电后直接执行,不需要链接/装载器的参与(事实上无OS的系统也无法提供这一机制),因而其不需要elf头文件信息,所以也就不是elf格式的文件。

 

 

 

    Keil中Linker选项卡参数--ro_base 表示RO区域的加载和执行地址,--rw_base 表示RW区域的执行地址,勾选Use Memory Layout from Target Dialog,那么加载文件就是从你定义irom和iram等地址得到的,如果不勾选的话就是通过你自己指定的加载文件来加载。

   

参考http://blog.csdn.net/wangfoquan/article/details/7647011

mbed的内存模型介绍对此也有很清晰的解释http://mbed.org/handbook/Memory-Model

分享到:
评论

相关推荐

    mdk sct 分散加载文件 周立功

    MDK SCT 分散加载文件是一种在 ARM 嵌入式开发中使用的文件格式,主要用于描述加载程序的配置和执行顺序。下面是对 M DK SCT 分散加载文件的详细介绍: 一、基础知识 在ARM嵌入式开发中,MDK SCT 分散加载文件是一...

    MDK程序分散加载实例(基于GD32)

    在MDK中,我们通过一个名为“scatter file”(分散加载文件)的文本文件来实现这一功能。这个文件定义了程序的各个段(如.text、.data、.bss等)应被加载到哪个内存地址,以及它们的大小。 GD32F3X0是GD32系列的一...

    分散加载文件浅释.pdf 周立功 keil mdk sct文件

    SCT文件(Script Configuration Table)是Keil MDK中的一个重要概念,它用于控制程序的加载和执行过程,实现了代码的分散加载功能。下面我们将深入探讨分散加载的原理及其在Keil MDK中的应用。 分散加载,顾名思义...

    keil for arm汇编程序分散加载文件(L6236E 错误 )出错的解决方法

    在使用Keil MDK进行ARM Cortex-M3微控制器编程时,用户可能会遇到分散加载文件相关的错误或警告。本文将详细介绍如何解决“L6236E: No section matches selector - no section to be FIRST/LAST”这一错误,并对相关...

    Keil分散加载说明1

    首先,我们需要理解分散加载的核心在于修改项目的`.sct`文件(Scatter-loading Description File),该文件用于定义程序各部分的加载位置与执行地址。 - **修改.sct文件**: - 打开项目中对应的`.sct`文件。例如,...

    MDK应用文章:4.2410的分散加载文件.pdf

    在嵌入式开发领域,分散加载文件(Scatterfile)是一个非常重要的概念,尤其是在使用MDK(Microcontroller Development Kit)工具链进行ARM微控制器开发时。Scatterfile文件为LARM链接器提供了输入参数,它用于指定...

    MDK调试S3C44B0--RAM中调试配置

    - **步骤A**:在MDK中设置Linker对话框,选择并编辑分散加载文件。此文件用于指定程序在RAM中的加载和执行位置。例如: ```plaintext ; Run in RAM LR_ROM10x0C000000 { *.o(RESET,+First) *(InRoot$$Sections) ....

    MDK的编译过程及文件类型全解(第8节)-sct文件.pptx

    这其中,sct文件,即Linker Control File(分散加载文件),在链接阶段起着至关重要的作用。 sct文件是MDK自动生成的,基于选定的芯片型号,它包含了关于芯片内存布局的信息。例如,STM32的内部FLASH和SRAM的大小和...

    S32K144的hello_interrupt移植到MDK

    在进行S32K144的hello_interrupt移植到MDK的过程中,主要涉及的知识点包括了S32K144系列微控制器的特性、MDK开发环境的使用、分散加载描述文件(scatter file)的概念及其在链接过程中的作用,以及中断处理相关的...

    MDK 开发2410的方法

    通过深入理解RealViewMDK的安装、启动代码生成、分散加载链接脚本及调试脚本文件,开发者能够更加高效地完成ARM架构项目的开发。这些知识点不仅涵盖了基本的开发流程,还涉及了高级功能的应用,是提升ARM开发技能不...

    keil中文帮助完整版

    4. **分散加载文件**(Linker Script):分散加载文件是Keil编译过程中不可或缺的一部分,它定义了程序在目标硬件上的内存布局,如代码段、数据段的位置。通过自定义分散加载文件,开发者可以优化程序的存储和运行...

    Keil MDK下如何设置非零初始化变量1

    总结来说,要实现Keil MDK下的非零初始化变量,关键在于理解内存布局和分散加载文件的配置,以及如何利用C语言的内存管理特性来指定变量的存储位置。通过创建自定义的执行节并将其分配到RAM,我们可以保留复位前的...

    用keil在ram中调试lpc系列arm

    对于LPC系列ARM微控制器来说,通过合理的分散加载策略可以在RAM中进行更为灵活的调试。 #### 段的定义 - **BSS段**:用于存放未初始化的全局变量。 - **数据段**:存放已初始化的全局变量。 - **代码段**:存放程序...

    F429的分散加载示例

    1,基于Keil实现的分散加载功能 2,有APP和Hardware两个固件 3,APP在Flash的起始地址0x08000000,RAM起始地址0x20000000 4,Hardware在Flash的起始地址0x08080000,RAM起始地址0x2000C000 5,示例基于正点原子...

    s3c44b0+JLINK+KEIL在SDRAM中调试程序

    12. MDK配置选项框:除了使用分散加载文件外,还可以直接在MDK的配置选项框中设置内存起始地址和程序加载参数,以实现程序在SDRAM中的调试。 13. 程序入口点:在程序中设置正确的程序入口点(如main函数),确保...

    Keil MDK下如何设置非零初始化变量

    一些工控产品,当系统复位后(非上电复位),可能要求保持住复位前RAM...而keil mdk在默认情况下,任何形式的复位都会将RAM区的非初始化变量数据清零。如何设置非初始化数据变量不被零初始化,这是本篇文章所要探讨的。

    STM32动态加载实现V1.0.pdf

    总的来说,STM32动态加载的实现涉及对MDK编译流程的深入理解,ELF文件格式的知识,以及如何使用fromelf工具和编写分散加载脚本来生成具有动态特性的.axf文件。这一技术的应用不仅限于STM32H743,对于其他基于ARM架构...

    keil mdk中汇编与C混合编程程序入口配置说明

    为了正确配置程序的入口地址和偏移量,我们需要理解并掌握分散加载(scatter loading)的概念,以及如何使用.SCT(Scatter Loading Description File)文件。.SCT文件是用来描述程序在内存中的分布和加载方式,它...

Global site tag (gtag.js) - Google Analytics