AT 组件是基于 RT-Thread 系统的 AT Server 和 AT Client 的实现,组件完成 AT 命令的发送、命令格式及参数判断、命令的响应、响应数据的接收、响应数据的解析、URC 数据处理等整个 AT 命令数据交互流程。 通过AT 组件,设备可以作为 AT Client 使用串口连接其他设备发送并接收解析数据,可以作为 AT Server 让其他设...
1、RT-Thread 内核介绍 内核是操作系统最基础也是最重要的部分。下图为 RT-Thread 内核架构图,内核处于硬件层之上,内核部分包括内核库、实时内核实现。 图2.1: RT-Thread 内核及底层结构 内核库是为了保证内核能够独立运行的一套小型的类似 C 库的函数实现子集。这部分根据编译器的不同自带 C 库的情况也会有...
线程控制块(结构体)rt_thread,使用了内核对象块,是重写的。 看来,还是不要直接改基础的内核控制块。 要改rt_object的结构体大小,其他对象派生的对象,都要注意下。 总结 通过打印rt_object等结构体的大小,了解了rt_object的基本构成。 基本了解到了其他内核对象,如rt_thread(线程控制块),rt_timer(定时器控制块)...
rt_list_tsuspend_thread;/**< threads pended on this resource */ }; //ipc.c 和rt_mq_init()函数一起定义的; //rt_mq_init()静态创建mq结构体,rt_mq_create()动态创建mq结构体;demo里用的动态创建的; #ifdefRT_USING_MESSAGEQUEUE structrt_mq_message { structrt_mq_message*next; }; ...
thread: stack overflow 经过调试,发现是线程结构体引起的对齐问题。 看来,还是不要直接改基础的内核控制块。 要改rt_object的结构体大小,其他对象派生的对象,都要注意下。 总结 通过打印rt_object等结构体的大小,了解了rt_object的基本构成。 基本了解到了其他内核对象,如rt_thread(线程控制块),rt_timer(定时器...
rt-thread的pin驱动为上层应用提供两套不同的API,一套是对接设备驱动框架。一套是封装好的API,用户层可以直接使用。接下来我们来分析一下这两套API的使用,以及实现。 pin框架层次 用户访问的方式的接口不同,访问的层次是不一样的。 层次结构如下: 从上面的图可以看出,对于不同芯片,用户层的接口是统一的,而对于...
RT-Thread 中管理邮箱的数据结构为邮箱控制块,有结构体struct rt_mailbox表示。另外,rt_mailbox_t表示的是邮箱的句柄,即指向邮箱控制块的指针。邮箱控制块结构体定义如下: struct rt_mailbox { struct rt_ipc_object parent; /* 继承自 ipc_object 类 */ ...
线程控制块就是一个结构体,描述了线程里面的所有信息,例如优先级、线程名称、线程状态等,也包含线程与线程之间连接用的链表结构,线程等待事件集合等。 我们来仔细看一下这个结构体。 代码语言:javascript 复制 /* 线程控制块 */struct rt_thread{/* rt 对象 */char name[RT_NAME_MAX];/* 线程名称 */rt_uin...
线程是以功能划分的程序单元,该程序单元的所有参数囊括在唯一对应的线程结构体中;thread在其他rtos中也被称为task; 3.1 线程结构体 rt_thread 线程结构体存储当前线程的所有参数;对于线程的架构理解可以以线程结构体作为线索来追踪; ...
对象(object)结构体 对象可以派生具体的对象 导火索 今天,想仔细看看RT-Thread 的内核的对象,基本上都是结构体,看看结构体的大小 单片机的程序,一般短小精悍是每个嵌入式软件工程师追求的,实现相同功能,占用最少资源,意味着硬件成本会进一步降低。 编写一个函数,打印一下rt_object 等对象的结构体占用的内存RAM大小。