开始弄高通平台快三个月了,全新的平台,全新的挑战。跟MTK(ralink)、Realtek 平台开发差异太大了。
以前开发主要靠两个文档,开发手册和datasheet。datasheet主要是驱动开发时候使用(寄存器和地址),但是开发手册基本上什么都有,软件开发 so easy.
BUT。。。高通平台,没有找到开发手册,不仅如此,其他的资料也非常难找,找到的资料基本对开发入门毫无作用。
那么现在就有以下几个方面需要自己搜集资料、向别人请教,慢慢上路了。
1、代码结构。
代码结构一般对应硬件结构。硬件有
那么对应软件就以下几个模块了:
boot_images代码、apps_proc linux代码、modem_proc代码、RPM代码、音频代码等。后面两块没怎么用,主要就是boot_images代码、apps_proc linux代码、modem_proc代码这三块了,apps_proc linux代码则是修改最频繁的代码了。
2、编译方法(编译环境)
这一块是非常纠结的,现在仍然很多东西不懂,感觉bitbake有点变态。
linux工程的编译是采用bitbake模块化的编译机制,它支持模块的单独clean、compile和install。模块编译如下:
. build/conf/set_bb_env.sh
bitbake -fccleanall oem
bitbake -fc compile oem
bitbake -fc install oem
build9615
编译目录在:\oe-core\build\tmp-eglibc\work\armv7a-vfp-neon-oe-linux-gnueabi下。bitbake是什么东西呢?那么就得知道OpenEmbedded了,OpenEmbedded(OE)是一个开源的嵌入式linux系统构建环境,下一篇转载一下它的内容。
另外需要看的两篇文档是:BitBake User Manual.pdf openembed user manual.pdf,网上可以找到。
bitbake是编译的一个难点,还有一个难点是autotool,也在以后介绍了。
3、烧录方法
linux里面习惯性,通过串口进入bootloader,然后就可以根据bootloader的命令进行烧录下载了。
BUT。。。
这个产品根据没有引出串口,因为还涉及Modem的代码,即不是一个纯粹的linux系统,根本不能在boot模式进行烧录下载。
高通提供了两个工具QPST和TPST,QPST可以根据模块选择下载,TPST下载最终的download.img.
这两个工具也不是很好用,需要积累吧。
4、调试方法
linux里面一个printf、一个printk,通过串口打印,调试代码简单快捷。
但是这边没串口。
方法有:
A、高通提供了QXDM这个工具,和自己的打印函数,基本上可以当做printf用了。
另外QXDM这个工具太强大了,很多功能现在还不会用,以后还得研究研究。
B、adb shell切换工作,在CMD下,杀死进程,再打开进程,就有这个进程的调试信息了。
C、脚本里面把数值写到根目录的某个文件下
D、C代码也可以system()函数调用shell命名,如 system("touch 2013"),当跟目录下有2013这个文件,就证明运行到这一句了;
E、驱动开发呢?还是需要找硬件焊接串口,用printk了。