Android 6.0 适配4g模组


文章目录

  • Android 6.0 适配4g模组
  • 一、资料
  • 二、Android RIL Architecture
  • 三、命令文件路径(系统已有跳过)
  • 四、库移植路径
  • 五、启动文件配置服务
  • USB
  • 串口
  • 六、修改rild.c
  • 七、权限
  • SELINUX(如果系统中已有,可不用添加)
  • 八、小结



本次移植的是Quectel的4G模组EC200S-CN,其实具体型号不重要,基本上都是通用的步骤,只不过不同型号芯片的RIL库不一样,但这个都是编译好的,我们不需要去关心,直接放到指定位置即可;

一、资料

RIL库源码一般是不开放的,我们需要厂家提供给我们so库(根据系统位数选择)和指导文档;如下图:

android 4g android 4g模块框架_4G


android 4g android 4g模块框架_Android_02


上图绿色框内的是通用命令(chat ip-up ip down),如果系统已经集成过了,可不再添加,主要把 libreference-ril.so 放到指定位置;

二、Android RIL Architecture

大致明了RIL的框架即可,不需要深究;

android 4g android 4g模块框架_android 4g_03

三、命令文件路径(系统已有跳过)

  • 参考下一步库文件的拷贝代码,里面有写,这里只说明其具体路径;

四、库移植路径

  • RIL 库放到下图写的路径中,64位系统放到 /system/lib64 , 32位系统放到 /system/lib 下面;
  • 具体代码示例
  • 路径 android/device/softwinner/产品名/产品名.mk
  • 这部分代码可以将需要的文件,拷贝到目标板指定路径,如果chat ip-up ip-down 系统中没有,可以参考下面代码
# mobile Quectel one
PRODUCT_COPY_FILES += \
    device/softwinner/tulip-ads/mobile/quectel/libreference-ril.so:system/lib64/libreference-ril.so \
    device/softwinner/tulip-ads/mobile/quectel/chat:system/bin/chat \
    device/softwinner/tulip-ads/mobile/quectel/ip-down:system/etc/ppp/ip-down \
    device/softwinner/tulip-ads/mobile/quectel/ip-up:system/etc/ppp/ip-up

五、启动文件配置服务

  • 命令和RIL 配置好后,就看怎么启动使用了,在安卓的启动文件中,添加系统启动服务和添加一些必要权限即可;
  • 模组有串口通信,有USB通信,这里仅着重介绍串口的,具体依据硬件设计;

USB

android 4g android 4g模块框架_android_04

串口

android 4g android 4g模块框架_4G_05


android 4g android 4g模块框架_Android_06

  • 具体代码示例
  • 路径:android/device/softwinner/tulip-ads/init.sun50iw1p1.rc
service ril-daemon /system/bin/rild -l /system/lib64/libreference-ril.so -- -d /dev/ttyUSB2
class main
socket rild stream 660 root radio
socket rild-debug stream 660 radio system
user root
group radio cache inet misc audio sdcard_rw log
  • 添加权限
  • 路径:android/device/softwinner/tulip-ads/init.sun50iw1p1.rc
#mobile
    chmod 777   /system/lib/libreference-ril.so
    chmod 777   /system/bin/chat
    chmod 777   /system/etc/ppp/ip-down
    chmod 777   /system/etc/ppp/ip-up
  • 路径:android/device/softwinner/tulip-common/sepolicy/rild.te
  • 最后一行添加
allow rild self:packet_socket { create bind write read };

六、修改rild.c

android 4g android 4g模块框架_Android_07

七、权限

SELINUX(如果系统中已有,可不用添加)

  • 文件:a64/android/device/softwinner/tulip-ads/ueventd.sun50iw1p1.rc

八、小结

至此,4G模组适配完成,其实针对不需要深度开发公司而言,4G模组的适配底层程序员需要做的不多,不论哪个厂家的模组基本上都是这一套,如果适配过一种模组,后续如果出现模组替换非常容易,基本上只要替换RIL库即可。