打印
[技术问答]

NUC972莫名死机

[复制链接]
10948|23
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
mojingjian|  楼主 | 2021-9-21 10:32 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
基于rt-thread的工程,应用程序是之前在STM32F429上正常运行的移植到NUC972上后出现莫名的死机问题。
工程的主要功能用到 lcd、文件系统(uffs)、uart(omrom、modbus协议通信)等。
在程序正常跑一段时间后会莫名死机,lcd的显示画面会变色和发生偏移,控制台没有异常和寄存器打印信息,通过仿真的方式可以知道程序最终跑到了data abort异常,问题是在出现上述现象时不是马上进入异常,还跑了10多秒才发生的异常,像是程序重新在0地址开始往下跑了,最终在不会运行到的地方发生异常,仿真看到的 lr 寄存器地址记得好像是0x26c吧。
这个情况无法定位到真正的错误代码,之前也没有遇到过这种情况,麻烦大家给分析下,谢谢!!!

使用特权

评论回复
沙发
小明的同学| | 2021-9-21 23:32 | 只看该作者
两个芯片不是太一样,可能哪儿没匹配对。

使用特权

评论回复
板凳
mojingjian|  楼主 | 2021-9-22 08:04 | 只看该作者
小明的同学 发表于 2021-9-21 23:32
两个芯片不是太一样,可能哪儿没匹配对。

确实挺大不同的,搞挺久了不知从哪找问题

使用特权

评论回复
地板
twjiang| | 2021-9-22 08:43 | 只看该作者
查下是不是文件系统 crash了?不要频繁写文件

使用特权

评论回复
5
mojingjian|  楼主 | 2021-9-22 09:17 | 只看该作者
twjiang 发表于 2021-9-22 08:43
查下是不是文件系统 crash了?不要频繁写文件

有这个可能,我调整下程序。
我在使用ymodem传输时也挺经常死机的(stm32f429不会),有可能也会是这个问题吗

使用特权

评论回复
6
mojingjian|  楼主 | 2021-9-22 09:47 | 只看该作者
请问怎么能确定是文件系统crash了,没找到相关说明不清楚怎么查,我用的是uffs

使用特权

评论回复
7
twjiang| | 2021-9-22 10:39 | 只看该作者
将代码里所有写文件的动作禁用掉,然后测试一段时间

使用特权

评论回复
8
m564522634| | 2021-9-22 13:55 | 只看该作者
小明的同学 发表于 2021-9-21 23:32
两个芯片不是太一样,可能哪儿没匹配对。

data abort 的时候就是告诉你单片机数据总线出错了, 你把除系统以外的所有功能都禁止掉了,然后一个功能一个功能检察就可以了,这种情况基本上是内存被 写穿出现的

使用特权

评论回复
9
mojingjian|  楼主 | 2021-9-22 21:39 | 只看该作者
m564522634 发表于 2021-9-22 13:55
data abort 的时候就是告诉你单片机数据总线出错了, 你把除系统以外的所有功能都禁止掉了,然后一个功能 ...

试过将大部分的功能禁用然后用ymodem传输文件传输,偶尔可以成功,失败时死机的一个情况是一样的都无法正确定位。逐个功能检查对于我的难点是部分功能写的不好有耦合的情况,另一个是data abort异常是在程序出错后仍跑了10多秒后才触发的,不确定程序错误是否就是data abort,这个方法可能会在其他方法尝试后再考虑吧。

使用特权

评论回复
10
mojingjian|  楼主 | 2021-9-22 21:42 | 只看该作者
今天调试usb时还出现了pabt异常,然后跳去打印线程信息时又触发了dabt异常,一直重复的触发异常,真的很头疼

使用特权

评论回复
11
mojingjian|  楼主 | 2021-9-23 09:13 | 只看该作者
twjiang 发表于 2021-9-22 10:39
将代码里所有写文件的动作禁用掉,然后测试一段时间

昨天跑一下午没事,今天早上没有半个小时就死机了,不是文件系统的问题

使用特权

评论回复
12
twjiang| | 2021-9-23 15:06 | 只看该作者
mojingjian 发表于 2021-9-23 09:13
昨天跑一下午没事,今天早上没有半个小时就死机了,不是文件系统的问题 ...

【N9H30】RT-Thread重大更新
https://bbs.21ic.com/icview-3165542-1-1.html

你所使用的 RT-Thread是不是基于上述工程来的?如果是,请参考手动打补丁。

使用特权

评论回复
评论
twjiang 2021-9-24 12:36 回复TA
@mojingjian :请查看本贴的最新答复。 
twjiang 2021-9-24 08:35 回复TA
@mojingjian :是的,参考 RT-Thread for NUC980手动打补丁。 
mojingjian 2021-9-23 21:22 回复TA
买开发板带的工程,应该是挺早时候的,若我要更新现在的工程是否参考rt-thread nuc980来会更好些? 
13
twjiang| | 2021-9-24 12:11 | 只看该作者
Hi mojingjian,

经Nuvoton官方确认, RT-Thread for NUC972的补丁 应参考 【N9H30】RT-Thread重大更新
https://bbs.21ic.com/icview-3165542-1-1.html

NUC980 与 NUC972(N9H30)在IRQ Dispatch方面有区别。

使用特权

评论回复
14
mojingjian|  楼主 | 2021-9-24 23:24 | 只看该作者
帮忙查看下代码,屏蔽掉cache情况似乎有点改善,不过我对mmu和cache并不了解,不清楚其配置和使用。

static struct mem_desc hw_mem_desc[] =
{
        { 0x00000000, 0xFFFFFFFF,     0x00000000, RW_NCNB },     /* None cached for 4G memory */
        { 0x00000000, 0x04000000-1,   0x00000000, RW_CB   },     /* 64M cached DDR memory */
        { 0x80000000, 0x84000000-1,   0x80000000, RW_CNB },      /* Shadow DDR Map */
        { 0x3C000000, 0x3C00E000-1,   0x3C000000, RW_NCNB },     /* 56K SRAM memory */
        { 0xBC000000, 0xBC00E000-1,   0xBC000000, RW_NCNB }      /* 56K Shadow memory */
};

void rt_hw_board_init(void)
{
        /* initialize mmu */
        rt_hw_mmu_init(&hw_mem_desc[0], sizeof(hw_mem_desc) / sizeof(hw_mem_desc[0]));
        //rt_hw_cpu_dcache_enable();
        //rt_hw_cpu_icache_enable();
       
        /* Enable GPIO Clock */
        outpw(REG_CLK_HCLKEN, 0x0527);
        outpw(REG_CLK_PCLKEN0, inpw(REG_CLK_PCLKEN0) | (1<<3));    //Enable GPIO engin clock.
       
        /* initialize hardware interrupt */
        rt_hw_interrupt_init();
        /* initialize uart */
        rt_hw_uart_init();
        /* initialize timer0 */
        rt_hw_timer0_init();
       
        rt_console_set_device(RT_CONSOLE_DEVICE_NAME);
       
#ifdef RT_USING_HEAP
        /* init memory system */
        rt_system_heap_init(BOARD_HEAP_START, BOARD_HEAP_END);
#endif

        /* Board underlying hardware initialization */
#ifdef RT_USING_COMPONENTS_INIT
    rt_components_board_init();
#endif
}

使用特权

评论回复
15
mojingjian|  楼主 | 2021-9-26 11:33 | 只看该作者
我使用N9H30的几个文件(drv_common.c, drv_sys.c, drv_systick)修改后暂时都没出现之前死机的问题,应该是解决了

使用特权

评论回复
16
xiaoqizi| | 2021-10-14 16:43 | 只看该作者
死机的时间固定吗

使用特权

评论回复
17
木木guainv| | 2021-10-14 16:45 | 只看该作者
能找到死机的具体位置吗

使用特权

评论回复
18
tpgf| | 2021-10-14 16:48 | 只看该作者
就肯定是有原因的

使用特权

评论回复
19
heimaojingzhang| | 2021-10-14 16:50 | 只看该作者
这样修改是有效果的

使用特权

评论回复
20
keaibukelian| | 2021-10-14 16:52 | 只看该作者
估计是程序的问题

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

13

主题

63

帖子

1

粉丝