Android 下 Kernel Debug (Qualcomm Chipset)

Android 下 Kernel Debug  (Qualcomm Chipset) 

1. 背景 
本文面向Linux/Android系统的Kernel Debug技术。 
涉及Linux Kernel,Android Native,Android Framework。 
主要集中于泛用的技术而不是针对在某个模块上的特有技术,涉及一些Qualcomm Chipset相关的Debug技术 
不包含需要使用JTAG的Debug ,不包含面向Android App的Debug 

Debug工作量在现今Android产品开发中占据很大比例,对于问题的解决速度也是成败的关键。 

(1)Bug的主要来源 
• AOSP 
• Vendor 
• Continuous integration 
• Customization 

(2)理解系统的组成 
System Architecture (MSM8974 ) 

(3)Debug第一步是需要定位Bug发生在哪里。 
在MSM8974上,有多个处理器,运行着不同的系统 

• Krait (4 cores, similar to ARM Cortex-A15) 
• LK, Linux, Android,TrustZone 
• Cortex M3 
• Resource Power Manager (RPM) 
• Clock/Power 管理 
• Boot 主控CPU 
• ARM9 
• Wifi/BT 
• Multimedia (camera,audio/video codecs) 
• Hexagon/DSP 
• Modem 
• Audio/Sensor 
• QDSS (Qualcomm Debug Sub System) 

2. Bug分类和对策 
Bug分类 (Kernel Space ) 

(1) Kernel Panic               
Linux Kernel的致命错误,在 Debug Build上会触发ramdump, 导致系统重启 
关联Log 文件: Last kmsg 

(2)HW Watchdog                  
Krait或其他处理器陷入不正常状态(卡住了),在Debug Build 上会触发ramdump,系统重启 
关联文件: Parsed ramdmup 

(3)Freeze                       
系统不相应UI/hard-key输入

(4)Shutdown                     
系统关机                        
RST_STAT ,Last kmsg 

(5)Subsystem bug               

Krait以外的系统的问题,在Debug Build上会触发ramdump, 系统重启 
关联文件: Parsed ramdmup 

3. 经验杂谈 
(1)泛用Debug技术 

• JTAG On-Device Debugging 
    • 连接Device到JTAG Debugger,在线Debug。 
    • 本文不涉及这部分 
• On-Device Logging 
    • DDMS/Logcat 
    • Linux Dmesg 
    • Linux debugfs, sysfs, procfs 
• Offline Debug 
    • Ramdump parser 
    • T32 Simulator 

(2)HW Watchdog 

    • What is watchdog 
    • Possible cause 
    • Deadlock/livelock 
    • Stressful kernel work 
    • Interrupt flooding 
    • Unclock register access 
    • Bus hang? 

(3)Log 
Log是最经济的解析工具。
设计时要充分考虑各位异常情况,并在异常路径上输出充分的信息 
解析Log时要考虑到SMP的影响,要考虑Cpu Hang住的情况 
Memory log –parse log from ramdump 
借助Console log进行debug 

更多相关文章

  1. 关于华为P10(Android 8.0系统)出现的一个莫名奇妙的ANR
  2. Android学习之文件存储
  3. Android InputStreamReader 解析gbk、gb2312编码的xml文件 编码
  4. android 系统编译要求,官方资料
  5. android实现文件下载的几种方式
  6. Android调用系统程序
  7. Android Studio 3.0以后打包修改文件名方法
  8. Android编译系统详解(三)
  9. Android编译系统详解(二)

随机推荐

  1. android之layout_weight使用
  2. Android(安卓)Animation(API Guides翻译)
  3. android 重力感应初步认识
  4. android中使用afinal一行代码显示网络图
  5. Android(安卓)7.1.2(Android(安卓)N) And
  6. 2.4.11 网格视图和图像切换器
  7. android编译时添加库第三方库文件
  8. android编译时添加库第三方库文件
  9. Camera Flash的获得权限
  10. 2.4.10 可展开的列表组件