TI平台初级培训.docx
《TI平台初级培训.docx》由会员分享,可在线阅读,更多相关《TI平台初级培训.docx(34页珍藏版)》请在冰豆网上搜索。
![TI平台初级培训.docx](https://file1.bdocx.com/fileroot1/2023-1/6/beec96d1-da12-4845-801d-7f39c121dbbb/beec96d1-da12-4845-801d-7f39c121dbbb1.gif)
TI平台初级培训
LOCOSTO+和Neptune平台
初级培训
1.序言
该课程主要介绍美国德州仪器公司的Locosto和Neptune平台的框架,以及目前TI和T09项目分别在这两个平台上主要功能的流程。
经过培训的人员通过对平台框架和这些流程的理解,能够很快了解,掌握主要模块的一些接口流程,并能够在这两个平台上对这些模块进行修改或编写有关的代码,同时举一反三,能够很快的上手其他模块。
由于locosto和Neptune平台MFW模块的主要功能和构造都基本一样,因此只需要介绍其中之一即可。
1.概述
1.1.LOCOSTO+平台概述:
Locosto是美国德州仪器(TI)为无线移动终端(手机)而设计的一种单芯片低成本GSM/GPRS解决方案的平台。
Locosto+是在Locosto平台集成了多媒体芯片的一个解决方案。
TI集成RF的单芯片方案Locosto,以及集成多媒体处理器的Locosto+
1.2.LOCOSTO+平台整体概述
Locosto+平台目前能够看到的主要分3大模块,应用控制接口(ACI),MMI框架结构(MFW),和人机界面(MMI)。
其中ACI模块只有头文件,无源代码。
1.3.Neptune平台概述
Neptune平台是美国德州仪器(TI)为无线移动终端(手机)而设计的一种高端多媒体芯片。
处理器TINeptune的芯片采用130nm工艺,基于ARM9+TI的DSPC55核GSM数字基带芯片,多媒体处理能力达到了260MHz
2.整体框架
MMI:
指的是人机界面的程序,即,该程序实现后,用户可以直观看到,感受到.
MFW:
构建MMI框架的工作区,为MMI程序提供基本构建接口.类似Bridge的中间层和适配层这两者的功能.
ACI:
应用控制接口,主要是MFW与AT命令或硬件驱动之间的通讯.
驱动:
主要是外围硬件的驱动.(包括LCD,KEY,audio,camera等)
2.1.整体框架图:
2.1.1.原有的框架
2.1.2.目前的框架
3.MFW模块介绍和ACI接口的命名规则。
3.1.MFW框架
MFW主要包括3个大模块:
针对MMI界面的应用(APP),针对SIM卡和网络处理(SIM),针对硬件驱动(DRIVER).
3.2.MFW模块中主要文件功能大概描述:
文件名
文件总体功能描述
说明
Mfw_acie.c
Aci扩展功能
根据目前代码,没看出有什么用处。
Mfw_aud.c
录音处理
目前该文件没有使用
Mfw_band.c
收音机处理
目前该文件没有使用
Mfw_bt.c
蓝牙处理
目前该文件没有使用
Mfw_bta.c
蓝牙附加功能
目前该文件没有使用
Mfw_bte.c
蓝牙应用界面处理功能
目前该文件没有使用
Mfw_bt_ag.c
蓝牙音频网关处理
目前该文件没有使用
Mfw_bt_dg.c
蓝牙数据网关处理
目前该文件没有使用
Mfw_bt_dm.c
蓝牙设备管理
目前该文件没有使用
Mfw_bt_flash.c
蓝牙数据库管理
目前该文件没有使用
Mfw_bt_ft.c
蓝牙文件管理
目前该文件没有使用
Mfw_cam.c
Camera接口文件
和硬件方面的接口
Mfw_camapp.c
Camera接口文件
给MMI使用的
Mfw_cb.c
处理回调函数
Mfw_cm.c
通话管理
目前该文件没有使用
Mfw_cnvt.c
字符串编码类型转换
目前该文件没有使用
Mfw_edt.c
编辑器
目前该文件没有使用
Mfw_ffs.c
文件管理系统接口
Mfw_fv.c
文件浏览接口
目前该文件没有使用
Mfw_icn.c
Icon图标接口
目前该文件没有使用
Mfw_iv.c
image图片接口
目前该文件没有使用
Mfw_kbd.c
键盘处理接口
Mfw_lng.c
语言接口
目前该文件没有使用
Mfw_midi.c
midi函数接口
Mfw_mmi.c
Demommi接口
目前该文件没有使用
Mfw_mnu.c
Mmi菜单接口
目前该文件没有使用
Mfw_mp3test.c
Mp3接口
Mfw_nm.c
网络管理接口
Mfw_phb.c
电话本接口
Mfw_sat.c
STK接口
Mfw_sim.c
PIN码和SIM信息的接口
Mfw_sms.c
短信管理接口
Mfw_ss.c
辅助服务管理接口(USSD等)
Mfw_str.c
字符串操作接口
插入,删除,长度等
Mfw_td.c
时间日期接口
Mfw_tim.c
定时器
Mfw_utils.c
普通的公共接口
目前该文件没有使用
Mfw_win.c
窗体接口
目前该文件没有使用
3.3.ACI接口命名规则:
ACI接口主要是AT命令,因此其接口命名也是以AT命令来命名。
命名规则:
AT命令类型+AT+功能描述
如:
sAT_PlusCPIN
该函数是设置PIN码
AT命令类型有如下几种:
设置命令:
sAT开头
询问命令:
qAT开头
检验命令:
tAT开头
发现结果命令:
rAT开头
4.重要模块设计流程
4.1.介绍目前项目的修改情况
S1193项目修改情况:
该项目把MFW模块中不需要的功能保留不使用,其中MFW模块中的APP模块里占用大量FLASH和RAM的代码屏蔽掉.
MFW模块中需要改动的函数,该函数如果能够移植到L1层(适配层)的文件,则移植过来并做修改,如果不能移植的则保留,并在其函数内进行适当的修改.对于SIM模块里能够移植的函数,则移植到L1层(适配层),同时把MFW模块中的该函数屏蔽.
T09项目修改情况:
该项目主要还是在MFW模块中进行改动,改动大的或新增功能的函数,则把新增功能函数放到L1层(适配层),把改动大的函数中主要处理部分放到L1层(适配层)处理.L1层(适配层)做为MFW模块跟Bridge之间的接口层.
4.2.适配层的架构:
4.3.适配层重要模块的设计
4.4.介绍重要模块设计流程和函数功能
4.4.1.KEY模块
4.4.1.1.函数:
模块
文件
函数名
函数功能说明
KEY模块
Mfw_kbd.c
MfwReskbdInit(void)
按键模块参数初始化(初始化按键消息处理函数,长按键定时的时间和处理函数,repeattimer的时间和处理函数)
voidKeySignalProcess
(charv_KeyType,charv_KeyId)
按键消息处理函数
staticintLongPressDetected(U32t,void*h)
长按键定时器处理函数
staticinttoAuto(U32t,void*h)
Repeattimer处理函数(目前无用)
L1_kbd.c
voidl1_kbd_event_process
(u8v_KeyId,t_key_types_KeyType)
适配置层把按键信息发送到bridge的消息的函数
voidregist_kbd_msg
(U16type,call_back_fn_tfn)
注册消息
voidl1_get_msg
(U16type,call_back_fn_t*fn,U32*param)
获取已注册消息的回调函数
intl1_msg_cover(MfwEvtv_Msg,MfwHndp_Data)
翻盖消息处理函数
Mfw_mme.c
intglobalMme(MfwEvte,MfwHndpara)
翻盖,免提,电池状态等消息处理函数
4.4.1.2.流程:
1.初始化参数(定时时间、处理函数)
2.判断按键是否是pressed类型,是则转4,否则3
3.把released类型消息发送到bridge
4.把pressed类型消息发送到bridge,并启动长按键定时器
5.定时器时间到则把long_pressed类型发送到bridge.
4.4.2.LCD模块
4.4.2.1.函数:
模块
文件
函数名
函数功能说明
显示模块
L1_display.c
booll1_refresh(U8no,U16x,U16y,gdc_t*gdc)
重新更新区域显示
U8l1_set_brightness(U8no,U8value)
设置亮度
U8l1_set_contrast(U8no,U8value)
设置对比度
voidl1_key_lamp_on(void)
开启键盘灯
voidl1_key_lamp_off(void)
关闭键盘灯
voidl1_lcd_lamp_on(U8no,U8value)
开启LCD灯
voidl1_lcd_lamp_off(U8no)
关闭LCD灯
voidl1_shake_on(void)
开启振动
voidl1_shake_off(void)
关闭振动
voidl1_seven_color_lamp_on(seven_color_param_t*param)
开启七彩灯
voidl1_seven_color_lamp_off(void)
关闭七彩灯
voidl1_lcd_wakeup(U8no)
LCD唤醒
voidl1_lcd_sleep(U8no)
LCD进入睡眠
无
voidLCD_Disp_Area(U8*ImageDataPtrIF,U16x,U16y,U16width,U16height);
显示区域
4.4.2.2.流程:
无(没有流程)
4.4.3.短信模块:
4.4.3.1.函数:
模块
文件
函数名
函数功能说明
短信模块
L1_sms.c
voidsms_init(void)
初始化(把MFW模块的短信)
voidl1_sms_init(void)
初始化(把L1层变量初始化)
intl1_sms_set_callback_fn(
l1_sms_call_back_fns_typecb_type,
call_back_fn_tfn)
设置短信
voidsms_phbReady_ind(void)
sms和phonebook准备好处理函数
booll1_read_card_sms_info(call_back_fn_tfn)
读短信信息
GLOBALvoidrAT_PlusCPMS(T_ACI_SMS_STOR_OCC*mem1,T_ACI_SMS_STOR_OCC*mem2,T_ACI_SMS_STOR_OCC*mem3)
设置短信存储空间结果返回处理函数
booll1_sms_sim_read_all(sms_sim_all_t*data,call_back_fn_tfn)
读所有短信
voidrAT_PlusCMGL(T_ACI_CMGL_SM*smLst)
读所有短信函数请求结果返回处理函数
voidsms_ok_CMGL(void)
所有短信请求成功的处理函数
booll1_read_sms_info(U16index,call_back_fn_tfn)
读某条短信信息
booll1_read_card_sms(U16index,call_back_fn_tfn)
读某条短信内容
voidrAT_PlusCMGR(T_ACI_CMGL_SM*sm,T_ACI_CMGR_CBM*cbm)
读短信请求结果返回处理函数
voidsms_ok_change()
读短信请求成功处理函数
booll1_write_sms_info(sms_info_t*info,call_back_fn_tfn)
写或修改短信信息
booll1_write_card_sms(sms_data_t*sms_data,call_back_fn_tfn)
写或修改短信内容
voidrAT_PlusCMGW(UBYTEindex,UBYTEnumSeg)
写短信请求
booll1_delete_card_sms(U16index,call_back_fn_tfn)
删除短信
booll1_send_sms(U8*number,
message_type_ttype,
U8*data,
U16length,
sms_region_tflag,
coding_tcode,
sms_info_head_t*info_head,
call_back_fn_tfn)
发送短信
voidl1_get_sca(U8*no)
获取短信中心号码
voidl1_set_sca(U8*no)
设置短信中心号码
voidl1_set_sms_expire(sms_expire_texpire)
设置短信有效期
voidl1_set_sms_replay(boolenable)
设置短信回执开关
voidrAT_PlusCMT(T_ACI_CMGL_SM*sm)
接收到一条新短信
voidrAT_PlusCMTI(T_ACI_SMS_STORmem,UBYTEindex,T_ACI_CMGL_SM*sm)
接收到一条新短信信息
voidrAT_PlusCBM(SHORTsn,
SHORTmid,
SHORTdcs,
UBYTEpage,
UBYTEpages,
T_ACI_CBM_DATA*data)
接收到小区广播
voidrAT_PlusCBMI(T_ACI_SMS_STORmem,UBYTEindex)
接收到小区广播信息
voidrAT_PlusCDS(T_ACI_CDS_SM*st)
接收到状态报告
voidsms_ok_cmd(T_ACI_AT_CMDcmdId)
一些设置或请求消息成功的处理函数
voidrAT_PlusCMS(T_ACI_AT_CMDcmdId,T_ACI_CMS_ERRerr,T_EXT_CMS_ERROR*ce)
一些设置或请求消息失败的处理函数
T_MFW_SMS_STATsms_get_msg_type(UBYTE*UdhData,UBYTEUdhLength)
获取短信类型
intl1_sms_set_callback_fn(l1_sms_call_back_fns_typecb_type,call_back_fn_tfn)
保存各种短信回调函数指针
intl1_sms_call_callback_fn(l1_sms_call_back_fns_typecb_type,U16fn_type,U32fn_p1,void*fn_p2)
执行各种短信回调函数
boolL1_SMSTimeDateInfo(T_ACI_VP_ABS*smsTimeDateInfo,bg_date_t*date,bg_time_t*time,BOOLflg)
短信状态转换(L1和MFW)
staticvoidL1_SMSConvertStatus(T_ACI_SMS_STAT*stat,sms_type_t*l1_sms_type,BOOLflg)
短信状态转换(L1和MFW)
staticU8l1_sms_convert_data_code(U8*indata,U32inlen,U8intype,U8*outdata,U32*outlen,U8*outtype,BOOLflg)
短信数据编码转换
4.4.3.2.流程:
4.4.3.3.获取SIM卡短信信息
1.保存回调函数指针
2.短信驱动初始化是否结束,结束转4,否则转入3
3.发送获取失败消息,退出
4.询问短信信息是否准备好了(qAT_PlusCPMS),已准备转6,
否则转5
5.发送获取失败消息,退出
6.退出,转入7(等待返回消息)
7.获得短信信息(rAT_PlusCPMS),发送获取成功消息,退出。
4.4.3.4.获取所有SIM卡短信内容
1.保存回调函数指针和数据缓冲区地址
2.发送短信列表消息(sAT_PlusCMGL)
3.退出,转入4(等待返回消息)
4.获得短信内容(rAT_PlusCMGL)
5.判断短信列表的开始ID是否有效,如果有效转7,否则转6
6.发送获取失败消息,退出,转入4或11
7.判断该短信类型,如果未知的,转入10,否则则转入8
8.根据所判断的所知的短信类型,把短信类型付值对应变量
9.转换短信状态,时间日期和电话号码。
退出,转入4或11
10.把特殊短信类型付值对应变量,退出,转入4或11
11.短信是否全部获取完成(sms_ok_CMGL)
12.发送获取成功消息,退出。
4.4.3.5.获取SIM卡某条短信信息
1.保存回调函数指针
2.判断上次读取是否有返回信息,如果没有,转入3,否则4
3.发送获取失败消息,退出。
4.判断是否获取临时缓冲区的短信,是转5,否则转8
5.保存新短信到缓冲区是否成功,如果成功转6,否则转7
6.退出
7.发送获取失败消息,退出。
8.是否发送读取短信消息成功(sAT_PlusCMGR),成功则退出,否则发送发送获取失败消息,退出。
9.获取短信内容。
(rAT_PlusCMGR)
10.判断是否为特殊短信,如果是转入11,否则12
11.发送获取短信成功消息,退出
12.把短信内容转换成UTF8编码
13.判断转换是否成功,如果成功,转入14,否则15
14.发送获取失败消息,退出。
15.发送获取短信成功消息,退出
4.4.3.6.写短信信息
1.判断index是否为零,如果是转入2,否则转入6
2.保存回调函数指针,转换短信状态
3.发送写短信内容消息(sAT_PlusCMGW),判断是否成功,如果成功转入5,否则转入4
4.发送写短信信息失败消息,退出
5.退出,转入10
6.保存回调函数指针
7.发送读短信内容消息(sAT_PlusCMGR),判断是否成功,如果成功转入9,否则转入8
8.发送短信修改失败消息,退出
9.退出
10.获取写新短信的index(sms_ok_cmd)
11.获取写新短信失败(rAT_PlusCMS)
12.发送写短信信息失败消息,退出
4.4.3.7.写短信内容
1.保存回调函数指针
2.数据代码转换(UTF8转换成UCS2或7bit)
3.转换是否成功,成功转入5,否则4
4.发送写短信失败消息,退出。
5.设置保存的数据类型(UCS2等)
6.判断是否设置成功,如果成功转7,否则转4
7.转换短信状态(已读,未读等)
8.发送写短信消息(sAT_PlusCMGW)
9.判断写短信消息是否执行,如果执行转10,否则4
10.退出,转11
11.如果写短信成功,执行(sms_ok_cmd),发送写短信成功消息,退出,否则转入12
12.执行rAT_PlusCMS,转4
4.4.3.8.删除某条短信
1.保存回调函数指针
2.判断上次删除短信操作是否完成,如果完成转4,否则3
3.发送删除短信失败消息,退出
4.发送删除短信消息(sAT_PlusCMGD)
5.判断删除短信消息是否正在执行,如果执行转6,否则3
6.删除成功,执行(sms_ok_cmd),发送删除短信成功消息,退出。
否则,执行(rAT_PlusCMS),转3
4.4.3.9.发送短信
1.保存回调函数指针
2.判断服务中心号码是否为空,为空转3,否则转4
3.发送发送短信失败消息,退出
4.判断是否特殊短信,如果是转5,否则转6
5.判断发送特殊短信消息是否执行(sAT_PlusCMGS_Gl),
如果执行退出,转10,否则转3
6.对短信进行编码
7.判断通知ACI短信的编码类型是否成功,成功转9,否则转3
8.发送发送短信消息(sAT_PlusCMGS),
9.判断发送短信消息是否执行,如果执行退出,转10,否则转3
10.如果发送短信成功,执行(sms_ok_cmd),发送发送短信成功消息,退出。
否则,执行rAT_PlusCMS,转3
4.4.3.10.获取短信呼叫中心号码
1.判断参数指针是否为空,是转2,否则转3
2.退出
3.调用获取短信呼叫中心号码(qAT_PlusCSCA)
4.判断是否执行成功,如果是转5,否则转2
5.把呼叫中心号码拷贝到参数指针里,退出
4.4.3.11.设置短信呼叫中心号码
1.判断参数指针是否为空,是转2,否则转3
2.退出
3.判断设置呼叫中心号码(sAT_PlusCSCA)和设置数据编码类型(sAT_PlusCSMP),其中之一是否失败,如果失败转2,否则转4
4.保存服务中心号码到1号位置(sAT_PlusCSAS),退出
4.4.3.12.设置短信有效期
1.判断需要设置的短信有效期是否有效,无效转2,否则转3
2.退出
3.判断查询呼叫中心号码(qAT_PlusCSCA)和查询数据编码类型(qAT_PlusCSMP),其中之一是否失败,如果失败转2,否则转4
4.修改短信有效期,重新把呼叫中心号码(sAT_PlusCSCA)和数据编码类型设置(sAT_PlusCSMP)
5.判断以上两个是否失败,如果失败,转2
6.保存服务中心号码到1号位置(sAT_PlusCSAS),退出
4.4.3.13.设置短信回执
1.判断是否开启短信回执,如果是转2,否则转2
2.设置新短信指示到基站命令(sAT_PlusCNMI)
3.判断是否成功,成功返回true,失败返回false
备注:
开启与不开启,主要是设置新短信指示到基站的函数参数设置不同
4.4.4.电话本模块:
4.4.4.1.函数:
模块
文件
函数名
函数功能说明
电话本模块
L1_card.c
voidl1_card_init()
初始化电话本(电话本所需的事件及处理这些事件的回调函数)
intcardbookevent(MfwEvte,void*para)
处理电话本事件的回调函数
booll1_get_card_pb_info(call_back_fn_tfn)
获得SIM卡内电话本信息
booll1_write_card_pb_record(card_pb_record_t*record,call_back_fn_tfn)
写电话本记录
booll1_read_card_p