MDK填充FLASH为0xFF

时间:2023-03-09 23:42:48
MDK填充FLASH为0xFF

title: MDK填充FLASH为0xFF

date: 2019/1/3 20:34:05

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

使用分散文件

  1. Add the following linker switch to Project -> Options for target -> Linker -> Misc Controls:

    这里可以用hex形式表示

    --pad=VALUE   ;0xFF
  2. 更改加载文件,这个文件一般在输出目录下,后缀名为sct,取消默认的勾,启用这个加载文件并更改,添加一行,(END_ADR - START_ADR) 也就是FLASH大小

    END_OF_BLOCK (END_ADR - START_ADR) FIXED EMPTY 0x0 {}
  3. 例子如下

    ; *************************************************************
    ; *** 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填充

  1. 新建C文件,比如BANK1.C,添加数组定义在CODE区, 比如10个字节的A5

    unsigned char code abc[]={0xA5,0xA5,0xA5,0xA5,0xA5,0xA5,0xA5,0xA5,0xA5,0xA5,};
  2. 在 User Segments 中填入此数组所在的 C 文件定义在所要指定地址的 CODE 区域中,这里写入10个字节的A5CODE区的BANK2的起始地址为0xEF00的区域)

    MDK填充FLASH为0xFF