君正X1500基于Minios的crash分析
之前在开发过程中,总是会出现各种各样的内存跑飞,然而君正的OS是基于uc/os改进的,不同于Linux有很多的调试手段,一旦内存跑飞总是感到很棘手。因此,后面项目闲下来后,经过仔细的研究总算找到解决办法了。
我首先是通过代码构造了个crash的场景如下:
static void beep_task(void *arg)
{unsigned char err;unsigned char *sp = NULL;while (1) {os_SemaphorePend(beep_sem_sync, 0, &err);printf("%d\n", beep_cnt++);AppIndication(g_decResult.indicate_type);*sp = 1; //空指针触发crashos_SemaphoreSet(beep_sem_sync, 0, &err);}
}
之后,开机触发crash,收集串口log,如下:
hid_keyboard_tx Send Failed
hid_keyboard_tx Send Failed
-----------------------------------------------------
8001f0c8: 92a40420
8001f0cc: 8e442bd8
8001f0d0: 00002821
8001f0d4: 02203021
8001f0d8: 0c0140e2
8001f0dc: a0130000
8001f0e0: 08007c28
8001f0e4: 8e442bd8
-----------------------------------------------------
CAUSE=80800c0c --> TLB Store
EPC=8001f0d8$0 zero 00000000 $1 at 00000000 $2 v0 00000001 $3 v1 02000000 $4 a0 802eebac $5 a1 00000000 $6 a2 8015f3e8 $7 a3 80070000 $8 t0 00000010 $9 t1 b000204c $10 t2 b0002040 $11 t3 b0002048 $12 t4 00010001 $13 t5 b0002034 $14 t6 00000032 $15 t7 00000000 $16 s0 80160000 $17 s1 8015f3e8 $18 s2 80070000 $19 s3 00000001 $20 s4 80060000 $21 s5 802ead24 $22 s6 00000000 $23 s7 00000000 $24 t8 00000000 $25 t9 00000000 $26 k0 8015f3d8 $27 k1 00000000 $28 gp 8007ab70 $29 sp 8015f3d8 $30 fp 00000000 $31 ra 8001f0e0
g_pExcept[0].sp = 8015a2f0 sp = 8015f3d8
Restarting after 4 ms
ok,注意上面的PC指针,例如最后一条PC指针是指向的8001f0c8,ok,拿到这个PC指针后,我们去分析dump文件。
dump文件是存放在
mini_os\x1500-minios\yak\target\minios.dump
然后我们打开它,并探索地址8001f0c8,then
//8001f060 <beep_task>:
8001f060: 27bdffc8 addiu sp,sp,-56
8001f064: 3c02802f lui v0,0x802f
8001f068: afb5002c sw s5,44(sp)
8001f06c: afb40028 sw s4,40(sp)
8001f070: afb30024 sw s3,36(sp)
8001f074: afb20020 sw s2,32(sp)
8001f078: afb1001c sw s1,28(sp)
8001f07c: afb00018 sw s0,24(sp)
8001f080: afbf0030 sw ra,48(sp)
8001f084: 2455ad24 addiu s5,v0,-21212
8001f088: 3c128007 lui s2,0x8007
8001f08c: 27b10010 addiu s1,sp,16
8001f090: 3c108016 lui s0,0x8016
8001f094: 3c148006 lui s4,0x8006
8001f098: 24130001 li s3,1
8001f09c: 8e442bd8 lw a0,11224(s2)
8001f0a0: 02203021 move a2,s1
8001f0a4: 0c014a3e jal 800528f8 <os_SemaphorePend>
8001f0a8: 00002821 move a1,zero
8001f0ac: 8e029414 lw v0,-27628(s0)
8001f0b0: 26843f08 addiu a0,s4,16136
8001f0b4: 00402821 move a1,v0
8001f0b8: 24420001 addiu v0,v0,1
8001f0bc: 0c007a85 jal 8001ea14 <printf>
8001f0c0: ae029414 sw v0,-27628(s0)
8001f0c4: 0c0095ef jal 800257bc <AppIndication>
//8001f0c8: 92a40420 lbu a0,1056(s5)
8001f0cc: 8e442bd8 lw a0,11224(s2)
8001f0d0: 00002821 move a1,zero
8001f0d4: 02203021 move a2,s1
8001f0d8: 0c0140e2 jal 80050388 <os_SemaphoreSet>
8001f0dc: a0130000 sb s3,0(zero)
8001f0e0: 08007c28 j 8001f0a0 <beep_task+0x40>
8001f0e4: 8e442bd8 lw a0,11224(s2)
OK,dump文件非常明白的告诉了我们crash发生在beep_task函数中,而且是在AppIndication的下一条指令。
君正X1500基于Minios的crash分析相关推荐
- 君正Zeratul开发(2)——uboot启动分析
前言 boot启动一般分为两个阶段,君正设备的第一阶段uboot spl 程序没有开源,用户编译的是第二阶段的boot,最后将两个阶段的boot合并到一起,写入到boot分区中去,boot分区如 ...
- 君正X2000/X1500主控CPU芯片应用场景推荐
近期推出了多款搭载君正X2000.x1500芯片的应用案例,如二维码门禁.手持式有害气体检测仪.智能门锁.支付条码二维码等方案. 1,基于君正X2000二维码门禁方案 随着门禁行业的逐渐成熟发展,作为 ...
- 基于君正X1830-人脸识别解决方案介绍
方案特点: 本人脸识别解决方案基于君正X1830芯片,硬件上提供了turnkey级的硬件参考设计,具有低成本高性能的优势,并且有丰富的外设配置和丰富的器件支持列表.软件方面使用linux系统,相比于A ...
- 尴尬君正,是如何被“创新”带到沟里去的?
作为创业板的一个标杆,北京君正(300223)上市快三年了.在上市三年之际,重新回顾梳理这样一家集"自主创新""高新科技企业""国产CPU" ...
- 君正T20平台生成jffs2格式rootfs
基于系统升级的考虑,这两天在君正T20平台上折腾如何生成jffs2 格式的rootfs.详细的过程如下: 1.修改uboot中的分区参数: 修改为rootfs格式为jffs2的,且适当扩大rootfs ...
- 君正4750开发板使用日记2-Linux环境搭建与内核编译
为什么80%的码农都做不了架构师?>>> Linux环境搭建与内核编译 上一篇中把4750开发板与PC的硬件连通了,这一篇记录的是基本的Linux环境的搭建.其实官方文档已经比 ...
- 情感分析与观点挖掘第五章笔记(上)/基于方面的情感分析/SentimentAnalysis-and-OpinionMining by Bing Liu
Chapter 5 基于方面的情感分析_Aspect-based Sentiment Analysis 5.1 方面情感分类 5.2 观点和构成语义学的基本规则 随着各章的自然发展,本章应侧重于 短语 ...
- 基于联合独立成分分析(jICA)的EEG与fMRI耦合与解耦
文章来源于微信公众号(茗创科技),欢迎有兴趣的朋友搜索关注. 导读 fMRI和EEG的有意义整合需要了解这些测量是否反映了相同神经源的活动,即估计神经成像模式之间的耦合与解耦程度.本文提出了一种基于联 ...
- 君正Magik算法平台介绍
------------摘自君正官方<magik_introduce> 00 引言 君正简介,芯片 + AI 算力 + AI 开发平台」方案落地,公布全栈式低功耗 AI 技术 01 Mag ...
- 君正主控CPU芯片,X2000多场景应用案例
针对智能设备市场,雷龙发展近期推出基于多核异构跨界处理器X2000芯片的多场景应用案例.如智能门锁.激光打印机.扫译笔及显控板方案. [案例一]智能门锁:低功耗.响应速度快.防伪性能高 芯片:君正X2 ...
最新文章
- 投影参数_智能投影仪参数如何去看,其实很简单
- 局域网怎样自动安装FLASH插件(浏览器不安装flashplayer都可以浏览.swf文件)
- php登录半透明,WordPress透明OAuth 1.0使用PHP登录
- 使用Uploadify实现上传图片生成缩略图例子,实时显示进度条
- 老生常谈:工厂模式兄弟姐妹
- 用inno做setup遇到的一些问题及解决方法
- chi-squared检验_每位数据科学家都必须具备Chi-S方检验统计量:客户流失中的案例研究
- 使用Hystrix DSL创建弹性骆驼应用程序
- python做统计_利用 Python 进行统计
- 【金融申请评分卡】数据准备 - 造衍生变量
- 牛客OI周赛6-提高组 B 践踏
- CCS 软件仿真 支持6678
- 大于2019电大计算机应用上机表格题,2019年电大计算机应用基础试题及答案重要知识点...
- dedeCMS采集插件自动采集文章自定义接口
- 美团运筹优化实战——智能配送系统阅读笔记
- 阿里“中供系”前世今生:马云麾下最神秘的子弟兵
- 《沧浪之水》、《因为女人》作者阎真的最新作品《活着之上》的阅后笔记
- 关于电子科技大学(清水河校区)门禁设置的调研
- xls文件的读写操作
- SCP-Py-001