我一直在开发一个固件,该固件在lpc1788上移植了一个沉重的 GUI 库。我使用 32 MB SDRAM 处理字体和图像,使用 NAND 闪存存储字体和 bmp 的二进制文件以及设备配置数据。
我已禁用使用故障、MemManage 故障和总线故障。因此,有时当任何 GUI 功能出现问题时,执行会进入硬故障。现在,我用于 GUI 的库是emWin而且我无法知道是什么功能导致了硬故障。如果 NAND 闪存损坏并且库尝试获取要显示的任何内容,例如背景图像,那么它就会出现硬故障。我可以处理这种情况,因为我确定(通过一些带有标志的代码实现)我的 NAND 闪存已损坏,我需要将二进制文件重新编程到其中,因为如果我不这样做,每当设备启动时起来,它会进入硬故障。
但是,如果某些其他例程导致硬故障,那么我实际上不应该再次重新编程整个闪存。因此,如果我知道导致硬故障的原因,我将能够相应地修改处理程序,以决定是否需要重新编程或简单地修改一些参数并继续最后知道的配置。
有没有办法确定是什么函数导致了运行时硬故障?即使是地址也足够了。这可以做到吗?