rtt——线程间的通信(邮箱)
邮箱 **邮箱是实时操作系统中的一种典型的线程间的通信方式** **邮箱的通信方式除了可以一对一,也可以一对多通信,或者多对多通信** 邮箱的工作机制 在RT-thread操作系统中,邮箱是开销较低、效率较高的一种线程间通信方式。 **邮箱中的每一封邮件的容量固定为4字节(刚好容下一个32位系统的指针)** 线程或中断服务程序把一封长度为4字节的邮件发送到指定邮箱中,而其他一...
邮箱 **邮箱是实时操作系统中的一种典型的线程间的通信方式** **邮箱的通信方式除了可以一对一,也可以一对多通信,或者多对多通信** 邮箱的工作机制 在RT-thread操作系统中,邮箱是开销较低、效率较高的一种线程间通信方式。 **邮箱中的每一封邮件的容量固定为4字节(刚好容下一个32位系统的指针)** 线程或中断服务程序把一封长度为4字节的邮件发送到指定邮箱中,而其他一...
】**TCP的三次握手和四次挥手实质是TCP通信的连接和断开** **三次握手:为了对每次发送的数据量进行跟踪与协商,确保数据段的发送和接收同步,根据所接收到的数据量而确认数据发送、接收完毕后何时撤销联系,并建立虚连接 四次挥手:终止TCP连接,端开连接时,需要客户端和服务端同发送4个包已确认连接的断开** 三次握手 - **第一次握手:发送一个带SYN标志的数据包给服务端**...
**TCP/IP协议族包括了很多协议,本次我们详细介绍一些比较重要的协议** 每层协议集 应用层 **应用层常见的包括:FTP、HTTP、SMTP、DNS** FTP **ftp为文件传输协议(File Transfer Protocol,FTP)** 作为网络通信中的基础工具,ftp允许用户通过客户端软件和服务器进行交互,实现文件的上传、下载和其他文件操作(通常运行在TCP...
TCP/IP四层模型介绍 **TCP/IP协议模型是一个四层体系结构** 它包含应用层、传输层、网络层和网络接口层 我们将TCP/IP模型与OSI模型对比(OSI开放式系统互连) 应用层 应用层包含了各种不同的协议,这些**协议定义了应用程序如何通过网络通信** 应用层的功能 网络通信 - **应用层是网络通信的最终目的**,它负责接收来自其他主机的数据,并将其传递给用...
嘀嗒时钟 时钟tick的频率一般由RT\_TICK\_PER\_SECOND宏定义决定,系统默认设置RT\_TICK\_PER\_SECOND为1000,注意RT\_TICK\_PER\_SECOND不能大于1000,防止嘀嗒硬件溢出,无返回值 定时器 我们首先要区分操作系统定时器和芯片上的硬件定时器: - 硬件定时器:是芯片本身提供的定时功能,一般由外部晶振提供芯片输入时钟,当到达...
线程同步的概念 **在操作系统中完成一项任务,可能往往需要多个线程协同完** 例如我们显示传感器检测的数据,需要两个线程,一个接收线程,接收传感器数据,并将数据写入共享内存中;另一个显示线程,从共享内存中读取数据并显示出来 **如果共享内存不是排他性(一个访问时另外的线程不可以访问)**,可能引起数据一致性的问题,在显示线程读取的时候,接收线程还没有完全完成数据的存放,可能会导致数据...
线程介绍 线程的概念 开发人员把复杂的任务进行功能分解,形成若干个不同功能的小任务,而不同功能的任务由运行于操作系统中的不同程序来完成,再由操作系统统一调度各个程序之间的运行。 **这些运行在操作系统之上的程序单元就是线程** **在RT-threa中线程是任务的载体,是RT-thread中的最小调度单元** 线程的调度 对于单核系统,系统中有多个线程,每个线程的运行都需要占用CP...
使用模块化,对每一个功能进行单独的封装.c.h,便于后期的移植和调用。 模块的.c.h .h文件 - 编写头文件的基本框架 - 定义需要用的的参数定义,枚举、结构体、共用体等 - 函数定义,函数包括:线程入口函数、执行操作的函数等…… .c文件 头文件、宏定义 - **rtthread.h**:RT-thread内核有关,提供的接口声明、类型定义 - **rtdevice....
描述 介绍了常用的几种排序算法:**冒泡排序、选择排序、插入排序、快排、希尔排序**、归并排序、堆排 为什么后面两个没有加租?因为目前的我还没发熟练使用 后期如果有时间会出分析讲解视频 **加油!愿祖国强盛**😊😊😊 冒泡排序 冒泡排序原理 从第一个元素开始比较相邻的元素,如果顺序错误则调换顺序,继续往下一一对比,直到序列末尾。 冒泡排序分析 冒泡排序的核心就是:**...
RT-thread通过PIN设备对芯片的GPIO引脚进行管理,我们可以通过rtt它提供的一系列PIN设备管理接口来操作GPIO rt\_pin\_get 在rtt中的引脚编号和芯片上的引脚号并不是一个概念,所以在操作PIN设备前,我们需要使用引脚编号来指定对哪个引脚进行操作。通常有3种方式获得引脚编号:调用API、宏定义、查看PIN驱动文件。 调用API 使用rt\_pin\_g...
速通回忆 这里是完整的代码和运行结果,可以直接选择看下面代码的思路去快速回忆哈夫曼树,或从下面理论部分开始学习 ``` #include "stdio.h" #include "stdlib.h" /* 哈夫曼树结点的结构体 */ typedef struct { int weight; /* 权重 */ int parent; /* 父母结点下标 */ int l...
学习正点原子的I.MX6ULL时,按照官方提供的开发文档使用nfs获取Ubuntu中的镜像的时候,发现会出问题 **最后,发现是nfs版本问题,正点原子官方提供的uboot中的nfs版本太老,而我们Ubuntu新下载的nfs是新版本,解决方法就是降级** 安装nfs 首先要确认你的Ubuntuy虚拟机已经正确的安装了NFS,如果没有的话可以参考正点原子的驱动开发文档中的内容,或参考我的...
介绍 RT-thread相比Linux操作系统,其**具有体积小、成本低、启动快、功耗低的特点,除此之外,RT-thread还具有实时性高、占用小资源的特点** 对于受硬件资源限制的,可以使用RT-thread的NANO版本,它仅仅需要3KB Flash和1.2KB RAM内存资源。硬件丰富的资源,可以使用RT-thread的在线软件包管理工具,实现直观快速的模块化裁剪 RT-thr...
Uboot命令是可以配置的,需要什么命令使能什么命令就可以。我们输入help或者?即可查看命令的详细用法。help <查找的命令> 信息查询命令 常用的包括:bdinfo、printenv、version bdinfo **bdinfo可以查到板子信息**:DRAM(动态随机存储器)的起始地址和大小、启动参数保存起始地址、波特率、sp(堆指针)起始地址等信息 printenv...
位运算符C语言提供了六种位运算符 - &:按位与 - !:按位或 - ^:异或 - ~:取反 - <<:左移 - \>>:右移 按位与运算 **其功能是参与运算的两数各对应的二进位相与。只有对应的两个二进位均为1时,结果位才为1,否则为0** 按位与运算通常用来对某些位清0 按位或运算 **其功能是参与运算的两数各对应的二进位相或。只要对应的二个二进位有一个为1时,结果位就...
速通回忆 **下面是一个二叉树的演示:包括二叉树的类型构造,二叉树存放一个数值,二叉树的遍历(先序遍历、中序遍历、后序遍历)** 你可以选择直接看这个演示代码回忆之前学过的内容,或者看下面的介绍进行二次学习 ``` #include "stdio.h" #include "stdlib.h" /* 树的元素结构体,结点元素、左子树、右子树 */ typedef struct tree_n...
**没事干,写个树玩玩,真正的“撸树”** 在Ubuntu终端、VScode终端显示 代码 ``` #include "stdio.h" int main(){ int high = 5; //层高 int count = 5; //层数 int start; //每层开始*数 int...
速通回忆 **如果你之前学过链表**,可以直接看我下面的这个项目,实现了下面专题中所有内容; **如果你是个新手**,**_建议先不要看下面这个项目_**,先好好看一下下面每一个部分的代码思路,并尝试自己去写一下 ``` /* * 功能:单向循环链表操作 * 作者:此乃刘同学(www.liustu.com.cn) */ #include "stdio.h" #include...
速通回忆 **下面是一个链表栈的演示**,**数组栈的演示放在最后面** 如果你不知道什么是链表栈,建议先别看这个“速通回忆”,先看一下理论部分 **如果你之前学过链表**,可以直接看我下面的这个项目,实现了下面专题中所有内容; **如果你是个新手**,**_建议先不要看下面这个项目_**,先好好看一下下面每一个部分的代码思路,并尝试自己去写一下 ``` /* * 功能:链表栈操作...
速通回忆 有基础可以直接通过下面代码回忆一下即可😊(循环队列在后面) ``` #include "stdio.h" #include "stdlib.h" /* 数据结构体 */ typedef struct node{ int data; struct node *next; }node; /* 队列结构体 */ typedef struct queue{ n...