互芯平台GSM软件简明教程Word格式.docx
- 文档编号:22202549
- 上传时间:2023-02-03
- 格式:DOCX
- 页数:106
- 大小:1.37MB
互芯平台GSM软件简明教程Word格式.docx
《互芯平台GSM软件简明教程Word格式.docx》由会员分享,可在线阅读,更多相关《互芯平台GSM软件简明教程Word格式.docx(106页珍藏版)》请在冰豆网上搜索。
/projects/gallite,目录结构如下图所示,注意有个soft目录。
然后从ftp的/SoftwarePackage下获取所有的补丁包(以patch_BV1_0_3_xxx形式命名),打上这些补丁。
1.3、设置一个HOME的环境变量,如图:
双击桌面上的cygwin图标
运行cygwin,在C:
\CSDTK\cygwin\home\下会创建一个以当前用户名命名的目录(例如为yourname)。
将D:
\projects\gallite\soft\env\win32\.bashrc和D:
\projects\gallite\soft\env\win32\cygenv.sh这两个文件拷贝到该目录下,并用UltraEdit编辑C:
\CSDTK\cygwin\home\yourname\.bashrc文件(打开时若UltraEdit提示要转换成DOS格式,请选择“否”),将116行:
exportPROJ_ROOT=/cygdrive/c/projects
替换成:
exportPROJ_ROOT=/cygdrive/d/projects
将122行
exportPATH=/usr/bin:
/crosscompiler/bin:
/cooltools/:
替换成
/cygdrive/c/CSDTK/cooltools/:
/cygdrive/c/Program\Files/Xoreax/IncrediBuild:
保存并关闭C:
\CSDTK\cygwin\home\yourname\.bashrc,在cygwin窗口依次输入如下命令:
$source~/.bashrc
$workgallite
若此时显示“SoftbaseSOFT_WORKDIR=/cygdrive/d/projects/gallite/soft,ProjectSwitchedtogallite”且当前路径切换到/cygdrive/d/projects/gallite/soft,如下图所示,则说明安装成功。
以后每次打开新的cygwin窗口进行编译之前,都要先运行这两个命令。
建议将cygwin窗口的缓冲区高度增大一些,如图:
2、如何编译代码?
2.1、正式发布的代码只有一个默认的资源包,位于\soft\application\mmi_customer,由于长时间没有维护了,强烈不建议使用。
一般来说每个项目都有自己的资源包,所以要创建一个\soft\application\target_res目录,将该项目的资源包放到该目录下,例如我的代码里有如下的资源包:
如果需要特定的资源包,请联系FAE,因为资源包是不在ftp上发布的。
然后运行如下命令:
$ctmake-j8CT_RELEASE=debugCT_TARGET=gallite_ms11_ap_qqvga_p0CT_USER=FAEWITHOUT_WERROR=1CT_OPT=dbg_sizeCT_RESGEN=yesCT_PRODUCT=110829_MS11_DEV
最后在\soft\hex\gallite_ms11_ap_qqvga_p0_110829_MS11_DEV_debug下会生成如下文件:
说明编译成功。
2.2、编译命令的说明
ctmake:
make的封装脚本,主要处理模块化编译、多进程编译和分布式编译,之后会调用系统的make;
-j8:
ctmka默认设置为4进程,如果你的电脑速度较快,可以用“-j8”设置成8个进程。
CT_RELEASE=debug/release:
debug和release模式有几个区别,当出现软件原因的异常或者部分硬件原因的跑飞/死机和异常时,debug版本的软件会死循环等待调试工具的命令,直观看到的现象就是冻屏;
而release版本的软件则会重启。
另外debug版本的软件比releae的多占用一些(大概几十K)ROM和RAM空间。
一般来说,开发调试的时候用debug模式,量产软件发布用release模式。
CT_TARGET=xxx:
设置target。
target是互芯平台特有的概念,里面包括某个项目的绝大部分硬件的配置信息和部分的软件配置信息。
target位于\soft\target\下,编译的时候必须用CT_TARGET=指定一个target。
CT_USER=ADMIN/FAE:
由于发布给客户的代码中stack是库的形式,所以要用CT_USER=FAE;
如果有全部的源代码,则可以用CT_USER=ADMIN。
一般客户都用CT_USER=FAE。
WITHOUT_WERROR=1/x:
这个变量指定了对于编译时产生的警告错误的处理方式,值为1则显示警告信息编译继续进行,其它值则警告做错误处理,编译停止。
CT_OPT=dbg/dbg_opt/dbg_size/size/speed:
这个变量指定了编译时的优化方式。
dbg不开任何优化,只生成调试信息;
dbg_opt使用-O2级优化,它会打开不涉及代码尺寸和运行速度权衡的所有优化,同时dbg_opt还会打开-falign-functions=16-falign-jumps=16来优化运行速度,也会生成调试信息;
dbg_size使用-Os级优化,它会优化代码尺寸,类似于-O2,但是将禁止任何为对齐而插入的空间,同时生成调试信息;
size类似于dbg_size,只是不生成调试信息;
speed类似于dbg_opt,只是不生成调试信息。
另外,所有的优化都默认打开了-frename-registers选项。
低端平台由于成本因素考虑,对空间的关注大于对速度的关注,所以一般都会在命令行上显式的指定CT_OPT=dbg_size。
如果没有显式的指定,则在release时会使用speed,debug时会使用dbg_opt,最后往往会在link的时候由于ROM空间不够而报错。
CT_RESGEN=yes/no:
这个变量指定是否编译资源。
CT_PRODUCT=xxx:
这个变量影响了两个地方,一个是最后编译生成的路径和文件名字会包含CT_PRODUC指定的信息,一个是在手机运行时输入掩码(例如*#36*#)后查看版本信息的时候,会显示CT_PRODUC指定的信息。
建议量产软件发布的时候都带PRODUCT信息,便于跟踪软件版本。
2.3、其它编译选项的说明
CT_USERGEN=yes/no:
是否生成文件系统。
选择yes后将会生成一个空的文件系统,并集成到最后生成的lod文件中,这样可以加快第一次开机时的开机速度(不必重建文件系统了),同时还会避免一些由于重建文件系统时引入的错误,缺点是如果文件系统过大,会导致下载时间稍长。
建议采用CT_USERGEN=yes。
WITH_SVN=0/x:
是否使用SVN自动生成版本信息。
如果你的电脑上没有安装SVN,或者安装了较高版本的SVN,请指定WITH_SVN=0,否则会产生编译错误。
推荐使用1.5.4版本的SVN。
如果需要安装SVNserver,请参考evn目录下的“SVN安装配置”。
ibuild:
分布式编译,请参考env目录下的《互芯平台上使用IncrediBuild进行分布式编译.doc》。
注意,建议使用IncrediBuild3.51或更高版本,因为老版本对cygwin的支持不大好。
dump:
反汇编。
<
modulelist>
:
可以在编译命令行的任何地方指定<
,这样编译时会模块化编译,也就是只编译<
指定的模块,然后link。
这样可以大大的加快编译的速度。
一个例子:
$ctmake-j8CT_RELEASE=debugCT_TARGET=gallite_ms11_ap_qqvga_p0CT_USER=FAEWITHOUT_WERROR=1CT_OPT=dbg_sizeCT_RESGEN=yesCT_PRODUCT=110829_MS11_DEVapplication/coolmmi/mmi/GUIapplication/coolmmi/mmi/Alarm
注意,模块化编译需要你的make版本为3.81或以上(CSDTK默认安装的是3.81),如果手动的修改为其它低版本会导致模块化编译失效。
另外在模块化编译之前要进行过完全编译。
3、下载、抓trace、调试
3.1、首先要安装usb转串口芯片CP2102的驱动,该驱动位于misc目录下的CP210x_VCP_Win2K_XP_S2K3(V5.30).zip。
然后插入下载线,在设备管理器里面确保可以看到该设备,如下图(可能你看到的串口号和图示的不同)。
如果找不到串口设备,请更换电脑的USB口和下载线,或者检查驱动是否正确安装。
3.2、运行C:
\CSDTK\cooltools\coolwatcher.exe,显示如下界面:
第一次运行coolwatcher时,需要在Profiles标签里选择Gallite,在lastcomport输入正确的串口号。
以后运行coolwatcher时,会使用上次设置的信息。
点击Ok,进入如下界面(你的界面可能和下图略有不同,因为我把不常用的一些标签给关掉了)。
如果左边的RubyScript栏下方显示“[COMOPENOK]”,说明串口已经被成功打开了,否则要检查串口号是否正确。
点击工具栏的第6个图标
,选择要被下载的lod文件。
点击工具栏的第7个图标
,选择该项目用的flash的ramrun。
常用的ramrun位于\soft\toolpool\plugins\fastpf\flash_programmers下,你也可以自己编译ramrun。
然后将手机开机。
如果手机的flash是第一次下载,则左边RubyScript栏会输出0xffffffff;
如果手机里面已经有正常运行的软件,则RubyScript栏会输出0xffffffff和0x57,可以依次来判断手机和coolwatcher之间的通讯是否正常。
点击工具栏的第8个图标
,就开始下载,右下角会显示下载的进度条。
3.3、抓trace首先要确保编译出含有trace输出的软件。
当前由于ROM空间的限制,默认trace输出都是关闭的。
打开trace需要编辑相应项目的target.def文件,如下几行:
##31##
#trace设置
GLOBAL_EXPORT_FLAG+=MMI_NO_TRACE
GLOBAL_EXPORT_FLAG+=EDRV_NO_TRACE
GLOBAL_EXPORT_FLAG+=HAL_NO_PRINTF
GLOBAL_EXPORT_FLAG+=PAL_NO_TRACE
GLOBAL_EXPORT_FLAG+=SXS_NO_PRINTF
GLOBAL_EXPORT_FLAG+=APS_NO_PRINTF
GLOBAL_EXPORT_FLAG+=ARS_NO_PRINTF
GLOBAL_EXPORT_FLAG+=SXS_NO_DUMP
GLOBAL_EXPORT_FLAG+=MCI_NO_TRACE
GLOBAL_EXPORT_FLAG+=CSW_NO_TRACE
GLOBAL_EXPORT_FLAG+=CALIB_NO_PRINTF
GLOBAL_EXPORT_FLAG+=UMSS_NO_PRINTF
GLOBAL_EXPORT_FLAG+=UCTLS_NO_PRINTF
GLOBAL_EXPORT_FLAG+=VOIS_NO_PRINTF
GLOBAL_EXPORT_FLAG+=STACK_NO_PRINTF
GLOBAL_EXPORT_FLAG+=RFD_NO_TRACE
例如如果要打开MMI的trace,则修改为:
#GLOBAL_EXPORT_FLAG+=MMI_NO_TRACE
#GLOBAL_EXPORT_FLAG+=SXS_NO_PRINTF
也就是说,打开任何一个或者几个trace,GLOBAL_EXPORT_FLAG+=SXS_NO_PRINTF都要被注释掉。
然后全部重编(将\soft\build\相应的目录删掉,再编译),这时的软件就是含有trace输出信息的。
如果ROM空间不够,可以只保留英文
打开coolwatcher的Plugins菜单,选择ActivateTraceTool,右边会出现新的Tracetool标签,如下图:
选择图标
,可以设置tracelevel,如下图:
点击Apply,将手机开机,点击
,就可以输出trace信息了。
3.4、上面提到的trace输出是非实时的,系统在空闲的时候输出trace,而且输出的数据量比较大的时候可能会输出不完整。
另外有一种更简单的调试手段,使用hal_HstSendEvent()函数输出一个32bit的数据,这个输出是实时的,也不会被冲掉,输出的数据显示在RubyScript栏里。
事实上上面提到的开机输出的0x57就是调用这个函数输出的。
3.5、如果程序遇到异常,debug版本的软件会冻屏。
这时连上coolwatcher,点击第5个图标
,选择C:
\CSDTK\cooltools\rbbase\common\plugins\CoolGDB\profiles\gallite_xcpu.cgd文件(选择一次即可,以后系统会默认用上次选择的)。
然后选择第4个图标
,即可进入gdb调试窗口。
第一次使用的时候windows防火墙会提示拦截,请放行。
常用如下gdb命令,可以用来帮助debug:
bt和btf,输出出现异常的task异常现场的callstack;
print或p,输出全局变量的值,如pgIsOnSearchingScreen;
其它常用gdb命令请查看gdb手册,在gnu目录下的《GDBQuickReference.pdf》。
4、开始一个新项目
我们的整个软件由三部分构成:
target配置、代码、资源包。
一套软件里面,有很多target配置,也有很多资源包,但是只有一套代码。
新建一个target,选择一个现有的资源包或新建一个资源包,进行适当的编辑,再和当前的代码一起编译,就会生成一个新的项目的lod。
注意:
下面提到的gallite若不特意说明指的是CT1129/30/31(8806),不包括CT1128。
4.1、target配置。
一个新的项目,第一步是要配置其target。
一般来说,我们可以选择一个现有的和新项目硬件配置比较接近的target作为基础,修改成新项目的target。
我们在\soft\target目录下面可以看到很多目录,每个目录是一个项目的target配置。
target配置分成三个文件
target.def:
主要是配置芯片型号和全局参数
tgt_board_cfg.h:
主要是配置gallite芯片接口和外设
tgt_app_cfg.h:
主要是配置文件系统和内存分配
下面我们详细描述一下这几个文件的具体参数的定义
4.1.1、target.def详细描述
输入资料:
原理图和产品定义
参与人员:
原理图设计者、驱动工程师
开始配置target之前,需要问清楚,项目所使用的FLASH、LCD(模组和IC的SPEC)、Sensor、RFPA、AudioPA、蓝牙等型号,以及支持的SIM卡数等。
先看一个模板,我们以gallite_r440_3232为例说明,蓝色部分是源文件内容,黑色部分是我对会经常修改的部分的注释。
这里只是贴一个例子,后续对于专门问题会专门讨论:
#######下面是gallite集成配置,不能随意改动##################
CT_ASIC?
=gallite
CT_ASIC_CFG?
=chip
3GPP_MODE?
=gsm
ROM_TYPE?
##chippackagefordifferentsramsize:
CT1129/CT1130/CT1131
##CT1129:
16Mbitsram
##CT1130:
32Mbitsram
##CT1131:
64Mbitsram
CT_CHIP_PKG?
=CT1130
##chipDIE:
8805/8806/8808
CT_CHIP_DIE?
=8806
CT_ROMULATOR?
=no
PM_MODEL?
=rda1203_gallite_CT1129
XCV_MODEL?
=xcv_rda6220_gallite_CT1129
AD_MODEL?
=codec_gallite
#上面是gallite芯片集成的配置。
根据内置psram和spiflash大小的不同,gallite目前分为CT1129,CT1130和CT1131。
根据贴的具体的芯片型号和批次,这里要给CT_CHIP_PKG和CT_CHIP_DIE赋正确的值。
其它部分不必修改。
CT_CHIP_PKG和CT_CHIP_DIE在bv3及以前的版本中不必定义。
######触屏驱动gallite集成,需要则配rda1203_gallite,否则为空#######
TSD_MODEL?
=
######FM驱动gallite集成,需要则配rda5802e_gallite,特别注意的是若是使用ATVRDA5888S或RDA5888E中集成的FM时,需要配成rda5888e#######
FM_MODEL?
=rda5802e_gallite
#有的带atv的项目客户对内置fm的效果不满意,要求使用外置fm,这里就需要修改成rda5888e
#######上面是gallite集成配置,不能随意改动###################
##注意1:
除非特别说明,module的名字必须和edrv目录下面的目录名保持一致,
##否则编译的时候找不到对应的目标。
如果edrv下面没有相关的目录,
##说明暂时没有这个设备的驱动,需要驱动工程师自己去开发一个新的驱动,
##驱动程序可以根据设备的SPEC参考已有的驱动进行修改。
##1##
#######RFPA型号驱动程序在edrv/rfd目录###################
##pa_rda6212
##pa_rda6216
##pasw_rda6218
##pasw_rda6231
##pasw表示集成PA和Switch
##推荐使用pasw_rda6231
PA_MODEL?
=pasw_rda6231
#对于4频的项目,一般会贴6232,但是软件驱动是通用的,这里也配成pasw_rda6231就行了。
##Switch型号
SW_MODEL?
=
#################################################################
##2##
#######选择FLASH型号,驱动程序edrv/memd###################
##ADMUXMCP
##1NumonyxM36L0R7050U3ZS128+32
##NumonyxM36L0R7050L3ZS128+32
##NumonyxM36L0R7050T4128+32
##NumonyxM36L0R7050T3128+32
##NumonyxM36P0R8060N0ZS256+64
##NumonyxM36W0R6050U4ZS64+32
##2SpansionS71NS128PB0128+32
##SpansionS71NS256NB0256+32
##SpansionS71NS256PC0256+64
##SpansionS71WS256NC0256+32
##SpansionS71WS256PD0256+32
##3TOSHIBATY5701111183KC128+32
##TOSHIBATY671111184KC128+64
##NormalMCP
##1SamsungK5L6331CAA_D27064+32
##SamsungK5L2731CAA_D770128+32
##SamsungK5J6332CTM-D77064+32
##SamsungK5L3316CAM32+16
##2TOSHIBATV00560002EDGB64+32
##TOSHIBATV00570002ARGQ128+32
##3EONEN71PL0640B064+32
##EONEN71GL064B064+32
##EONEN
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 平台 GSM 软件 简明 教程