![](https://img-blog.csdnimg.cn/20201014180756780.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
RTOS
文章平均质量分 80
Introduction of RTOS
cesare20
ssss
展开
-
RTOS介绍------十、Multicore Systems
Concepts在Recommended Readingintroduction-to-rtos-solution-to-part-12-multicore-systems:https://www.digikey.com/en/maker/projects/introduction-to-rtos-solution-to-part-12-multicore-systems/369936f5671d4207a2c954c0637e7d50ESP-IDF FreeRTOS SMP Changes: ht原创 2022-02-01 19:56:15 · 944 阅读 · 0 评论 -
RTOS介绍------九、Priority Inversion
Concepts优先级反转是一个bug,表现为 高优先级的task被低优先级的task间接抢占。例如,低优先级的task占用着某个mutex,高优先级的task就必须等待 才能继续执行。简单case:高优先级的task(Task H)会被阻塞,只要低优先级的task(Task L)拿着lock。这被称作“有界优先级反转”,因为优先级反转的时长 和低优先级task在临界区(hold the lock)的时长 相关。上图可以看出,只要Task L 拿着lock,Task H 就会一直被阻塞 。tasks原创 2022-01-28 22:02:22 · 624 阅读 · 0 评论 -
RTOS介绍------八、Deadlock and Starvation
Concepts想象一下 5 位哲学家坐在一张圆桌旁,桌子中间放着一碗面条。 一根筷子夹在每个哲学家之间。 哲学家只有拿着两根筷子才能吃饭。 吃完后,他们放下筷子,让另一个哲学家吃。需要想出一个办法让所有的哲学家都有机会吃饭。 这是对 Edsger Dijkstra 在 1965 年向他的计算机科学专业学生提出的经典哲学家就餐问题的描述。这是一个类比,用于演示多线程系统中的饥饿和死锁。 哲学家就像任务(或线程)试图使用共享资源(一碗面条)执行某些工作。 筷子类似于在访问共享资源之前需要的锁(信号量或互原创 2022-01-25 22:17:29 · 314 阅读 · 0 评论 -
RTOS介绍------七、Hardware Interrupts
Concepts硬件中断是许多嵌入式系统的重要组成部分。 它们允许事件异步发生(不作为任何执行程序的一部分)并通知 CPU 它应该采取一些行动。 这些类型的中断会导致 CPU 停止它正在做的任何事情并执行一些其他功能,称为“中断服务程序”(ISR)。此类硬件中断可能包括按钮按下(输入引脚电压变化)、硬件计时器到期或通信缓冲区被填充等事件。在大多数 RTOS(包括 FreeRTOS)中,硬件中断的优先级高于任何任务(除非我们故意禁用硬件中断)。使用硬件中断时,需要记住的事项很少。首先,ISR 永远不原创 2022-01-24 22:22:18 · 371 阅读 · 0 评论 -
RTOS介绍------六、Software Timers
Concepts定时器(在嵌入式系统中)允许我们延迟某些功能的执行或定期执行某个功能。这些可以是架构独有的硬件计时器,也可以是基于某些运行代码或 RTOS tick计时器的软件计时器。注意,一些硬件定时器还允许我们在完全无需软件干预的情况下控制一些硬件功能。在 FreeRTOS 中,有几种方法可以延迟函数的执行:vTaskDelay() 允许我们将当前运行的任务阻塞一段时间(以tick为单位)。您还可以通过将 xTaskGetTickCount() 与某些已知时间戳进行比较来执行非阻塞延迟。许原创 2022-01-24 22:03:54 · 415 阅读 · 0 评论 -
RTOS介绍------五、信号量 semaphore
Concepts在编程中,信号量是一个变量,用于控制 多线程或多进程 对 共享资源的访问。它类似于互斥锁,因为它可以阻止其他线程访问共享资源或临界区。但是,mutex意味着对锁拥有所有权(即 在临界区执行时,单个线程被称为拥有锁),信号量则是计数器,它可以允许多个线程进入临界区。理论上讲,信号量是一个共享的counter,可以做原子级别的加减(PV操作)。例如,上图中Task A,B,C都想进入临界区。每个Task都调用了semaphoreTake(),使得信号量计数减1.这时,这三个task都在临原创 2022-01-22 23:42:24 · 1848 阅读 · 0 评论 -
RTOS介绍------四、互斥 mutex
Conceptsmutex类似一个flag或者一个lock,用来限制一次只能有一个线程访问某块代码。它会拦住访问代码或者资源的所有其他线程。这确保任何在临界区执行的代码是线程安全的,不会被其他线程破坏。mutex就像放在咖啡店篮子里的唯一一把钥匙。 该钥匙可用于解锁共用的公共厕所。一个人在他们希望使用共享资源(洗手间)时拿走钥匙,并在完成后归还。 当他们在洗手间时,其他人不得进入。 其他人(类似于线程)必须等待密钥。 当它被归还时,另一个人可能会拿走厕所的钥匙。...原创 2022-01-20 21:41:42 · 711 阅读 · 0 评论 -
RTOS介绍------三、队列
实时操作系统 (RTOS) 中的队列是一个内核对象,它能够在任务之间传递信息,而不会引起其他任务的覆盖或进入竞争条件。 队列是先进先出 (FIFO) 系统,其中项目在读取后从队列中删除。Concepts大多数多线程操作系统提供了许多内核对象,这些对象有助于在线程之间创建线程安全的通信。 这些对象包括队列、互斥体和信号量。队列是具有原子读写的简单 FIFO 系统。 “原子操作”是指在执行过程中不能被其他任务中断的操作。 这确保了另一个任务在预期目标读取数据之前无法覆盖我们的数据。在此示例中,任务 A原创 2022-01-19 23:17:04 · 724 阅读 · 0 评论 -
RTOS介绍------二、内存管理
ConceptsRAM通常分为Stack区,Heap区和 Static区。全局静态区用来放 全局变量和static变量。栈区放 局部变量。栈内存被设计成先入后出系统,即在调用一个函数时,这个函数的局部变量被压入栈。在前一个函数return时,变量被pop出,函数可以接着运行。堆区一定是由程序员显式分配,即动态分配。因为C语言没有垃圾回收机制,所以不再使用的时候一定要手动释放。不释放的话会造成内存泄漏,引起未知反应例如损坏内存其他部分。在大多数系统中,栈和堆都是相向增长,占用未被分配的内存。如果不原创 2022-01-17 23:01:07 · 901 阅读 · 6 评论 -
RTOS介绍------一、任务的状态,优先级,调度
Task Scheduling原创 2022-01-16 21:33:11 · 2987 阅读 · 0 评论