OpenHarmony中AT模块的代码理解(1) 原创 精华
1、背景
最早接触AT命令是在使用通信模块的时候,那时的AT命令的打包和解析都是自己写的函数实现,代码逻辑和框架也都不成熟,通用性也不强。现在的RTOS操作系统中也都包含了这部分的内容,比如RTT等,通用性更强,代码的逻辑性也值得我们去分析和学习。接触openharmony,发现系统代码中也包含了AT相关的业务。今天,尝试整理一下这部分代码的思路。
2、提要
1)代码路径
2)关闭AT服务
有时候自己需要使用串口做一些私有业务,不想使用原生的AT命令,比如,移植micropython,就需要关闭AT服务。关闭的方法如下:
打开device\hisilicon\hispark_pegasus\sdk_liteos\build\config\usr_config.mk
将其中的#CONFIG_AT_SUPPORT=y删除。或者使用menuconfig操作该文件关闭。
关闭宏之后,config.mk中,会判断该宏的值,
会使得AT的初始化,注册相关函数无效。
3、框架
简单的描述一下程序框架,核心内容分为接收任务和处理任务,两个任务之间通过Event事件同步。cmd_register函数用来注册我们需要解析的AT命令。
4、代码
1)数据的接收
在hi_u32 hi_at_init(hi_void)中创建了数据接收的任务。
2)数据的处理
两个任务之间通过g_at_event传递数据。buf = at_get_buf();获取数据之后,进行解析和处理。处理函数如下。
处理函数会从注册的AT命令中对比关键词,然后解析,处理,执行。
5、总结
这篇文章先整理到这里,后续会有更详细的对AT命令逻辑的分析。
后续的计划:
1)继续分析openharmony的AT命令的代码思路和关键函数的使用。
2)对比RT-Thread等其他RTOS的AT部分实现。
3)精简openharmony部分代码,移植出一套可以在其他平台使用的AT框架。
感谢楼主整理分享,期待后续计划!