1、首先打开keil4的Options for Target Target1
2、按照下图进行配置
配置有3种方法:
1、直接添加:fromelf.exe --bin -o "$$L@L.bin" "#L",就不用纠结路径了
2、绝对路径:D:MDK4ARMARMCCinfromelf.exe --bin -o D:MainBoardFLASHMainBoard.bin D:MainBoardFLASHMainBoard.axf,注意其中的空格
3、相对路径:D:MDK4ARMARMCCinfromelf.exe --bin -o .FLASHMainBoard.bin .FLASHMainBoard.axf,注意其中的空格
注意:如果定义了IROM1的起始地址,即IROM1的起始地址不为0x0,则会生成.bin文件夹,而不是.bin文件
具体解决方法为添加bincombined
1)、若IROM1的地址小于0x2fc,以0x200举例
1、直接添加: fromelf.exe --bincombined --bincombined_base=0x200 --output= "$$L@L.bin" "#L"
2、绝对路径:D:MDK4ARMARMCCinfromelf.exe--bincombined --bincombined_base=0x200 --output=D:MainBoardFLASHMainBoard.bin D:MainBoardFLASHMainBoard.axf,注意其中的空格
3、相对路径:D:MDK4ARMARMCCinfromelf.exe--bincombined --bincombined_base=0x200 --output=.FLASHMainBoard.bin .FLASHMainBoard.axf,注意其中的空格
2)、若IROM1的地址大于0x2fc,以0x2000举例
1、直接添加: fromelf.exe --bincombined --bincombined_base=0x0 --bincombined_padding=1,0 --output="$$L@L.bin" "#L"
2、绝对路径:D:MDK4ARMARMCCinfromelf.exe--bincombined --bincombined_base=0x0 --bincombined_padding=1,0 --output=D:MainBoardFLASHMainBoard.bin D:MainBoardFLASHMainBoard.axf,注意其中的空格
3、相对路径:D:MDK4ARMARMCCinfromelf.exe--bincombined --bincombined_base=0x0 --bincombined_padding=1,0 --output=.FLASHMainBoard.bin .FLASHMainBoard.axf,注意其中的空格
在MDK中的Option for Target中的Asm里的Define填上:NO_CRP,是忽略IROM1的起始地址块,使代码从0x0开始