mdk scatter
时间: 2023-10-06 11:13:42 浏览: 34
mdk scatter是Keil MDK工具中用于描述image在内存映射中划分的一种加载机制。它由regions和output sections组成。regions定义了加载区域的起始地址和大小,而output sections定义了在这些区域中存放的代码和数据。
scatter加载适用于复杂的内存映射,例如不同类型的存储设备(如RAM、ROM、SRAM、外设)的划分。它还可以用于将固定函数放置在指定的位置,并使用符号来标识堆和栈。
在使用scatter文件时,需要注意以下几点:
- 如果没有为堆和栈指定特定的区域,或者没有重新实现__user_setup_stackheap()函数,将会产生错误信息。
- scatter文件中可以指定堆和栈的区域。
相关问题
mdk 0xff填充
MDK中的0xFF填充通常用于将未使用的Flash空间填充为0xFF。这是因为Flash中的每个字节都需要初始化为某个值,否则可能会导致在程序执行期间出现不可预测的行为。而0xFF是Flash中的默认值,因此将未使用的Flash空间填充为0xFF可以确保Flash中所有未使用的字节都被初始化为默认值。在MDK中,可以使用以下命令将未使用的Flash空间填充为0xFF:
```
- 通过在scatter文件中指定未使用的Flash区域,并将其标记为EMPTY;
- 在Options for Target -> Utilities -> Run User Programs中选择Fill, 然后在Arguments中指定填充值为0xFF。
```
MDK工具的scat文件语法规则
在MDK中,scatter文件用于描述程序代码和数据的存储方式和位置。以下是MDK工具中scatter文件的基本语法规则:
1. scatter文件以花括号({})包含整个文件内容。
2. scatter文件中包含多个load region,每个load region由load region name、load region start address、load region length以及花括号包含的execution region组成。其中,load region name是可选的,如果省略,则默认为LR_开头的十六进制数。
3. execution region由execution region name、execution region start address、execution region length以及花括号包含的区域内容组成。其中,execution region name是可选的,如果省略,则默认为ER_开头的十六进制数。
4. 区域内容由一系列输入文件(input section)组成,每个输入文件由input section name、input file name以及花括号包含的section内容组成。
5. section内容由一系列输出文件(output section)组成,每个输出文件由output section name、output section start address、output section length以及可选的属性组成。
6. 属性包括:
- ALIGN:指定输出section的对齐方式。
- LOADONLY:指定该section是否需要被加载到目标设备中。
- READONLY:指定该section是否为只读。
- RUNONLY:指定该section是否在程序运行期间执行。
- ROOT:指定该section为根section。
7. 在scatter文件中,可以使用通配符(*)来匹配多个文件或section,也可以使用加号(+)来表示连接多个section。
8. scatter文件中还可以定义symbol、symbol value、region alias等。
在实际编写scatter文件时,需要根据具体情况定义load region、execution region、input section和output section,并根据需要定义属性和symbol等。需要注意的是,scatter文件的语法规则较为严格,需要仔细检查语法错误。