Android 下 Kernel Debug (Qualcomm Chipset)

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 

你可能感兴趣的:(android,驱动开发)