RT-Thread AT组件源码分析(含修改、以EC20为例)

本文详细介绍了RT-Thread中AT组件的各种设置,包括调试日志输出、RAW格式通信数据打印、AT初始化选项,以及GPRS网络注册状态检查。特别关注了如何在开发和调试过程中启用和关闭特定功能以优化性能和避免影响关键功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 AT组件设置

路径:RT-Thread Settings / 组件 / 网络 / AT命令

【使能调试日志的输出】:开启后可以看到日志级别为debug的相关日志。

【使能打印通信数据的RAW格式】:开启后可以看到每次执行的 AT 指令以及返回的执行结果。下图为开启后,运行中的打印数据左侧为原始hex数据,右侧为hex数据的ASCII形式

使用建议:

建议在开发、调试、故障排查、故障复现时开启【使能打印通信数据的RAW格式】

由于远程升级过程中数据量巨大且这里是同步打印,会严重影响远程升级功能,发布正式版本、无人值守的现场调试版本必须关闭此选项

AT软件包设置

路径:RT-Thread Settings / 软件包 / IoT-物联网 / AT设备 / 移远EC20

【使能在线程中初始化】:

关闭:AT初始化将在RT-Thread的main函数前,系统初始化中进行,这种情况下AT初始化将非常耗时(初始化失败还会重试5次),从设备上电到程序正常运行(屏幕点击可操作)约需要2分钟。

开启:AT初始化需要自己创建线程进行,从设备上电到程序正常运行耗时短,但是这样会与应用程序中判断离线的逻辑存在一定的冲突。

【电源引脚、电源状态引脚】-1表示不配置,建议不使用软件包控制引脚,最好是在在应用程序中配合应用层联网逻辑控制4G模组得电断电

GPRS网络注册状态检查

AT组件中会自动创建一个网络注册状态检查线程,使用 “AT+CGREG?” 指令进行GPRS网络注册状态的检查,并根据指令返回的结果修改网卡设备的标志位。

线程的入口函数是 ec20_check_link_status_entry(packages/at_device-v2.0.4/class/ec20/at_device_ec20.c),该线程每间隔 EC20_LINK_DELAY_TIME毫秒(当前版本为30s)发送一条 AT 指令进行 GPRS 网络注册状态的检查,并根据返回的结果在函数 netdev_low_level_set_link_status() 中修改 n

### RT-Thread OS 中 EC20 模块复位流程 在 RT-Thread 操作系统中实现 EC20 模块的复位操作,通常涉及以下几个方面: #### 1. 初始化阶段配置回调 通过 `config_cb` 的特性,在初始化过程中可以通过自定义逻辑来处理特定事件。如果需要在启动时完成某些硬件初始化工作,则可以在 `__rt_lib_init` 函数中定义相关内容[^3]。 对于 EC20 复位而言,可能需要在此处设置 GPIO 或其他外设资源用于控制模块的状态切换。如,分配并初始化一个专门负责复位信号输出的引脚。 ```c #include <rtthread.h> #include <board.h> void rt_hw_ec20_reset(void) { /* 假设 EC20_RESET_PIN 是预定义好的 GPIO */ rt_pin_mode(EC20_RESET_PIN, PIN_MODE_OUTPUT); /* 执行低电平触发复位动作 */ rt_pin_write(EC20_RESET_PIN, PIN_LOW); rt_thread_mdelay(100); // 等待一段时间确保复位生效 /* 拉高结束复位状态 */ rt_pin_write(EC20_RESET_PIN, PIN_HIGH); } /* 将上述函数注册到 __rt_lib_init 调用链路中 */ INIT_BOARD_EXPORT(rt_hw_ec20_reset); ``` 此处代码展示了如何利用 RT-Thread 提供的基础 API 来管理 GPIO 并执行简单的高低电平变化以达到复位目的。 #### 2. 配置加载后的额外调用支持 根据描述提到的内容,“an extra call to config_cb...is generated after config_load”,这意味着即使整个配置文件解析完毕后仍然有机会再次介入程序流做进一步调整[^1]。因此也可以考虑在这个时间点重新确认或者修正之前设定过的参数值,比如校验是否成功完成了对 EC20 设备的实际物理层面上的操作。 不过需要注意的是,这种机制更适用于那些依赖全局变量存储中间结果的情况;而对于像这里讨论这样直接作用于外部设备的动作来说,往往还是推荐放在更加显式的初始化入口去做更为合适一些。 #### 3. 编译构建相关说明 当所有源码编写完成后就可以按照常规方式来进行项目整体编译了。“键入 'make' 可以开始编译固件。” 这句话给出了具体指令提示[^2]。只要环境搭建无误并且 Makefile 文件正确包了新增加的部分,理论上就能够顺利生成最终可烧录镜像。 --- ### 总结 综上所述,在 RT-Thread 下针对 EC20 LTE Cat-M/NB-IoT 模组实施软/硬复位主要依靠合理安排不同生命周期钩子位置上的任务以及妥善运用框架本身所提供的各类工具集达成目标效果。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值