电子产业一站式赋能平台

PCB联盟网

搜索
查看: 1225|回复: 0
收起左侧

【HarmonyOS_Hi3861学习笔记】【连载】--调试AHT20中遇到的问题以及定位并解决的方法

[复制链接]

2607

主题

2607

帖子

7472

积分

高级会员

Rank: 5Rank: 5

积分
7472
发表于 2021-1-9 11:56:30 | 显示全部楼层 |阅读模式
【HarmonyOS_Hi3861学习笔记】【连载】--调试AHT20中遇到的问题以及定位并解决的方法, 根据例程和参考网上的aht20驱动进行移植。编译阶段就有错误,一步步解决掉了。但是编译成功后下到板子上就抓虾了。cpu一直在重启。串口打印了很多异常信息。



  • [22:36:28.531]收←◆AHT20 Init Success
      

  •   
  • [22:36:28.612]收←◆=======KERNEL PANIC=======
      

  •   
  • **********syserr info start**********
      
  • kernel_ver      : Hi3861V100 R001C00SPC025,2020-09-03 18:10:00
      
  • **********Exception Information**********
      
  • PC Task Name    : AHT20Tas        
      
  • PC Task ID      = 9
      
  • Cur Task ID     = 9
      
  • Task Stack Size = 0x400
      
  • Exception Type  = 0x7
      
  • **********reg info**********
      
  • mepc         = 0x4a1580
      
  • mstatus      = 0x1880
      
  • mtval        = 0x4
      
  • mcause       = 0x7
      
  • ccause       = 0x7
      
  • ra           = 0x4a1562
      
  • sp           = 0xfa5a0
      
  • gp           = 0x11a9c0
      
  • tp           = 0x83d9000b
      
  • t0           = 0x8
      
  • t1           = 0xffffffe0
      
  • t2           = 0x88
      
  • s0           = 0xe41c8
      
  • s1           = 0xf4240
      
  • a0           = 0x0
      
  • a1           = 0xfa619
      
  • a2           = 0xfa5ec
      
  • a3           = 0xe97a4
      
  • a4           = 0xd00a0dff
      
  • a5           = 0x41764
      
  • a6           = 0x0
      
  • a7           = 0x4
      
  • s2           = 0x13131313
      
  • s3           = 0xfa654
      
  • s4           = 0x4afcec
      
  • s5           = 0x4afcd4
      
  • s6           = 0x4afcbc
      
  • s7           = 0x8080808
      
  • s8           = 0x7070707
      
  • s9           = 0x6060606
      
  • s10          = 0x5050505
      
  • s11          = 0x4040404
      
  • t3           = 0xfa5ac
      
  • t4           = 0x0
      
  • t5           = 0xdb760
      
  • t6           = 0xdb760
      
  • **********memory info**********
      
  • Pool Addr    = 0xe8780
      
  • Pool Size    = 0x2fe40
      
  • Fail Count   = 0x0
      
  • Peek Size    = 0x141e0
      
  • Used Size    = 0x141c0
      
  • **********task info**********
      
  • Name         : AHT20Tas        
      
  • ID           = 9
      
  • Status       = 0x14
      
  • Stack Index  = 0x8
      
  • Stack Peak   = 0x290
      
  • Stack Size   = 0x400
      
  • SP           = 0x11a860
      
  • Stack        : 0xfa290 to 0xfa690
      
  • Real SP      = 0xfa5a0
      
  • Stack OveRFlow  = 0
      
  • **********track_info**********
      
  • current_item:0x6
      
  • item_cnt:10
      
  • Index   TrackType   TrackID  CurTime  Data1  Data2
      
  • 0001 0065 0007 0x66 0x3f5e78 0x3f5e78
      
  • 0002 0065 0006 0x66 0x3f5e78 0x3f5e78
      
  • 0003 0065 0009 0x66 0x3f5e78 0x3f5e78
      
  • 0004 0065 0001 0x66 0x3f5e78 0xd99ec
      
  • 0005 0016 0007 0x66 0xd99ec 0x0
      
  • 0006 0065 0009 0x67 0xd99ec 0x3f5e78
      
  • 0007 0065 0001 0x64 0x3f5e78 0xd99ec
      
  • 0008 0016 0007 0x64 0xd99ec 0x0
      
  • 0009 0016 0007 0x65 0xd99ec 0x0
      
  • 0010 0065 0000 0x66 0xd99ec 0x3f5e78
      
  • **********Call Stack**********
      
  • Call Stack 0 -- 3f78c0 addr:fa67c
      
  • Call Stack 1 -- 3f5e24 addr:fa68c
      
  • **********Call Stack end**********
      


复制代码 程序没运行起来。一直重启。这就麻烦了,不知道从哪入手去解决问题。

搞了两个晚上,在官方的文档中找到个很有用的文档:Hi3861V100/Hi3861LV100 常见问题 FAQ.pdf。里面的第三章有详细讲解死机信息和死机问题。接下来就是参考文档中提供的方法一步步去定位问题。



根据步骤3找到mepc地址:0x4a1580



根据地址0x4a1580找到.asm文件中的对应函数。即找到出错的函数了。



定位到是在AHT20_Task函数中调用AHT20_ReadHT出问题了。已经缩小范围了,继续找引发问题的具体原因。

然后继续在map文件中找函数中用到的内存或者变量定义。找到如下部分,定义的结构体变量定义成了指针类型的,调用的时候又没有分配空间



解决办法,直接定义为结构体变量,这样编译器就会自动分配内存空间了。



至此找到问题并解决了该问题。
回复

使用道具 举报

发表回复

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则


联系客服 关注微信 下载APP 返回顶部 返回列表