MDK填充FLASH为0xFF
MDK填充FLASH为0xFF
参考
area 指定地址 https://blog.csdn.net/zyboy2000/article/details/6752170?utm_source=blogxgwz1
分散文件 http://www.keil.com/support/docs/3407.htm
汇编伪指令 https://blog.csdn.net/tinylaker/article/details/50673375
使用分散文件
-
Add the following linker switch to Project -> Options for target -> Linker -> Misc Controls:
这里可以用hex形式表示
--pad=VALUE ;0xFF
-
更改加载文件,这个文件一般在输出目录下,后缀名为
sct
,取消默认的勾,启用这个加载文件并更改,添加一行,(END_ADR - START_ADR)
也就是FLASH大小END_OF_BLOCK (END_ADR - START_ADR) FIXED EMPTY 0x0 {}
-
例子如下
; ************************************************************* ; *** Scatter-Loading Description File generated by uVision *** ; ************************************************************* LR_IROM1 0x00000000 0x00020000 { ; load region size_region ER_IROM1 0x00000000 0x00020000 { ; load address = execution address *.o (RESET, +First) *(InRoot$$Sections) .ANY (+RO) } RW_IRAM1 0x20000000 UNINIT 0x00002000 { ; RW data .ANY (+RW +ZI) } END_OF_BLOCK 0x00020000 FIXED EMPTY 0x0 {} ;添加这一行,0x00020000就是FLASH大小 }
使用汇编文件
AREA |.ARM.__at_0x0|, CODE, READONLY
GBLA count ; declare local variable
count SETA 1 ; you are not restricted to
WHILE count <= 0 ; such simple conditions
count SETA count+1 ; In this case,
DCB 0xFF
WEND
51汇编填充
OVL.ASM 文件内容如下:
START_ADDR EQU 22C0H //空 ROM 区的起始地址
CODE_NUM EQU 7488 //所填代码的个数
CSEG AT START_ADDR
REPT CODE_NUM
DB 0A5H
ENDM
END
//指定地址
CSEG AT 0000H
ORG 0000H
51 C填充
-
新建C文件,比如BANK1.C,添加数组定义在CODE区, 比如10个字节的A5
unsigned char code abc[]={0xA5,0xA5,0xA5,0xA5,0xA5,0xA5,0xA5,0xA5,0xA5,0xA5,};
-
在 User Segments 中填入此数组所在的 C 文件定义在所要指定地址的 CODE 区域中,这里写入10个字节的A5至CODE区的BANK2的起始地址为0xEF00的区域)