ETM解析与打包设计文档.docx
- 文档编号:12526326
- 上传时间:2023-06-06
- 格式:DOCX
- 页数:8
- 大小:130.67KB
ETM解析与打包设计文档.docx
《ETM解析与打包设计文档.docx》由会员分享,可在线阅读,更多相关《ETM解析与打包设计文档.docx(8页珍藏版)》请在冰点文库上搜索。
ETM解析与打包设计文档
ETM解析与打包设计文档
上海迪比特实业有限公司
研发一部WinCE组
ThisdocumentcontainsproprietaryinformationbelongingtoSHANGHAIDBTELINDUSTRYCO.,LTD.Passingonandcopyingofthisdocument,useandcommunicationofitscontentsisnotpermittedwithoutpriorwrittenauthorization.
文档编号:
文档名:
ETM解析与打包设计文档
创建日期:
2004-10-715:
04
作者:
李晓虎
最新版本:
1.0.0
文档修订记录
版本号
修订日期
作者
更改描述
1.0.0
2004-10-07
李晓虎
创建文档模板。
最新版本修订日期:
2004.10.07
目录
1.简介4
2.ETMpacket结构5
3.DM架构与ETM数据包处理流程6
3.1.DM架构6
3.1.1.ETM模块6
3.1.2.Module结构7
3.2.ETM数据包解析流程8
3.3.ETM打包流程9
1.简介
主要介绍etmpackaet数据包的解析和打包流程。
Smartphone的DM模块从PC端接收ETMPacket包到ETM处理模块后,需要对数据包内的数据进行解析,以进入适当的测试模块,调用相应的测试功能函数,并返回执行结果到ETM处理模块。
最后由ETM处理模块对测试结果进行打包,并向PC机返回数据。
本文以对ETMPacket解析和打包的实践为基础,提出ETM解析和打包的基本方案。
以便对此草案进行及时的讨论和研究,进而在此基础上对本草案进行完善,以达到为将来Smartphone的DM开发提供成熟方案的目的。
2.
ETMpacket结构
由于采用TI的ETM通讯方式,则消息结构和协议都采用TIETM的。
ETMpacket结构是确定SMARTPONEDM解析和打包的基础。
上图是ETM的通讯协议。
其中:
STX:
标示消息体的开始,一般是0x02;
ETX:
标示消息体的结束,一般是0x02;
0x14:
TestmodeTIMuxID,说明此数据包是测试模式数据包;
应模块处理的状态信息(成功如否等错误信息);
Data:
由FID代表的函数所需要使用或者处理以后的数据。
由上图可知,DM的ETM模块从PC端接收的数据包括ETM_PACKET与其自身的大小nlen;ETM_PACKET包括:
mid,payload,checksum;其中payload包括fid及其它相关数据。
3.
DM架构与ETM数据包处理流程
3.1.DM架构
根据ETM_PACKET的数据信息,结合TI中ETM模块的架构。
在经过实际编码调试的基础上,初步构建了ETM解析的大体架构,将之划分为几个层次:
首先是ETM主模块,然后是各测试模块。
各测试模块中分为模块入口函数,测试功能函数和模块API函数等,其中测试功能函数可根据实际需求进行进一步的划分。
如图所示:
3.1.1.ETM主模块
为了维护各测试模块,并通过mid值调用各模块的接口函数,定义了T_TEM_USER_DB结构,其中mid为各模块的ModuleIdentifier,swe_name为modulename,etm_module_entry为模块入口函数。
typedefstruct
{
intmid;//moduleidentifier
charswe_name[ETM_NAME_MAX_LEN];//modulename
ETM_CALLBACK_FUNC*etm_module_entry;//moduleentryfunction
}T_ETM_USER_DB;
目前,作为示例,仅添加了两个模块,如果需要添加其他的模块,可直接在此添加,如:
T_ETM_USER_DBetm_user_db[ETM_DB_MAX]=
{
{0x13,"LCD",etm_lcd},
{0x12,"CAMERA",etm_camera},
0
};
ETM模块中,etm_dispatch函数为主函数,负责ETMpacket的解析和打包。
其基本流程图如下:
3.1.2.Module结构
1.Moduleidentifier
在文件Etm_main.h中,为各模块列出了所有的模块标识符,如:
//DiagnosisModeModuleIDentifiers
enum{
ETM_CAMERA=0x12,
(……)
ETM_LCD=0x02,
};
如果我们需要在其中添加更多的测试模块,可以在此列表中进行添加。
2.ModuleFunctionInterface
对每个新模块,我们都创建了一个新的目录,且通知DM编译系统。
而每个模块都有一个入口函数,通常,为其定名为etm_[modulename]。
如etm_lcd,etm_camera等。
该函数被赋给了模块列表T_TEM_USER_DB结构的函数指针。
确定mid后,即可调用该入口函数从而进入相应的测试模块
3.ModuleMainFunctions
在调用模块的入口函数后,进入了测试模块,此时需要调用该模块的各个功能函数。
通常,很多模块的测试功能十分复杂,造成功能函数过多。
由此,我们对功能函数进行再归类,如读取寄存器的所有函数归为读寄存器类,写寄存器的所有函数归为写寄存器类,然后对每个大类编写一个主函数(mainfunction),如:
etm_audio_read、etm_audio_write等。
入口函数(interfacefunction)和接口函数(mainfunction)都在相应模块的module.c文件中。
4.ModuleAPIFunctions
当测试功能过于复杂时,这些主函数(mainfunction)需要调用下面的子功能函数(subfunction)。
这些子功能函数保存在相应模块的module_api.c文件中。
通过对模块的函数进行细致的分类、归类。
可使功能函数得到良好的层次划分,避免了功能函数繁多造成的代码混乱。
3.2.ETM数据包解析流程
DM的流程是根据ETM的解析过程来进行的。
在此,根据ETM_PACKET的解析过程介绍DM的基本流程。
1.从串口获得ETM_PACKET(即TestModePacket)及其大小,调用etm_dispatch函数开始ETM_PACKET的解析和打包工作;
2.检查并读取ETM_PACKET[0],获取ModuleIdentifier(mid),调用相关Module的入口函数,同时将*ETM_PACKET[1](即Payload)及其大小传入该ModuleInterfaceFunction;
3.Module的入口函数读取ETM_PACKET[1],获取FunctionIdentifier(fid),然后调用相应的Function函数,同时将*ETM_PACKET[2](即Data)及其大小传入ModuleMainFunction;
4.ModuleMainFunction进一步读取*ETM_PACKET[2]中的数据,其中ETM_PACKET[2]中保存param参数,*ETM_PACKET[3]保存其它相关信息,如寄存器、写寄存器的值等。
根据param参数,调用并将*ETM_PACKET[3]传入相应的ModuleSubFunction;
5.各ModuleFunction根据需要直接调用ModuleAPIFunctions。
ETM_PACKET解析主流程图如下:
3.3.ETM打包流程
在执行完相应的功能后,各子功能函数将获取的返回值保存在ETM数据包的Data域中,同时向上一级返回状态信息。
最终,在etm_dispatch函数调用模块的入口函数完成后,ETM_PACKET中保存了需要返回到PC的数据,它与入口函数调用前的区别主要是:
其中的Data数据发生了变化,而mid,fid,checksum等都没有变化。
此外入口函数还返回了执行功能函数过程中的执行状态。
这些所有的数据信息都需要进行适当的处理后,返回到PC端。
因此,定义了一个T_ETM_PKT数据结构,该结构保存在etm_struct.h中。
对这些信息进行有效的保存。
typedefstruct
{
unsignedshortsize;//sizeofdata[]=etm_dispatch().nlen
intindex;//indexintodata[]-forput()/get()functions
unsignedcharmid;//moduleidentifier
unsignedcharstatus;//thereturnstatus
//NOTES:
data[ETM_PACKET_SIZE]:
-mid-statusaddbyxhlee6oct.2004
//data[0]=fid;data[1]=param;data[2...]=registeraddress/value;data[end]=cksum
unsignedchardata[ETM_PACEKT_SIZE];
}T_ETM_PKT;
其中,mid、status和data构成了向PC端返回的数据。
将ETM_PACKET中的数据信息按照T_ETM_PACKET定义的结构进行保留。
其中mid在etm_dispatch中解析得出,status、data和size为模块的入口函数返回,index为访问T_ETM_PACKET时提供的索引值,初始值赋为0即可。
此处cksum重新进行计算后赋值。
由此,我们可以将保存在结构T_ETM_PACKET中的数据返回,从而完成一个测试例程。
问题:
目前,返回数据包进行了重新的设计定义,在此为省去不必要的麻烦,拟考虑将返回数据直接保存到传入的变量中。
目前这项工作尚未进行,还有待协商、尝试。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- ETM 解析 打包 设计 文档