
rt_thread
Surferqing_
物有本末、事有终始,知所先后,则近道矣。
展开
-
RT-Thread学习记录15 内存池的使用
以下为看视频笔记..........1. 内存池的介绍动态内存堆可以分配任意大小的内存块,非常灵活和方便。但其存在明显的缺点:一是分配效率不高,在每次分配时,都要进行空闲内存块查找;二是容易产生内存碎片。为了提高内存分配的效率,并且避免内存碎片,RT-Thread提供了另外--种内存管理方法:内存池(MemoryPool)内存池是一种内存分配方式,用于分配大量大小相同的小内存块。使用内存池可以极大地加快内存分配与释放的速度,且能尽量避免内存碎片化。RT-Thread的内存池支持线程...原创 2020-06-16 18:43:39 · 2577 阅读 · 0 评论 -
RT-Thread学习记录14 软件定时器的使用
以下为看视频笔记..........软件定时器是由操作系统提供的一:类系统接口,它构建在硬件定时器基础之上(系统滴答定时器)。软件定时器使系统能够提供不受数目限制的定时器服务。RT-Thread操作系统提供的软件定时器,以系统节拍(OSTick)的时间长度为定时单位,提供了基于系统节拍整数倍的定时能力,即定时数值是OSTick的整数倍。例如一个OS Tick是10ms,那么上层软件定时器只能提供10ms,20ms,,100ms等时间精度的定时服务,而不能定时为15ms、25ms、35ms等。..原创 2020-06-16 15:48:53 · 3140 阅读 · 1 评论 -
RT-Thread学习记录13 消息队列的使用
以下为看视频笔记..........1. 消息队列工作机制消息队列是RT-Thread中另一种常用的线程间通信方式,消息队列是对邮箱的扩展。消息队列能够接收来自线程或中断服务例程中发出的不固定长度的消息,并把消息缓存在自己的内存空间中,而其他线程能够从消息队列中读取相应的消息并进行对应的处理。2. 消息队列控制块消息队列控制块是操作系统用于管理消息队列的一个数据结构struct rt_messagequeue{ struct rt_ipc_object par原创 2020-06-15 22:24:24 · 762 阅读 · 0 评论 -
RT-Thread学习记录12 邮箱的使用
以下为看视频笔记..........1. 邮箱的工作机制RT-Thread操作系统的邮箱用于线程间通信(邮箱具有数据交互功能,但互斥量、信号量等IPC没有数据交互功能),特点是开销比较低,效率较高。邮箱中的每一封邮件只能容纳 固定的4字节内容 (针对32位处理系统,指针的大小即为4个字节,所以一封邮件恰好能够容纳一个指针)。线程或中断服务例程把一封4 字节长度的邮件发送到邮箱中,而其他需要的线程可以从邮箱中接收这些邮件并进行处理。“2. 邮箱控制块在RT-Thread中,..原创 2020-06-15 16:53:06 · 1576 阅读 · 0 评论 -
RT-Thread学习记录11 事件集的使用
以下为看视频笔记..........1.例说事件集以坐公交车为例说明事件集,在公交站等公交车时可能有以下几种情况:①P1坐公交车去某地,只有一趟公交车可以到达目的地,等到此公交车即可出发。②P1坐公交车去某地,有3趟公交车都可以到达目的地,等到其中任意一辆即可出发③P1约另一人P2一起去某地,则P1必须要等到“同伴P2到达公交站”与“公交车到达公交站”两个条件都满足后,才能出发。这里,可以将P1去某地的这个行为视为线程,将“到达目的地的公交车到达公交站”、“同伴P2到达公交站”视为事件的发生,.原创 2020-06-14 17:14:21 · 813 阅读 · 0 评论 -
RT-Thread学习记录10 线程的优先级翻转
以下为看视频笔记..........1.优先级翻转使用信号量会导致的另一个潜在问题是线程优先级翻转问题。所谓线程优先级翻转,即当一个高优先级线程试图通过某种互斥IPC对象机制访问兵享资源时,.如果该IPC对象已被-低优先级的线程所持有,而这个低优先级线程在运行过程中可能又被其它--些中等优先级的线程抢占,因此造成高优先级线程被许多具有较低优先级的线程阻塞的情况。优先级翻转会造成高优先级线程的实时性得不到保证。{图中M代表共享资源,A,B,C代表线程}2. 优先级继承在RT-Th.原创 2020-06-12 16:31:10 · 670 阅读 · 0 评论 -
RT-Thread学习记录9 互斥量的使用
以下为看视频笔记..........1. 例子说明互斥量我们来看一个生活中的例子:现在大多银行ATM机都有一个特制的铁门。需要使用ATM的用户都需要在门前排队,进入铁门]使用ATM机的用户进入后会在里面将铁门锁住,以保障自身安全,这个时候,在门外排队的用户无法使用.ATM机;当之前锁住ATM铁门的用户办理完业务,打开门以后,其他在外排队的用户才可以进入铁门使用ATM,这位进入铁门的用户也会和前一个用户一样,将门锁住,保障自身的安全。例子中ATM机就相当于系统中的共享资源,需要使用ATM的用户原创 2020-06-11 18:44:43 · 806 阅读 · 0 评论 -
RT-Thread学习记录8 生产者消费者问题
1.生产者消费者问题模型生产者消费者问题是一个经典的、多线程同步问题。有两个线程:--个生产者线程和一个消费者线程。两个线程共享-个初始为空、固定大小为n的缓存区。.生产者的工作是“生产”-段数据,只有缓冲区没满时,生产者才能把消息放入到缓冲区,否则必须等待,如此反复;同时,只有缓冲区非空时,消费者才能从中取出数据,-次消费--段数据,否则必须等待,如此反复。问题的核心是:1.1 要保证不让生产者在缓存还是满的时候仍然要向内写数据;1.2 不让消费者试图从空的缓存中取出数据。...原创 2020-06-10 22:18:59 · 860 阅读 · 0 评论 -
RT-Thread学习记录7 信号量的使用
以下为看视频笔记..........1. 信号量(IPC)在嵌入式系统中运行的代码主要包括线程和中断(ISR),在它们的运行过程中,它们的运行步骤有时需要同步(按照预定的先后次序运行),它们访问的资源有时需要互斥(一个时刻只允许一个线程访问资源),它们之间有时也要彼此交换数据。这些需求,有的是因为应用需求,有的是多线程编程模型带来的需求。操作系统必须提供相应的机制来完成这些功能,我们把这些机制统称为进(线)程间通信(InternalProcessCommunicationIPC),RT...原创 2020-06-09 18:28:01 · 580 阅读 · 0 评论 -
RT-Thread学习记录6 临界区保护
以下为看视频笔记..........1.临界区概念临界资源是指一次仅允许一一个线程访问的共享资源。它可以是一个具体的硬件设备(如打印机等),也可以是一个变量、一个缓冲区。不论是硬件临界资源,还是软件临界资源,多个线程必须互斥地对它们进行访问每个线程中的访问(操作)临界资源的那段代码称为临界区(Critiacl Section),我们每一次只允许一个线程进入临界区。/*程序的目的先把全局变量value值加到10000,在赋值为500.注意顺序。演示全局变量value为临界区资源,两原创 2020-06-07 16:27:35 · 906 阅读 · 0 评论 -
RT-Thread学习记录5 空闲线程及常用的钩子函数
以下为看视频笔记..........空闲线程是一个比较特殊的系统线程,它具备最低的优先级。当系统中无其他就绪线程可运行时,调度器将调度到空闲线程。空闲线程还负责一些系统资源回收以及将一-些处于关闭态的线程从线程调度列表中移除的动作空闲线程在形式上是一个无线循环结构,且永远不被挂起。在RT-Thread实时操作系统中空闲线程向用户提供了钩子函数,空闲线程钩子函数可以让系统在空闲的时候执行一-些非紧急事务,例如系统运行指示灯闪烁,CPU使用率统计等等。像图中的 tshell 和 tidl.原创 2020-06-07 12:19:32 · 3007 阅读 · 0 评论 -
RT-Thread学习记录4 线程的时间片轮询调度
以下为看视频笔记。。。。1.线程的优先级优先级和时间片是线程的两个重要参数,分别描述了线程竞争处理器资源的能力和持有处理器时间长短的能力。RT-Thread最大支持256个优先级(数值越小的优先级越高,0为最高优先级,最低优先级预留给空闲线程);用户可以通过rt_config.h中的RT_THREAD_PRIORITY_MAX宏来修改最大支持的优先级;针对STM32默认设置最大支持32个优先级;具体应用中,线程总数不受限制,能创建的线程总数只和具体硬件平台的内存有关2.线...原创 2020-06-05 21:11:17 · 944 阅读 · 0 评论 -
RT-Thread学习记录3 简单的线程实例—跑马灯实验
线程状态转换图原创 2020-06-05 18:54:17 · 1426 阅读 · 0 评论 -
RT-Thread学习记录2 线程的创建
看视频笔记如下。。。。在RT-Thread中,与上述小任务对应的程序实体就叫做“线程”(或任务),RT-Thread就是一个能对这些小“线程”进行管理和调度的多“线程”操作系统。线程是实现任务的载体,它是RT-Thread中最基本的调度单位,它描述了一个任务执行的运行环境,也描述了这个任务所处的优先等级。RT_Thread中,线程有三部分组成:线程代码(入口函数),线程控制块,线程堆栈。线程代码如下:1.无限循环模式void thread_entry(void *parameter..原创 2020-06-04 21:00:16 · 527 阅读 · 0 评论 -
RT-Thread学习记录1 动态内存的使用
先使用Keil软件仿真运行程序学习,RT-Thread Simulator 例程,例程结合B站视频一起学习。程序包括多个例程。以下为看视频的笔记。。。。栈(stack):有编译器自动分配释放堆(heap):一般有程序员分配释放int a = 0; //全局初始化区char *p1; //全局未初始化区mian(){ int b; //栈 char s[] = "abc123"; //栈 char *p2; //栈 char *p3 = "123654原创 2020-06-04 19:39:45 · 524 阅读 · 0 评论