LPCXpresso1549试用报告——
(5)Usercode的Signature生成
| |
| LPCXpresso1549, LPC1549, Keil MDK, Usercode Valid, Signature,ELFDWT |
| 本文记述了LPC15xx系列芯片的启动过程验证Usercode的Signature的方式,并介绍了在Keil中使用ELFDWT程序生成Signature的方法。同时列举了使用与不使用Signature对启动造成的影响。 |
Mar4zhu
目 录
插图索引
表格索引
错误!未找到目录项。
1 概述LPC15xx系列芯片的启动过程涉及到ISP引脚状态、Flash和ROM/RAM的0x00地址映射,用户程序代码Usercode的有效性检验等。Boot ROM对用户程序代码Usercode进行校验,确保了用户程序的有效性。防止代码被破坏或者乱码造成芯片的误动作
图 11 LPC5xx的启动顺序
其中用户代码的有效性检验对开发影响较大。Keil软件开发有专用的一个工具软件生成检验的Signature。
2 Usercode有效性检验原理用户代码的有效性检验,是采用Flash区域的特定的地址(保留的中断向量表,0x0000001C)存放一个校验码,称之为Sinature,使得前面8个向量表存储的数据校验和为零,如果在flash的0x0000001C的这个signature校验和不为零, ROM就会认为usercode是无效的(invalide),则将MCU设置为USB-MSC设备,等待上位机对其进行DFU,以下是UserManual的说明。
图 21 LPC5xx的用户代码有效性检验。
3 Keil生成SignatureKeil提供了一个专门的小工具软件ElfDwt.exe,可用来专门生成NXP芯片所需的Signature并保存在编程文件对应的位置。
图 31 ElfDwT程序的设置
设置之后,可以再编译器输出栏看到改程序的运行效果。
图 32 ElfDwT程序的输出信息
则对应的编程文件可以看到该Signature。如果运行该程序,则对应的编程文件没有Signature。
图 33 使用与不使用ElfDwT程序的区别
以下是ElfDwt的文档说明。
图 34 ElfDwT程序的文档说明
4 调试区别调试过程中,如果没有生成Signature,那么在点击Keil的Reset,复位芯片时,则R15(PC)复位后的地址在ROM区(0x0300????),进入ROM的后续程序
而如果存在Signature,则点击Reset后,MCU的复位地址R15(PC)为Flash区,也即(0x0000????)。这跟Usermanual的启动流程相符
5 总结NXP的LPC15xx芯片设置了用户代码的有效性校验,提高了芯片工作稳定性。而Keil开发工具提供的软件可以方便的生成Signature。提高开发便利性。
版本历史(Revision History)