在MDK中开拓LPC800器件LPC8N04时,碰着问题。
编译后,十六进制文件并不能正常实行,确认开拓板之前是能够正常实行的,板上指示灯能够正常闪烁。问题该当出在重新编译天生的 HEX文件上。在NXP官网下载了最新的SDK包,如下链接所示。

问题剖析和解决方案:
可能不包含有效运用程序代码的验证码,这可能导致芯片运用程序代码无法实行。
有效运用程序码用于判断运用程序代码是否有效。保留的CPU非常向量位置7(向量表中的偏移量0x0000 001C)应包含表项0到6的校验和的2的补码。
它使前8个表项的校验和为0。在启动期间,勾引加载程序代码打算闪存扇区0中前8个位置的校验和。
如果校验和不为零;会提示找不到有效的用户代码,勾引加载程序自动进入USART ISP模式,同时不从地址0x0实行代码。
如果利用 IAR开拓环境开拓 LPC800器件,编译完成后,HEX文件中会自动加入有效用户代码验证码。
在利用MDK时,编译后,有效运用程序验证码不会自动添加到HEX文件中,须要手工添加。
下面的方法先容了在MDK 环境下,如何在编译过程中将有效用户代码的验证码自动添加到HEX文件中。在MDK 环境下,将用户代码校验码加入的方法如下。
在MDK环境下添加如下命令:
$K\ARM\BIN\ELFDWT.EXE !L BASEADDRESS(0x00000000)
当得到用户运用程序验证码后,这里是0xEFFFD559,将其添加到文件 startup_LPC8N04.s 中,在向量表的偏置位置 0x0000 001C 添加就可以。
比较了一下Segger里面HEX文件,确实已经将验证码加入到烧录文件中,如下所示,上面是加入了的效果,下面的部分是没有加入的效果。
参考文献:
1. https://www.nxp.com.cn/docs/en/application-note/AN12533.pdf
2. https://www.nxp.com.cn/docs/en/errata/ES_LPC804.pdf







