首页 > 其他分享 >CH58x芯片Hardfault问题排查

CH58x芯片Hardfault问题排查

时间:2024-04-26 14:00:59浏览次数:42  
标签:__ Hardfault 芯片 safe mtval sys MemHead CH58x printf

前言:

针对RISC-V芯片进入HardFault_Handler函数的问题排查提供讲解。

一、HardFault函数添加PC指针打印

在公共文件的sys.c函数中找到函数并修改如下:

__INTERRUPT
__HIGH_CODE
__attribute__((weak))
void HardFault_Handler(void)
{
    uint32_t v_mepc,v_mcause,v_mtval;
    printf("hardfault\n");

    v_mepc=__get_MEPC();
    v_mcause=__get_MCAUSE();
    v_mtval=__get_MTVAL();

    printf("mepc:%08x\n",v_mepc);
    printf("mcause:%08x\n",v_mcause);
    printf("mtval:%08x\n",v_mtval);

#if 0
    FLASH_ROM_SW_RESET();
    sys_safe_access_enable();
    R16_INT32K_TUNE = 0xFFFF;
	sys_safe_access_disable();
    sys_safe_access_enable();
    R8_RST_WDOG_CTRL |= RB_SOFTWARE_RESET;
    sys_safe_access_disable();
#endif
    while(1);
}

二、使用蓝牙工程时可以进一步添加监控函数

__INTERRUPT
__HIGH_CODE
__attribute__((weak))
void HardFault_Handler(void)
{
    struct __MEMORY_CTL
    {
      struct __MEMORY_CTL *  pNext;
      uint16_t len;
      uint16_t used;
    };
    typedef struct __MEMORY_CTL    MemoryCtl;

    extern  MemoryCtl * MemCtlStart;
    extern  MemoryCtl * MemCtlEnd;
    MemoryCtl * MemHead;
    MemHead = MemCtlStart;
    while( MemHead != MemCtlEnd  ){
      printf("|%8x,%8x,%8d.....\n",MemHead->used,(uint32_t)MemHead,\
              (uint32_t)(MemHead->pNext) -(uint32_t)MemHead - sizeof(struct __MEMORY_CTL));
      MemHead = MemHead->pNext;
    }printf("\n");

    uint32_t v_mepc,v_mcause,v_mtval;
    printf("hardfault\n");

    v_mepc=__get_MEPC();
    v_mcause=__get_MCAUSE();
    v_mtval=__get_MTVAL();

    printf("mepc:%08x\n",v_mepc);
    printf("mcause:%08x\n",v_mcause);
    printf("mtval:%08x\n",v_mtval);

#if 0
    FLASH_ROM_SW_RESET();
    sys_safe_access_enable();
    R16_INT32K_TUNE = 0xFFFF;
	sys_safe_access_disable();
    sys_safe_access_enable();
    R8_RST_WDOG_CTRL |= RB_SOFTWARE_RESET;
    sys_safe_access_disable();
#endif
    while(1);
}

注意:监控函数和PC指针可以同时使用。监控函数需要在蓝牙工程中使用才有意义,如果打印值为空,检查是否使用蓝牙。

附录:

PC指针打印信息排查可以参考青稞V4手册:QingKeV4_Processor_Manual.PDF - 南京沁恒微电子股份有限公司 (wch.cn)

 

标签:__,Hardfault,芯片,safe,mtval,sys,MemHead,CH58x,printf
From: https://www.cnblogs.com/gscw/p/18159920

相关文章

  • 超低功耗三通道低频无线唤醒 ASK 接收芯片DP20RF003
    DP20RF003是一款三通道、超低功耗的ASK接收芯片,可检测30~300KHz范围的LF(低频)载波频率数据并触发唤醒信号,唤醒之后MCU可通过IO实时采集后续接收到的数据,也可以通过SPI或I2C直接从寄存器读取(最多保存8字节数据)。三个独立通道可以配置成不同的唤醒模式,每个通道都具......
  • 没有对应芯片手册,不知道哪些IO口可以控,测试demo
     //sdk\apps\earphone\include\app_config.h//////////↓↓↓↓↓↓↓↓↓↓codesnippetfromxwh↓↓↓↓↓↓↓↓↓↓////////////////////#defineLED0_IOIO_PORTA_01#defineLED0_ONOFF(x)do{gpio_set_pull_down(LED0_IO,0);\gpio_set......
  • 超省电/低功耗LCD液晶断码驱动芯片VKL144C/D 适用于温控器,传感器,压力表 可驱动36SEGx4
    VKL144C/D概述:VKL144C/D是一个点阵式存储映射的LCD驱动器,可支持最大144点(36SEGx4COM)的LCD屏。单片机可通过I2C接口配置显示参数和读写显示数据,可配置4种功耗模式,也可通过关显示和关振荡器进入省电模式。其高抗干扰,低功耗的特性适用于水电气表以及工控仪表类产品。特点•工......
  • 摆脱MT9700瞬间尖峰损坏之困,升级版芯片助您安心充电
    MT9700由电路简单和价格优廉的特点,取得了很多客户的喜欢,广泛应用于控制板,USB限流,充电线,短路保护等等。MT9700是一款低压单PMOSFET负载开关,专为自供电和总线供电的通用串行总线(USB)应用而优化。该开关的输入范围为2.4V至5.5V,非常适合3V和5V系统。开关RDS(ON)低,80mΩ,满......
  • 汽车诊断仪算法保护芯片——LKT4305-GM
    各类车载设备在车辆上的广泛应用,为分析道路交通事故原因和真相、界定道路交通事故性质和厘清事故责任提供基础数据,汽车诊断仪内的数据安全通过特定功能的安全芯片来建立,这里推荐款芯片——LKT4305-GM。LKT4305-GM是以32位安全处理器为基础的具有高性能高安全性的加密产品。芯片满......
  • AP2915 是一款可以一路灯串切换两路灯串的降压恒流驱动器,高效率、外围简单、内置功率
    产品概述:AP8852是一款内部集成有功率MOSFET管的降压型开关稳压器。以电流模式控制方式达到快速环路响应并提高环路的稳定性。宽范围输入电压(4.5V至60V)提供0.5A电流的高效率输出,可在移动环境输入的条件下实现各种降压型电源变换的应用。0.1uA的关机静态电流适合电池供电场合的应......
  • AP5103 是一款效率高,稳定可靠的 LED 灯恒流驱动控制芯片
    产品描述AP5103是一款效率高,稳定可靠的LED灯恒流驱动控制芯片,内置高精度比较器,固定关断时间控制电路,恒流驱动电路等,特别适合大功率LED恒流驱动。AP5103采用ESOP8封装,散热片内置接SW脚,通过调节外置电流检测的电阻值来设置流过LED灯的电流,支持外加电压线性调光,最大电......
  • Vinka超低功耗抗干扰LCD液晶段码屏驱动芯片 推出新封装:VKL144C/D LQFP48/SSOP48
    VKL144C/D概述:VKL144C/D是一个点阵式存储映射的LCD驱动器,可支持最大144点(36SEGx4COM)的LCD屏。单片机可通过I2C接口配置显示参数和读写显示数据,可配置4种功耗模式,也可通过关显示和关振荡器进入省电模式。其高抗干扰,低功耗的特性适用于水电气表以及工控仪表类产品。特点•工......
  • LED车灯驱动DC-DC降压恒流芯片AP5174高效率线性调光IC摩托车电动车手电筒
    产品描述AP5174是一款效率高,稳定可靠的LED灯恒流驱动控制芯片,内置高精度比较器,固定关断时间控制电路,恒流驱动电路等,特别适合大功率LED恒流驱动。AP5174采用ESOP8封装,散热片内置接SW脚,通过调节外置电流检测的电阻值来设置流过LED灯的电流,支持外加电压线性调光,最大电......
  • LED车灯IC降压恒流驱动AP5103大功率95%高效率深度调光摩托车灯芯片
    产品描述AP5103是一款效率高,稳定可靠的LED灯恒流驱动控制芯片,内置高精度比较器,固定关断时间控制电路,恒流驱动电路等,特别适合大功率LED恒流驱动。AP5103采用ESOP8封装,散热片内置接SW脚,通过调节外置电流检测的电阻值来设置流过LED灯的电流,支持外加电压线性调光,最大电......