ZTE ANDROID RIL驱动


0. 概述

0.1 文档概述

       本文档是提供给客户使用我司开发的 android 系统 ril 驱动的说明书,旨在指导客户快速、方便的使用安装调试我司的设备,迅速推出产品的目的;主要包括驱动说明、驱动集成方法、调试手段以及常见问题的分析等。

0.2 目的和读者

       目的:

1. 指导客户快速、方便的使用安装调试我司的设备,迅速推出产品

2. 希望能对 android 系统 ril 驱动开发 有些许帮助。

       读者:

              1. 我司 TD 数据卡 / 模块在 android 系统上的开发者和使用者

              2. android 系统驱动入门人员

        3. 我司内部测试人员。      

1. 驱动说明

1.1 驱动版本说明

       1.1.1 目录结构

              ZTE 正式发布的 android 系统 ril 驱动的文件结构图如下:

1.1.2 文件说明

       驱动版本中的文件说明:

     ******************************************************************   

       /so                                ril 驱动文件

           libreference-ril-zte-v0.1.1.so

           libril.so

       /sh                                要添加的 sh 脚本文件

              init.gprs-pppd                  启动 pppd 进程

              ip-down

              ip-up

    /c 

           tty.c                            android 系统自带的 tty.c 文件

       /chm                             用户手册        

     ******************************************************************   

1.2 功能说明

       当前驱动版本所支持的功能列表:

 

编号

功能

是否支持

001

数据

002

短信

003

电话本

004

语音

005

视频

006

彩信

 

1.3 驱动框架

       Ril 驱动的大致框架如下图 1-1 所示:

1-1 Ril 驱动框架

2. 驱动集成

2.1 添加系统组件

2.1.1 必备组件

n  Modem 驱动

普通的 3G 数据卡( modem )采用 usb 接口,对上层的功能接口是串口,

Android 系统中通常使用 usb 转串口的驱动。

n  Ppp 协议

Ril 驱动联网功能底层使用 ppp 协议创建数据链路,因此需要在内核中配置对 ppp 协议的支持。

2.1.2 Modem 驱动 添加    

普通的 3G 数据卡( modem )采用 usb 接口,对上层的功能接口是串口,在 Android 系统中通常使用 usb 转串口的驱动。

              Ppp 组件添加需要配置系统 android 系统内核,配置方法如下:

n  cd kernel

n  make menuconfig

n  device drivers--->usb support--->usb serial converter support

选中如下组件:

USB driver for GSM and CDMA  modems

选中后保存配置,重新编译内核即可。

2.1.2 p pp 组件添加

Ril 驱动联网功能底层使用 ppp 协议创建数据链路,因此需要在内核中配置对 ppp

协议的支持。

Ppp 组件添加需要配置系统 android 系统内核,配置方法如下:

n  cd kernel

n  make menuconfig

n  device drivers--->network device support--->pppp surport

选中如下组件:

ppp filtering

ppp support for async serial ports

ppp support for sync tty ports

ppp deflate compression

ppp BSD-compress compression

              选中后保存配置,重新编译内核即可。

2.2 增加设备驱动

       驱动添加步骤如下:

Ø  找到内核源码文件option.c( 一般情况下,路径在../kernel/drivers/usb/serial/option.c )

Ø  在源码中查找如下代码(蓝色部分),查找到后,添加红色部分驱动代码:

       static struct usb_device_id option_ids [] = {

              { USB_DEVICE(0x19d2, 0x1301) },

0x19d2 ZTE 厂商 ID

0x1301 M501 设备 ID

上面的 ID 根据具体的模块来定,不同的模块 ID 不同。

Ø  添加完成后,跟系统一起编译,烧入目标设备。

2.3 集成驱动文件

2.3.1 库文件

替换如下文件

libreference-ril-zte-v0.1.1.so

libril.so

      

Out/product/XXX/system/lib/ libreference-ril-zte-v0.1.1.so

Out/product/XXX/system/lib/ libril.so

Out/product/XXX/symbols/system/lib/ libreference-ril-zte-v0.1.1.so

Out/product/XXX/symbols/system/lib/ libril.so

2.3.2 sh 文件

       init.gprs-pppd 文件放于 ../system/core/rootdir/etc/ 目录下

    ip-down ip-up 文件放于 ../out/product/XXX/system/etc/ppp/ 目录下

2.4 系统配置

       Ril 驱动的使用还需要对 android 系统本身进行一些配置,如 init.rc 文件的修改, pppd 脚本的启动等,通过这些配置使得 ril 驱动能够正常的工作。

2.4.1 init..rc 文件修改

Ø  启动 ril service

service ril-daemon /system/bin/rild -l /system/lib/ libreference-ril-zte-v0.1.1.so -- -d /dev/ttyUSB*

             socket rild stream 660 root radio

             socket rild-debug stream 660 radio system

             user root

group radio cache inet misc

Ø  启动 init.gprs-pppd 脚本

service pppd_gprs /etc/init.gprs-pppd /dev/ttyUSB0

    user root

    group radio cache inet misc

    disabled

oneshot

2.4.2 启动 pppd 进程

       Android 系统 ril 驱动最终是通过调用 pppd 进程创建 ppp 数据链路的,因此需要在必要的时候启动 pppd 进程; pppd 的进程是通过 init.gprs-pppd 脚本来启动的。

       init.gprs-pppd 脚本位于版本 ../sh/ 目录下;

不同的 modom 需要配置 init.gprs-pppd 脚本中的 ttyUSB* 端口,此处 ttyUSB* 端口是指设备的 modem 口,具体视设备不同而不同。

2.4.3 设置端口属性

       Ril 驱动部分需要对设备端口进行操作,因此,在初始化的时候需要设置端口属性为可读写,具体设置内容见下文红色部分:

static struct perms_ devperms[] = {

       ….

       { "/dev/ttyUSB0",       0660,   AID_RADIO,      AID_RADIO,      0 },

    { "/dev/ttyUSB1",       0660,   AID_RADIO,      AID_RADIO,      0 },

    { "/dev/ttyUSB2",       0660,   AID_RADIO,      AID_RADIO,      0 },

    { "/dev/ttyUSB3",       0660,   AID_RADIO,      AID_RADIO,      0 },

    { "/dev/ttyUSB4",       0660,   AID_RADIO,      AID_RADIO,      0 },

    { "/dev/ttyUSB5",       0660,   AID_RADIO,      AID_RADIO,      0 },

       { NULL, 0, 0, 0, 0 },

};

上述结构体位于文件 devices.c 中, devices.c 文件位于目录 ../system/core/init/ 下。

2.4.4 启动 init.gprs-pppd 可执行权限

       Ril 驱动在数据联网阶段需要执行 init.gprs-pppd 脚本,因此在初始化阶段设置 init.gprs-pppd 脚本为可执行权限,设置方法见下文红色部分:    

static struct fs_path_config android_files[] = {

       ….

{ 00777, AID_ROOT,      AID_SHELL,     "system/etc/init.gprs-pppd*" },

….

};

上述结构体位于文件 android_filesystem_config.h 中, android_filesystem_config.h 文件位于目录 ../system/core/include/private/ 下。

2.5 pppd 修改

       Android 系统 ril 驱动流程操作的是设备的 AT 口,至于 modem 口的操作,如 ATD 命令的下则需要修改 android 系统 pppd 程序中的 tty.c 文件来完成。

       tty.c 位于 ../external/ppp/pppd/tty.c

修改方法如下:

Ø  直接将随驱动一起提供的 tty.c 替换掉 ../external/ppp/pppd/tty.c 文件即可。

Ø  重新编译 pppd 模块。

      

3. 调试方法

3.1 log 方法

      3.1.1 抓取 ril 模块 log

              连接好设备的调试线后,在 terminal 中按如下操作:     

Adb shell

Logcat b radio &

      3.1.2 抓取 android 系统 log

              连接好设备的调试线后,在 terminal 中按如下操作:     

Adb shell

Logcat &

4. 常见问题分析

4.1 设备驱动问题

      4.1.1 找不到设备

             

问题描述:

ls /dev/ttyUSB* 找不到设备

问题原因:

1. 内核驱动没有配置

解决方法:

1. 配置内核驱动,方法参加 2.1.2

问题原因:

2. 驱动中没有添加设备的 vid pid

解决方法:

2. 添加设备驱动,方法参加 2.1.2

 

4.2 pppd 问题

       问题描述:

Ril 启动后, ps 查看不到 pppd 进程

问题原因:

1. init.gprs-pppd 没有设置为可执行权限

解决方法:

1. 设置 init.gprs-pppd 脚本的可执行权限,方法参加 2.4.2

 

 

4.3 ril 驱动功能问题

4.3.1 联网功能

      

问题描述:

驱动集成后无法联网成功

问题原因:

1. 找不到设备

解决方法:

1. 配置内核驱动,方法参加 5.1

问题原因:

2. pppd 没有启动

解决方法:

2. 启动 pppd 进程,方法参加 5.2

问题原因:

3. modem 端口指定错误

解决方法:

3. 修改 init.gprs-pppd 脚本中的端口为 modem

问题原因:

4. AT 端口指定错误

解决方法:

4. 修改 init.rc 脚本中的 rild serverice 启动参数中指定的端口为 modem

问题原因:

5. APN 未设置

解决方法:

5. 启动 android 系统后了,在 setting 模块中设置 APN 参数为 cmnet 等移动网络 apn


附录 A :参考及说明

Ø  图例说明:

本文档中未说明来源的图片均为 ZTE 所有。

图片编号

内容说明

来源

作者

采用目的

1-1

Ril 驱动框架

网络

未知

用于简要的说明 ril 驱动的框架

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

附录 B :修改日志

编号

修改日期

问题描述

修改人

修改内容

1

2010-9-8

文档创建

李焰峰

文档创建

2

2010-9-21

添加 2.4.3 2.4.4

李焰峰

修改系统配置

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值