NXP

Cortex-M3 (NXP LPC1788)之看门狗定时器对Flash编程的影响

2019-07-12 14:00发布

        这两天在学习窗口式看门狗模块,之前一直调试的很happy,今天早上突然就进入不了调试模式,而且无法擦除Flash,无法下载程序。郁闷了半天,以为是Keil软件和Ulink出了问题,在另外个电脑上重载,问题依旧。准备用ISP进行尝试,使用FlashMagic软件,进行读取芯片的ID,一直报警autobaud错误,进他提示的网页看下也没有什么有用的信息。         仔细看了数据手册,在Flash存储器章节看到如下信息。引导加载器(boot loader)控制芯片复位后的初始化操作,并提供对Flash存储器进行编程的工具。包括ISP,通过引导加载器软件和UART0串口片上Flash存储器进行编程或在编程。IAP,应用终端用户的应用代码对片上Flash存储器进行编程。         Flash引导加载器代码在芯片每次上电或复位后最先执行。加载器可以执行ISP命令处理器或用户的应用代码。复位之后,P2[10]引脚的低电平可以被视为启动使用UART0管脚的ISP命令处理器的外部硬件请求。假定在复位管脚出现上升沿时,电源管脚出现标称电平,那么在采样P2[10]之前有3ms的时间来决定是执行用户代码还是ISP处理器。如果P2[10]取样得到低电平且看门狗溢出标志置位,那么启动ISP命令处理器的外部硬件请求将被忽略。在没有ISP命令处理器执行的请求时,将搜索有效的用户程序。         根据红 {MOD}标记的那句话可知由于我的看门狗调试程序中,设置了溢出不复位,且溢出后没有清除溢出标志。所以导致系统无法产生执行ISP处理器的硬件请求。也就无法通过ISP对芯片进行操作。         问题的原因已经找到,为了解决这个问题,由于自己的调试看门狗程序有问题(一上电就复位,且没清溢出标志),所以正常情况下通过ISP擦除Flash没法成功。尝试用ULINK的JTAG接口进行擦除,但是也一直报警出错。后来只能使用最笨的办法,在上电的时候按住复位按键,然后反复上电,反复使用FlashMagic进行擦除尝试,终于擦除成功。 擦除以后使用ULINK进行下载程序,可以连接正常。         终于可以重新正常使用开发板,继续调试WDT模块,有点揪心,接下去调试得仔细点了。