ARM分散加载文件

发布者:幸福满溢最新更新时间:2016-06-21 来源: eefocus关键字:ARM  分散加载文件 手机看文章 扫描二维码
随时随地手机看文章
(一)原理

ARM的连接器提供了一种分散加载机制,在连接时可以根据分散加载文件(.scf文件)中指定的存储器分配方案,将可执行镜像文件分成指定的分区并定位于指定的存储器物理地址。这样,当嵌入式系统在复位或重新上电时,在对CPU相应寄存器进行初始化后,首先执行ROM存储器的Bootloader代码,根据连接时的存储器分配方案,将相应代码和数据由加载地址拷贝到运行地址,这样,定位在RAM存储器的代码和数据就在RAM存储器中运行,而不再从ROM存储器中取数据或取指令,从而大大提高了CPU的运行速率和效率。

ARM分散加载文件

 

(二)结构

Scatlertoading的存储区块可以分成二种类型:

装载区:当系统启动或加载时应用程序的存放区。 
执行区:系统启动后,应用程序进行执行和数据访问的存储器区域,系统在实时运行时可以有一个或多个执行块。

ARM分散加载文件

 

(三)分散加载时连接器生成的预定义符号

在编译连接时如果指定了分散加载文件(.scf文件),在连接后会自动生成如下变量:


ARM分散加载文件

 

(四)具体例子说明

;ROM_LOAD 为加载区的名称,其后面的0x00000000 表示加载区的起始地址(存放程序代码的起始地址)
ROM_LOAD 0x0
{
;ROM_EXEC 描述了执行区的地址,放在第一块位置定义
    ROM_EXEC 0x00000000
    {
;从起始地址开始放置向量表(即Startup.o(vectors, +First),其中Startup.o 为Startup.s 的目标文件)

;+First表示Vector段放在最前面

;AREA vectors, CODE, READONLY
        Startup.o (vectors, +First)
;接着放置其它代码(即* (+RO)),* 是通配符,类似WINDOW下搜索用的通配符
        * (+RO)
    }
;变量区IRAM 的起始地址为0x40000000
    IRAM 0x40000000
    {
;放置Startup.o (MyStacks)
        Startup.o (MyStacks)
    }
;+0表示接着上一段,UNINIT 表示不初始化
    STACKS_BOTTOM +0 UNINIT       
    {
;放置AREA    StackBottom, DATA, NOINIT
        Startup.o (StackBottom)
    }
;接着从0x40004000 开始,放置 AREA    Stacks, DATA, NOINIT,UNINIT 表示不初始化
    STACKS 0x40004000 UNINIT
    {
        Startup.o (Stacks)
    }
;外部RAM从0x80000000开始为变量区

;如果片外RAM起始地址不为0x8000 0000,则需要修改mem_.scf文件
    ERAM 0x80000000
    {
        * (+RW,+ZI)
    }
;+0表示接着上一段,UNINIT 表示不初始化
    HEAP +0 UNINIT
    {
;放置堆底, AREA    Heap, DATA, NOINIT
        Startup.o (Heap)
    }
;接着在外部0x80080000 放置堆顶

;这个地址是片外RAM 的结束地址,根据实际情况修改
    HEAP_BOTTOM 0x80080000 UNINIT
    {
        Startup.o (HeapTop)
    }
}

 

以上分散文件的可引用的段名

|Image$$ROM_LOAD $$Limit| 

 

|Image$$ROM_EXEC $$Limit| 

 

。。。。。。。。。。。。。。。。

 

;重定向__user_initial_stackheap 函数

;分配新的bottom_of_heap地址等,R0-R3是函数必须的返回值,返回bottom_of_heap的值

;通过分散加载描述文件,重定向其位置,bottom_of_heap等已经在Startup.s中定义为DATA类型

__user_initial_stackheap    
    LDR   r0,=bottom_of_heap
;    LDR   r1,=StackUsr
    LDR   r2,=top_of_heap
    LDR   r3,=bottom_of_Stacks
    MOV   pc,lr

关键字:ARM  分散加载文件 引用地址:ARM分散加载文件

上一篇:ARM 的分散加载
下一篇:ARM的分散加载文件(scatter)介绍

推荐阅读最新更新时间:2024-03-16 14:58

德州仪器推出最新720 MHz OMAP3530处理器
  日前,德州仪器 (TI) 宣布推出具有更高速度的 OMAP3530 应用处理器与评估板 (EVM),不但可为设计人员运行最新应用特性提供更高性能,而且还可为添加其自身的 IP 预留空间。该款最新 OMAP3530 处理器采用 720 MHz ARM Cortex-A8 内核与 520 MHz TMS320C64x+ DSP,可帮助用户加速访问数据库、数据手册、演示文档、电子邮件、音视频附件、Web 浏览以及视频会议应用。此外,该单芯片解决方案还支持更快的启动时间,是便携式信息娱乐、销售点 (POS) 设备、Web 输入板以及单板计算机等应用的理想选择。   720 MHz OMAP3530 处理器的主要特性与优势:  
[单片机]
ARM环境下编译ALSA
1:下载源文件 (1): alsa-lib-1.0.26.tar.bz2 (2): alsa-utils-1.0.26.tar.bz2 2: 把上述两个文件解压到同一个文件夹下面. 3: 编写配置脚本如下(注意交叉编译器的路径根据自己具体的情况修改) #!/bin/sh ALSA_LIB_INC=$PWD/alsa-lib-1.0.26/include INSTALL_DIR=$PWD/alsa-lib-1.0.26/INSTALL rm -rf $INSTALL_DIR mkdir $INSTALL_DIR cd ./alsa-lib-1.0.26/
[单片机]
ARM地址空间
摘编: 在嵌入式系统中,内核映像与根文件系统映像存储在 ROM 或 Flash 等固态存储设备中,并且可以直接运行。但这样做是运行速度太慢,所以要把他们加载到ram中.实现主要有以下过程以嵌入式linux为例) ******************************************* 1.检测内存映射. 内存映射就是指在整个 4GB(CPU) 物理地址空间中有哪些地址范围被分配用来寻址系统的 RAM 单元。比如,在 Samsung S3C44B0X CPU 中,从 0x0c00,0000 到0x1000,0000 之间的 64M 地址空间被用作系统的 RAM 地址空间。虽然 CPU 通常预留出一大段足够的地址空
[单片机]
arm BOOT阅读笔记
[单片机]
ARM+LINUX嵌入式系统的终端显示中文乱码解决
前一段时间解决的一个问题,看起来是个小问题,实际解决这个问题却花了一个星期的晚上休息时间,记录分享一下。 问题描述: linux内核配置中NLS(native language support)已经选择了默认语言配置为utf8,并包含一些其他常用语言的编码,但是在secureCRT的telnet和串口终端显示中文文件名均为乱码。 解决过程: 1.刚开始以为是简单的编码不匹配的问题,修改secureCRT中的传输编码方式从默认变为utf8,中文不再乱码,但变成了问号,“??????”; 2.因为中文目录是在挂载的SD卡中的(居然没有尝试一下网络挂载或者其他的方式下中文是否乱码,汗),怀疑是挂载SD卡方式不对。网上解答全部
[单片机]
ARM开发大脑芯片 可帮助脑损伤患者恢复活动
  据外媒报道, 芯片 设计巨头 ARM 已与美国研究人员合作开发出了一种大脑 芯片 ,这种 芯片 可以被植入人脑中。下面就随嵌入式小编一起拉来哦啊接一下相关内容吧。   这种芯片的设计目的是为了帮助脑部或脊椎损伤的病人。它可以被植入人的头骨内。   它不仅可以让人们执行各种任务,而且还能够接受感官反馈信息。   但是,我们可能需要等待一些时日才能看到这种芯片的好处。    ARM 公司将为华盛顿大学感觉运动神经工程中心(CSNE)设计的移植物开发芯片。   这些研究人员已开发出了早期的原型机。   “他们已开发出了一些原型机。” ARM 卫生保健科技负责人彼得-弗格森(Peter Ferguson)说,“现在的挑战就是能耗和热量
[嵌入式]
基于ARM单片机的汽车电动助力转向系统的研究
电动助力转向系统(EPS)是汽车工程领域的热门课题之一,目前研究的主要内容为EPS系统的控制规则和硬件控制器(ECU)的设计,而控制规则的实现必须以一个稳定、可靠的控制器为基础。现有的控制器多数基于功能增强的8位单片机,也有的用DSP。目前,以32位处理器作为高性能嵌入式系统开发的核心是嵌入式技术发展的必然趋势。ARM处理器因其具有突出的优点在32位微控制器领域里得到非常广泛的应用,在32位嵌入式系统应用中稳居世界第一。在汽车电子技术领域,从车身控制、底盘控制、发动机管理、主被动安全系统到车载娱乐、信息系统等,都离不开嵌入式技术的支持,因此,ARM处理器在汽车电子领域有着良好的应用前景。本文研究了电动助力转向系统(EPS)及其控制器
[单片机]
基于<font color='red'>ARM</font>单片机的汽车电动助力转向系统的研究
基于ARM和FPGA的智能小车监控系统
0 引言 智能小车是机器人研究领域的一项重要内容。它集机械、电子、检测技术与智能控制于一体。在各种移动机构中,智能小车的轮式移动机构最为常见。轮式移动机构之所以得到广泛的应用,主要是因为容易控制其移动速度和移动方向。智能小车可以适应不同环境,不受温度、湿度等条件的影响,完成危险地段、人类无法介入等特殊情况下的任务。一般的智能小车操作控制复杂、功能单一、不能远程重构。 本文介绍的智能小车可移动视频监控系统,以“飞思卡尔杯”智能小车竞赛提供的车模装置为基础,利用ARM芯片S3C2440A控制图像采集、网络传输、速度采集干扰小的模块,利用FPGA芯片控制电机驱动、舵机控制、电量采集干扰大的模块,当上位机通过Internet访问智
[单片机]
基于<font color='red'>ARM</font>和FPGA的智能小车监控系统
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved