Edison's NoteSsss

Everything about me

Tag: amss

最近两个月的工作感受

转到Tele-Baseband组已经将近2个月了,这两个月中间夹杂着烦人的找房子,搬家等琐碎杂事。不过还是磕磕绊绊看了不少3Gpp协议以及AMSS代码的内容。
最大的感触就是QualComm的AMSS Modem部分的协议栈真TM复杂 3Gpp协议真TM复杂!!
其实之前工作中就多多少少看过一些 也对这部分非常感兴趣 所以成立Baseband组的时候 我就到了这个组工作
但是真正接触到了深层的协议内容和对应的协议栈实现之后才发现之前看到的是多么的肤浅,比如说就一个简单的注网流程,就能让我们很多人搞很久还没有完全理清思路。。。各种情况,各种条件,各种流程。。。
这两个月最大的体会是 现在自己的水平还是太差劲了,看AMSS代码感觉比较吃力 AMSS内部的各种宏定义,结构体 简直让人崩溃,对C的运用和理解还是有很大缺陷的,在基本功方面还有很长的路要走。
对于协议内容的理解也很不到位,其实到现在为止还没有真正静下心来认真的去阅读理解协议的内容,还是有些浮躁,遇到不明白的问题没有静下心来啃下去的耐心,总会烦躁,然后看不下去。。。
总之 对于这段时间的工作状况还是不太满意吧,觉得还有很多可以提升的空间 尤其是现在的工作内容很多东西需要静下心来才能啃得动的硬骨头啊
最近一些烦人的事情也都处理的差不多了 接下来的时间里 努力安心学习吧

对于AMSS问题的debug一例

刚才和同事以及老大调查了一个AMSS里面导致crash的问题
具体现象是在打电话的过程中发送sms就会crash。
最开始取了qcril的log进行调查,通过加log的方式发现qcril发送sms的流程都已经走完了,但是没有得到AMSS的返回消息就挂掉了,初步定位问题为AMSS内部处理有问题。
后来为了定位问题代码打算使用trace32设置断点调试的方式来debug调试,在自己的机器上配置了AMSS编译环境后,打开debug的选项进行编译,将断点设置在err_fatal_put_inte… 的出错处理函数,然后复现bug,发现走到了断点,通过切换task到wms发信死在wmsmsg.c文件的address:0x100706E 对照代码窗口发现显示是在send_msg。。。。。函数的3322到3325行之间出了问题,但是通过代码对比发现对应行数并不是问题函数内部,推断肯能是在编译预处理阶段产生了代码行号的偏移,为了定位偏移行数,使用debug用的AMSS重新取了QXDM的log,对比log输出发现,问题函数内部打印的log在代码实际位置和QXDM取的log显示位置存在56行的偏移,结合之前显示的问题点定位3322行 应该对应3266行,在结合trace信息看到在出问题之前有一次函数调用 并且上下有3行的间隔 对比代码找到被调用的函数,发现被调用函数与3366间隔的三行内只有一条指令,符合trace看到的情况 推断问题代码就是此条指令,注释掉再编译 调试发现问题不能复现了 确定就是此条指令引起!
明天继续调查详细的原因 ,在这做个笔记,省得忘了怎么查的。。。。有记不清楚的地方明天补充,睡觉了。。。太晚了。。。

© 2017 Edison's NoteSsss

Theme by Anders NorenUp ↑