记录 RT-Thread netdev 结构体与 lwip 结构体不匹配 bug 的调试过程
本文主要记录在使用 RT-Thread Netdev 组件的时候遇到的一个结构体不匹配的 bug。
背景本次 bug 只要涉及 4 个文件:
netdev.h:定义了 struct netdev 数据结构
netdev.c:netdev 源码实现,这里主要涉及 netdev_low_level_set_link_status 接口
netif.c:lwip 网卡相关接口,这里主要涉及 netif_set_link_up 接口
ethernetif.c:lwip 网卡初始化部分代码。这里注册 netdev 设备,涉及 netdev_add 接口
netdev 数据结构如下:
struct n
NB-IOT MT2625 TCP 连接测试
MT2625 NB-IOT TCP 测试(基于 MTK MT2625 NB-IOT AT 指令)本文涉及的 AT 命令是基于 MTK 官方提供的 MT2625 NB-IOT AT 指令,非 移远(如 BC26)和中移物联网(如 M5311)提供的 AT 指令。
另外,本文仅使用 AT 指令测试 MTK MT2625 AT 固件的网络连接,并不对 AT 指令做详细说明,如有需求请阅读 MTK 官方提供的 MT2625_NB-IOT_AT_Command_Specification.pdf 和 LinkIt_MT2625_Proprietary_Non-Modem_AT_Command_Manua
TCP Client 客户端示例程序
TCP client 示例程序
最近总有人问我要 TCP 的客户端代码,就拿手上用来测试的代码分享出来吧。
关键词:
TCP 客户端代码
TCP client 代码
LWIP TCP 客户端程序
LWIP TCP client 代码每一次调试网络相关的代码都需要一段最简单的 TCP 测试程序,后来就把这个程序记录到了代码片段,今天在自己的博客里再次记录下,希望更方便查找。
简单的 TCP 客户端程序源码本代码在 RT-Thread OS 下测试使用,并验证通过。
如果定义了 RT_USING_SAL 宏,那么使用 RT-Thread SAL 组件提供的 socket 封装,需要引用 SAL
不同编译器下 errno 与 RT-Thread 的对接
支持的编译器RT-Thread 支持的编译器有 newlib/minilibc/dlib/armlibc 的支持。
在开启了 RT_USING_LIBC 后,GCC 编译使用 newlib
未开启 RT_USING_LIBC 时,GCC 编译使用 minilibc
dlib 是 RT-Thread 针对 IAR 编译器的移植适配(使用标准库接口时注意开启 RT_USING_LIBC)
armlibc 是 RT-Thread 针对 MDK 编译器的移植适配
errno 的重定向通常 errno 的声明在 errno.h 文件中。errno.h 在 RT-Thread 中的引入顺序如下所示:
灵活的按键处理程序 FlexibleButton
灵活的按键处理程序 FlexibleButton,C程序编写,无缝兼容任意的处理器,支持任意 OS 和裸机编程。
前言正好工作中用到按键处理,需要处理单击、长按等按键事件,然后就造了这么一个轮子,为了以后更方便地加入其它的项目中使用,遂将其开源到 GitHub 中。
后面发现 RT-Thread 软件包里也有一个开源的按键库 MultiButton,看到这个按键库的时候,心想,完了,又重复造轮子了,好伤心 :joy:。想想,既然按键处理方式不同,而且时间已经花出去了,那就把轮子圆一圆,放到 GitHub 中,给有缘人用吧,然后就有了这个不太圆的轮子 FlexibleButton。
概述Fl