Toggle navigation
首页
问答
文章
积分商城
专家
专区
更多专区...
文档中心
返回主站
搜索
提问
会员
中心
登录
注册
rt-smart
ART-Pi Smart
RIL(Radio Interface Layer)
[ART smart 开发板] 移植RIL到ART-Smart(一)概述和驱动
发布于 2022-05-14 16:47:10 浏览:1326
订阅该版
[tocm] # 简介 在移动网络通信中,尤其是智能手机,平板等智能设备中,RIL是一个非常重要的组件,RIL使各种无线语音和数据应用成为可能。RIL(Radio Interface Layer)工作在PPP、TCP/IP协议之下,负责数据的可靠传输、AT命令的发送以及response的解析。 RIL的位置处于无线基带系统的协议栈之上,通信Framework之下。由于RIL隐藏了硬件上的一些细节,OEM厂商可以根据自己的需要将不同型号的无线modem集成到它们的产品之中。 # 特征 以Android ril为例,一般分为为上层framework或应用提供API接口的RILJ,和守护进程rild组成。rild主要管理modem channel,初始化modem以及mode的状态维护。 RT Smart是一个具有完整独立进程的智能操作系统,并且已经实现了大量POSIX和System V接口,能够很方便的将linux下的组件移植过来,利用前人搭的梯子迅速的丰富自己的生态。  # 项目综述 本次项目主要致力于开展RT Smart上通信组件及应用的移植和开发工作,大题包含以下几个部分的工作,计划分阶段完成: 1. 移植ril,以完成不同vendor modem的适配,屏蔽AT命令,协议,通信接口及方式之间的差异 2. 基于ril完成modem的状态初始化和守护,向上提供统一的接口,包括通话、短信、数据、SIM和网络信息等。 3. 评估一套适用于通信应用的图形开发库,如其他开发者已经移植完成则直接使用,如没有合适的就移植。 4. 做出一系列应用demo,实现电话接打挂查,短信收发(TXT和PDU)。数据网络注册、网络状态监测等基本功能。 # 移植RIL Android上的ril大多涉及vendor的商业机密,所以一般会有一部分闭源,而且Android提供的RILJ接口大多是适用于java应用,而且rilJ与rild交互也使用用了很多Android特性,移植难度比较大,必要性也不高。经过一段时间的调研,最终选定一套开源的,针对linux的ril进行移植。 [Linux ril开源组件 github](https://github.com/keipy/linux-rild/) 这套ril使用select对modem设备进行监控,可以支持通过串口和USB等方式挂载到操作系统的通信模组。其实也可以支持AP+CP在一个chip的soc,但是目前市面上还没有厂商愿意将整个soc全部开放出来。 rild中通过共享内存把modem的信息共享出来,任意的进程都可以通过加载这部分共享内存来获取modem信息,比如注网状态,sim卡状态等。 提供了一个lib用于实现应用和rild直接通信,其中AT命令和返回结果主要通过消息队列的方式传递。 rild默认开启两个线程,端口读取线程和主线程,两个线程之间的消息传递和同步也是通过消息队列实现的。 # 添加串口和重新编译内核 ## 硬件连接 当前官方出厂的firmware中只开启了一个串口uart0,用于实现console。所以第一步需要再配置一个串口供modem使用。 通过查看datasheet,uart3已经在J7引出。   ## 配置uart驱动 使用menuconfig工具配置uart3为enable  保存退出,重新编译内核  先临时加载到ram运行一下,看是否成功  值得注意的是,这里的串口体现在设备符号实际是uart2,这是因为原理图和工程配置中都是以1为初始索引的,而设备付是以0为初始索引的。 ## 替换kernel 使用imx文件运行只是临时加载到了内存,断电后不能保存。之后的开发还是要基于这个kernel,所以需要把kernel固化烧写到flash。依旧是使用Vscode插件,首先下载kernel   执行命令 ``` cd kernel cp rtthread.bin rethread.bk cp kernel.bin rtthread.bin` ``` 重启,kernel就替换成功了 # 代码 [Linux ril开源组件 github](https://github.com/keipy/linux-rild/) [我的RT-Thread Smart开发仓库 gitee](https://gitee.com/yu-wang-yy/ART-Pi-smart/) # 总结 1. 这一步的难度较低,主要是熟悉环境的问题。 2. 推荐使用VScode插件,相比于使用scons,无论编译内核还是应用都要顺利很多。 3. 串口驱动配置索引和原理图不对应这个还是比较别扭的。 4. udb下载程序在经过了熊大一波优化以后好用了不少,我是使用板载的wifi模块连接无线使用的,相比连接网线来说方便不少(主要还是路由器离我太远),有同样痛点的同学可以试一试。
0
条评论
默认排序
按发布时间排序
登录
注册新账号
关于作者
AngerCoke
这个人不懒,主要是真的不想写什么
文章
10
回答
2
被采纳
0
关注TA
发私信
相关文章
1
rt-smart发布时间
2
rt-smart qemu-vexpress-a9 编译报错
3
rt-smart分支编译rasp4-32bsp报错
4
rt-smart qemu-vexpress-a9 win10编译脚本问题
5
rt-smart qemu-vexpress-a9 linux 下crtl+c
6
rt-smart + pthread 编译报错
7
rt-smart的rt_channel实现问题
8
关于rt-smart的musl-libc
9
RT-Smart Windows 编译 qemu-vexpress-a9 出错
10
用户程序在RT-Smart存在的方式
推荐文章
1
RT-Thread应用项目汇总
2
玩转RT-Thread系列教程
3
国产MCU移植系列教程汇总,欢迎查看!
4
机器人操作系统 (ROS2) 和 RT-Thread 通信
5
五分钟玩转RT-Thread新社区
6
【技术三千问】之《玩转ART-Pi》,看这篇就够了!干货汇总
7
关于STM32H7开发板上使用SDIO接口驱动SD卡挂载文件系统的问题总结
8
STM32的“GPU”——DMA2D实例详解
9
RT-Thread隐藏的宝藏之completion
10
【ART-PI】RT-Thread 开启RTC 与 Alarm组件
热门标签
RT-Thread Studio
串口
Env
LWIP
SPI
AT
Bootloader
Hardfault
CAN总线
FinSH
ART-Pi
DMA
USB
文件系统
RT-Thread
SCons
RT-Thread Nano
线程
MQTT
STM32
RTC
rt-smart
FAL
I2C_IIC
UART
ESP8266
cubemx
WIZnet_W5500
ota在线升级
PWM
BSP
flash
freemodbus
packages_软件包
潘多拉开发板_Pandora
定时器
ADC
GD32
flashDB
socket
编译报错
中断
Debug
rt_mq_消息队列_msg_queue
keil_MDK
ulog
SFUD
msh
C++_cpp
MicroPython
本月问答贡献
RTT_逍遥
10
个答案
3
次被采纳
xiaorui
3
个答案
2
次被采纳
winfeng
2
个答案
2
次被采纳
三世执戟
8
个答案
1
次被采纳
KunYi
8
个答案
1
次被采纳
本月文章贡献
catcatbing
3
篇文章
5
次点赞
lizimu
2
篇文章
9
次点赞
swet123
1
篇文章
4
次点赞
Days
1
篇文章
4
次点赞
YZRD
1
篇文章
2
次点赞
回到
顶部
发布
问题
投诉
建议
回到
底部