一、实验目的
1、理解事件集的基本原理;
2、使用事件集来达到多条件情况下线程间同步;
3、在 RT-Thread 中熟练使用事件集来完成需求。
二、实验内容
(1)分析实验代码运行过程
分析 event_sample 实验代码中各任务函数代码,在线程函数获得 CPU 处添加运行标志位的置 1 的代码,在 CPU 处添加运行标志位的清 0 代码,观察分析线程运行过程。在报告中列出逻辑分析仪截图,按关键时间节点顺序,描述程序运行过程。
(2)分析核心对象的控制块
进入软件仿真后,在 watch 中添加事件集控制块结构体 rt_event
在 mutex API 主要函数(rt_event_init,rt_event_send,rt_event_recv)内部设置断点,分析 API 嵌套调用关系;分析 mutex 控制结构体 rt_mutex 的状态变化过程。在报告中写出 API 嵌套调用关系和 rt_mutex 的状态变化过程以及相应截图。
(3)在 event_sample 的基础上,编程实现:
- 新创建接收事件的任务 thread3_recv_event,优先级低于线程 1;
- 修改源代码,实现 thread2_send_event 广播 3/5 OR 事件和 3/5 AND 事件;
thread1_recv_event;thread3_recv_event 两个线程都能接收到上述两个事件。
具体内容看简介