原创 KEIL MDK生成 bin 文件 for nxp MCU

2011-11-1 10:50 6476 14 16 分类: MCU/ 嵌入式

说明:本文的实践是基于lpc1343;

要想在keil中直接生成bin文件一般需要加用户命令调用fromelf工具:

如下图在Options for Target 中 加上编译后的命令;

fromelf --bin ".\obj\@L.axf" --output ".\obj\@L.bin"

这样build or rebuild之后就会生成 bin 文件了;

 

在NXP CM0 CM3上应用存在的问题:

这样生成的bin文件却不能通过nxp的代码有效性检测;

原因如下:

在nxp CM0 或CM3 的UM 中有对有效用户代码的判断标准作出说明:

有效用户代码判定标准

保留的 Cortex-M3 微控制器异常向量单元 7(在向量表中的偏移量为 0x0000 001C)应当包含表入口 0~6 的校验和的 2 的补码。这样就使前 8 个表入口的校验和为0。引导装载程序代码校验 Flash 扇区 0 中的前8 个单元。如果结果为 0,执行控制权便转移给用户代码。 如果符号无效,那么自动波特率程序通过串口(UART)与主机进行同步,或从 USB 端口启动(PIO0_3 管脚的采样为高电平)。

查看用keil直接生成的bin文件(推荐用ULtraEdit查看),发现其地址0x1c处并不是对前面6个向量的校验和的2的补码;

用lpc1343的usb isp(u 盘方式)把bin文件烧入进去,复位启动后,其bootloader会对其有效性进行检查,此时发现其代码无效而不会允许已经更新的用户程序;如果条件允许则会自动usb端启动或者通过uart与主机通信;

但是用Flashmagic等工具下载的代码则不会出现该问题,因为FlashMagic软件会自动计算0x1C处开始的四字节的内容,修改后写入。
 

解决方法

MDK410已经解决了这个问题。描述如下:
 

[Checksum Utility]
Added: ELFDWT utility creates boot checksum for NXP LPC11xx, LPC13xx, and LPC17xx device series. Usage is:
C:/Keil/ARM/BIN/ELFDWT elf_file.AXF

利用ElfDwT.exe先把axf格式的进行修正,让后再把axf 转换成bin
使用方法如下
keil-project-options for target-user-run user programs after build -  run #2

RUN#1: $K\ARM\BIN\ELFDWT.EXE #L

RUN#2: fromelf --bin ".\obj\@L.axf" --output ".\obj\@L.bin"

如下图:

这样问题就得到了解决;直接把生成的bin文件拷贝的lpc1343的u盘中,程序就得以了更新;

 

文章评论2条评论)

登录后参与讨论

用户377235 2014-4-16 17:01

这样能解决吗,我没有成功啊

用户377235 2013-5-29 17:21

哥们,你是我的救星啊,牛人啊,是咋发现的啊,我定位好几天了,若不是发现你的文章,我真是无法解决啊。我从flash中提取代码和hex对比,果然被修改了,多谢了
相关推荐阅读
用户161601 2013-06-06 11:27
AT91LINUX编译试验 SAMA5DX cortex A5
atmel官方网站www.at91.com中对基于DTB的linux内核编译流程如下:   本文档为本人在ubuntu 10.04下实验流程,红色文字为本人添加的记录; by Jevon...
用户161601 2013-04-21 10:54
ubuntu10.04 vm6.5 hgfs 共享实现
以前用的VMWARE6.5+FC12安装好VM TOOL后 就可以在/mnt/hgfs 访问window中的共享文件夹了; 如今把FC12抛弃了,改装了ubuntu10.04但发现hgfs目录...
用户161601 2012-11-29 09:46
芯片制造工艺流程(转)
  芯片制造工艺流程   芯片制作完整过程包括 芯片设计、晶片制作、封装制作、成本测试等几个环节,其中晶片片制作过程尤为...
用户161601 2011-12-13 14:28
摄像头的组成以及红外摄像头
摄像头的工作原理大致为:景物通过镜头(LENS)生成的光学图像投射到图像传感器表面上,然后转为电信号,经过A/D(模数转换)转换后变为数字图像信号,再送到数字信号处理芯片(DSP)中加工处理,再通...
用户161601 2011-10-09 11:52
基于新唐DMX512帧头的判断
DMX 512协议是Digital Multiplex的缩写,是灯光行业数字化设备的通用信号控制协议,同时也是是一种国际协议;由美国剧场技术协会(United State Institute for...
我要评论
2
14
关闭 站长推荐上一条 /2 下一条