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