adroid通信模块ril.doc

第一部分 简介 简单介绍性部分: Android电话系统围绕底层使用Modem硬件来搭建,提供呼叫、短信和网络连接功能,其中modem也称为基带。 Modem驱动程序包含在Linux内核层中,所以3G/4G模块的搭建其实就是电话系统的搭建 主流3G/4G模块:主要分有 内置(集成在处理器中如高通等,高通拥有相关基带的专利,内置模块主要通过共享内存与处理器通信), 外置(较常见,大多通过usb转串口接口并利用AT命令与处理器通信,usb串口一般使用标准的驱动,AT命令由Hayes公司发明,一种是调制解调器命令语言每条命令以AT (也有一些笔记本专用的接口类型如PCIE和NGFF,手机上的LGA,工业用B2B等等) 对与目前的通信模块来说,都已经非常成熟,有有着接口简单和统一的软件接口一般大多数模块装上SIM卡直接上电即可完成初始找网、 网络注册等工作。 框架部分主要是Android: 1 电话系统大体框架(图1):分三大层,硬件(连接modem设备),Android系统(主要包括了Linux内核层,运行库层和Framework层),平台API(即再往上为应用层) 图(1)电话系统大体框架 2.电话系统部分结构图(2):具体实现自下到上:Modem驱动,RIL库 、RIL守护进程,电话JAVA框架和电话应用(其中电话系统部分无JNI) Kernel Space 属于驱动层在内核中实现,一般分为AT命令通道和数据通道两路接口。 RIL层:贯穿Android的内核层至应用层,由三部分组成:RIL守护进程(本质是rild可执行程序,开机通过init启动,与framework层主要通过socket来进行)、 libril库和ril实现库(电话层硬件抽象层)。主要负责负责数据的可靠传输、AT命令的发送以及response(来自modem)的解析 图(2)电话系统部分结构图 3.RIL接口下层结构(图3)(更细化的下层) ril实现库的接口非常复杂,需要处理的命令,相关结构体比较多,其接口主要定义在 hardware/ril/include/telephony 目录的ri.h中。 rild socket:与框架层进行通信 RIL_Env: 主要用于请求完成函数、上报消息响应函数和周期行处理函数三个功能。 RIL_RadioFunctions: RIL_REQUEST: RequestCompete: UnsolicitedResponse: RIL_UNSOL: (ril硬件抽象层主要实现 ril命令与AT命令的转换。) (电话功能移植的两大部分:Modem驱动和ril硬件抽象层,移植需要注意的问题是省电,因为Modem省电策略复杂,低功耗模式下还要处理来电或短信等唤醒操作。) 图(3)RIL接口下层结构 Linux部分(具体实现部分): Linux部分(部分与Android相同): 1.drivers/usb/serial/option.c #define XXXX_OPTION_VENDOR_ID XXX (添加PID和VID) #define XXXX_OPTION_PRODUCT_COLT XXX 2.(外置插在usb上的话)usb_modeswitch 插入的3G/4G模块被识别成存储设备,用usb_modeswitch转成串口 3.在static struct usb_device_id option_ids[] = {… … }; (结构结构体中加入加入ID) {USB_DEVICE(OPTION_VENDOR_ID,OPTION_PRODUCT_COLT) }, … {USB_DEVICE(XXXX_OPTION_VENDOR_ID ,XXXX_ OPTION_PRODUCT_COLT) }, (插上3G/4G模块上电后会出现两个端口:/dev/ttyusb0 和/dev/ttyusb1 一个用于数据一个用于命令.)

您可能关注的文档

文档评论(0)

1亿VIP精品文档

相关文档