手机开发实战183——Scatter file介绍4

理解ARM Scatter文件:配置加载与执行区域
Scatter文件是ARM工具链中的关键组件,用于定义程序映像的分布。它包含加载区域和执行区域的详细配置,如区域名称、起始地址、属性和大小。Scatter文件支持模块选择和输入段属性,方便灵活地组织代码和数据。通过Pragma指令,开发者可以指定代码和数据在内存中的位置,以优化执行效率。

Scatterloading 文件是ARM 的工具链里面的一个特性,作为程序编译过程中

给连接器使用的一个参数,用来指定最终生成的目标映像文件运行时的分布状态。

 

ADS下的分散加载文件应用实例

load_region_name  start_address | "+"offset  [attributes] [max_size]
{
    execution_region_name  start_address | "+"offset  [attributes][max_size]
    {
        module_select_pattern  ["("
                                    ("+" input_section_attr | input_section_pattern)
                                    ([","] "+" input_section_attr | "," input_section_pattern)) *
                               ")"]
    }
}

load_region       加载区,用来保存永久性数据(程序和只读变量)的区域;
execution_region
 执行区,程序执行时,从加载区域将数据复制到相应执行区后才能被正确执行;
load_region_name
 加载区域名,用于“Linker”区别不同的加载区域,最多31个字符;
start_address
     起始地址,指示区域的首地址;
+offset
           前一个加载区域尾地址+offset 做为当前的起始地址,且“offset”应为“0”“4”的倍数;
attributes
        区域属性,可设置如下属性:
                    PI       
与地址无关方式存放;
                    RELOC    
重新部署,保留定位信息,以便重新定位该段到新的执行区;
                    OVERLAY  
覆盖,允许多个可执行区域在同一个地址,ADS不支持;
                    ABSOLUTE 
绝对地址(默认);
max_size
          该区域的大小;

execution_region_name:执行区域名;
start_address
     该执行区的首地址,必须字对齐;
+offset
           同上;
attributes
        同上;
                    PI          
与地址无关,该区域的代码可任意移动后执行;
                    OVERLAY     
覆盖;
                    ABSOLUTE    
绝对地址(默认);
                    FIXED       
固定地址;
                    UNINIT      
不用初始化该区域的ZI段;
module_select_pattern
:目标文件滤波器,支持通配符“*”“?”
                        *.o
匹配所有目标,(或“.ANY”)匹配所有目标文件和库。
input_section_attr
    每个input_section_attr必须跟随在后;且大小写不敏感;
                        RO-CODE 
 CODE
                        RO-DATA 
 CONST
                        RO
TEXT, selects both RO-CODE and RO-DATA
                        RW-DATA
                        RW-CODE
                        RW 
 DATA, selects both RW-CODE and RW-DATA
                        ZI 
 BSS
                        ENTRY, that is a section containing an ENTRY point.
                        FIRST
,用于指定存放在一个执行区域的第一个或最后一个区域;
                        LAST
,同上;

程序代码可以分成三部分:

RO是程序中的指令和常量就是readonly

RW是程序中的已初始化变量就是read/write

ZI是程序中的未初始化的变量就是zero

 


input_section_pattern:段名;

汇编中指定段:
     AREA    vectors, CODE, READONLY
C
中指定段:
#pragma arm section [sort_type[[=]"name"]] [,sort_type="name"]*
sort_type:      code
rwdatarodatazidata
                
如果“sort_type”指定了但没有指定“name”,那么之前的修改的段名将被恢复成默认值。
#pragma arm section     // 
恢复所有段名为默认设置。
应用:
    #pragma arm section rwdata = "SRAM",zidata = "SRAM"
        static OS_STK  SecondTaskStk[256];              // “rwdata”“zidata”
将定位在“sram”段中。
    #pragma arm section                                 // 
恢复默认设置

 

可以将代码放在CPU自带的RAM中,以加快运行速度,如以下指令:

#pragma arm section code = "INTERNCODE"

#pragma arm section rwdata = "INTERNRW" , rodata = "INTERNCONST" , zidata = "INTERNZI"

## 软件功能详细介绍 1. **文本片段管理**:可以添加、编辑、删除常用文本片段,方便快速调用 2. **分组管理**:支持创建多个分组,不同类型的文本片段可以分类存储 3. **热键绑定**:为每个文本片段绑定自定义热键,实现一键粘贴 4. **窗口置顶**:支持窗口置顶功能,方便在其他应用程序上直接使用 5. **自动隐藏**:可以设置自动隐藏,减少桌面占用空间 6. **数据持久化**:所有配置和文本片段会自动保存,下次启动时自动加载 ## 软件使用技巧说明 1. **快速添加文本**:在文本输入框中输入内容后,点击"添加内容"按钮即可快速添加 2. **批量管理**:可以同时编辑多个文本片段,提高管理效率 3. **热键冲突处理**:如果设置的热键与系统或其他软件冲突,会自动提示 4. **分组切换**:使用分组按钮可以快速切换不同类别的文本片段 5. **文本格式化**:支持在文本片段中使用换行符和制表符等格式 ## 软件操作方法指南 1. **启动软件**:双击"大飞哥软件自习室——快捷粘贴工具.exe"文件即可启动 2. **添加文本片段**: - 在主界面的文本输入框中输入要保存的内容 - 点击"添加内容"按钮 - 在弹出的对话框中设置热键和分组 - 点击"确定"保存 3. **使用热键粘贴**: - 确保软件处于运行状态 - 在需要粘贴的位置按下设置的热键 - 文本片段会自动粘贴到当前位置 4. **编辑文本片段**: - 选中要编辑的文本片段 - 点击"编辑"按钮 - 修改内容或热键设置 - 点击"确定"保存修改 5. **删除文本片段**: - 选中要删除的文本片段 - 点击"删除"按钮 - 在确认对话框中点击"确定"即可删除
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值