
RTOS开发入门到精通(嵌入式开发基础)
文章平均质量分 87
嵌入式开发中,往往使用实时操作系统,也就是RTOS。常用的比如RT-Thread和FreeRTOS。本专栏主要介绍RTOS开发的常用知识和技巧。
跋扈洋
#公众号:物联网知识
展开
-
移植FreeRTOS到STM32
本文详细介绍如何移植FreeRTOS到STM32单片机上。移植操作系统是嵌入式开发的入门基础,单片机和嵌入式在物理上其实是一摸一样的,区别就是软件上嵌入式跑了操作系统而单片机没有。文本选用市场上最常见的STM32和FreeRTOS,为大家介绍如何移植操作系统到MCU上。原创 2022-12-30 12:48:29 · 5307 阅读 · 2 评论 -
基于STM32与FreeRTOS的消息传递详解(HAL库)
我们在裸机开发中,每个函数之间进行数据通信往往采用全局变量。而在嵌入式开发中。我们在进行进程间通信的时候,往往采用消息队列。对于操作系统来说,消息队列是非常重要的一个数据结构。本文将介绍一下,如何使用消息队列进行通信。原创 2022-10-24 15:46:10 · 3615 阅读 · 0 评论 -
嵌入式C/C++常见错误和注意事项
我们在嵌入式开发中,编写完一个新功能,但实现别的效果差强人意,检查后发现逻辑并没有什么错误,此时我们就要注意,是否是C/C++使用技巧的错误。本文就来总结一下,常遇到的错误。原创 2022-09-01 10:10:28 · 823 阅读 · 0 评论 -
基于STM32和FreeRTOS的二值信号量实现任务同步
信号量(semaphore)是一种用于提供不同进程之间或者一个给定的不同线程间同步手段的原语。信号量多用于任务间的同步与互斥。信号量在FreeRTOS中分为三种:计数型信号量、二值信号量和互斥信号量。同步:处理竞争就是同步,安排进程执行的先后顺序就是同步,每个进程都有一定的个先后执行顺序。互斥:互斥访问不可共享的临界资源,同时会引发两个新的控制问题(互斥可以说是特殊的同步)。竞争:当并发进程竞争使用同一个资源的时候,我们就称为竞争进程。原创 2022-08-25 12:24:53 · 1188 阅读 · 0 评论 -
开环和闭环是什么意思?
在嵌入式开发中,经常会遇到一个控制领域的概念,就是开环和闭环。即使你不是控制专业的,如果你想从事嵌入式,我建议也需要了解一下开环和闭环的概念。开环和闭环都是控制方面经常使用的术语。开环控制是指控制装置与被控对象之间只有顺向作用而没有反向联系的控制过程,按这种方式组成的系统称为开环控制系统。闭环控制是将输出量直接或间接反馈到输入端形成闭环、参与控制的控制方式。开环的英文名是open-loop。开环相对于闭环而言,也叫开环控制系统。意思就是不将控制的结果反馈回来影响当前控制的系统。...原创 2022-06-30 20:07:20 · 18334 阅读 · 1 评论 -
操作系统之进程
进程是大多数系统的工作单元,可以将进程看作执行的程序。虽然在传统操作系统中进程包括线程,但其实在一些RTOS中,线程、任务和进程的概念都很模糊,可以说进程≈线程=任务。但无论是在常规操作系统还是实时操作系统中,进程或者说线程和任务都是最重要的概念之一。进程是现代分时操作系统的工作单元,在讨论操作系统时,如何称呼所有CPU活动是一个非常重要的问题。批处理系统执行作业,而分时系统使用用户程序或任务。即使是单用户系统,用户也能同时运行多个程序,即便用户一次只能执行一个程序,操作系统也需要支持本身的内部活动,所有这原创 2022-06-26 21:56:50 · 387 阅读 · 0 评论 -
操作系统有哪些结构?
操作系统以服务的形式向用户和程序提供环境执行程序。操作系统的基本服务有:操作系统有一组服务用于提供用户功能:另外操作系统还有一组服务,不是为了帮助用户而是为了确保系统本身运行高效,多用户系统通过共享计算机资源可以提升效率。操作系统的服务形式主要分为三种:现代操作系统庞大而复杂,常用方法是将这种系统分成子系统或模块。如果想了解更多物联网、智能家居项目知识,可以关注我的项目实战专栏和软硬结合专栏。欢迎关注公众号了解更多。编写不易,感谢支持。...原创 2022-06-24 20:03:12 · 6680 阅读 · 0 评论 -
操作系统的双重模式
操作系统是管理计算机硬件的程序。操作系统的核心目标是运行用户程序,以用户视角来看,操作系统的主要目的是更方便的使用计算机,在系统视角来看,操作系统的目的是更高效的使用计算机。而在OS的执行过程中,为什么要分成内核态和运行态?怎么从运行态转到内核态?这些都是我们需要了解的问题。.........原创 2022-06-23 20:36:37 · 3047 阅读 · 0 评论 -
嵌入式开发基础之任务管理(线程管理)
RTOS 系统的核心是任务管理,而在实时操作系统中,任务和线程在概念上其实是一样的。所以任务管理也可以叫做线程管理。初步上手 RTOS 系统首先必须掌握的也是任务的创建、删除、挂起和恢复等操作,由此可见任务管理的重要性。在日常生活中,我们要完成一个大任务,一般会将它分解成多个简单、容易解决的小问题,小问题逐个被解决,大问题也就随之解决了。在多线程操作系统中,也同样需要开发人员把一个复杂的应用分解成多个小的、可调度的、序列化的程序单元,当合理地划分任务并正确地执行时,这种设计能够让系统满足实时系统的性能及时间原创 2022-06-22 18:36:12 · 636 阅读 · 0 评论 -
嵌入式开发基础之线程间同步
在多线程实时系统中,一项工作的完成往往可以通过多个线程协调的方式共同来完成。不同线程之间存在着不同的相互制约关系,为了协调线程之间的制约关系,引入了线程同步的概念。同步是指按预定的先后次序进行运行,线程同步是指多个线程通过特定的机制(如互斥量,事件对象,临界区)来控制线程之间的执行顺序,也可以说是在线程之间通过同步建立起执行顺序的关系,如果没有同步,那线程之间将是无序的。............原创 2022-06-13 14:26:15 · 1542 阅读 · 0 评论 -
嵌入式开发基础之中断管理
中断就是系统正在处理某一个正常事件,忽然被另一个需要马上处理的紧急事件打断,系统转而处理这个紧急事件,待处理完毕,再恢复运行刚才被打断的事件。无论在单片机开发还是嵌入式开发中,中断都是一个非常重要的概念。而重要的原因,是中断的概念符合我们普世生活的场景。你正在上班努力编程,却有一通电话打了进来,而不得不停止工作,接通完电话后,发现只是外卖到了楼下,这时候你又恢复到工作的状态,这是短期中断。你本科毕业,因为第一年的工作经验的优先级高于考研所以你去找了份工作,干了一年后,去考研,回到学校继续学习,对你的学原创 2022-06-18 16:43:04 · 1458 阅读 · 0 评论 -
嵌入式开发基础之线程间通信
在裸机编程中,经常会使用全局变量进行功能间的通信,如某些功能可能由于一些操作而改变全局变量的值,另一个功能对此全局变量进行读取,根据读取到的全局变量值执行相应的动作,达到通信协作的目的。而实时操作系统往往采用邮箱、消息队列、信号用于线程间的通信。邮箱服务是实时操作系统中一种典型的线程间通信方法。邮箱用于线程间通信,特点是开销比较低,效率较高。典型的邮箱也称作交换消息。非阻塞方式的邮件发送过程能够安全的应用于中断服务中,是线程、中断服务、定时器向线程发送消息的有效手段。通常来说,邮件收取过程可能是阻塞的,原创 2022-06-16 13:16:31 · 927 阅读 · 0 评论 -
STM32移植FreeRTOS出现的问题及解决办法
# 问题:\FreeRTOS\queue.c(2761): error: #268: declaration may not appear after executable statement in block原创 2022-06-16 12:59:22 · 3472 阅读 · 1 评论 -
嵌入式开发常用技巧及编程知识
我们在日常的嵌入式开发中,经常会遇到各种C/C++的使用问题,并且C/C++纯软件的常用开发技巧有些嵌入式并不常用,而嵌入式开发中使用到的C/C++知识与技巧有些也非常特别,这里我们来具体介绍一下嵌入式开发常用技巧及C/C++知识。包括(static 静态变量,‘##’连接符,断言函数,其他).......................................原创 2022-06-15 18:41:25 · 3039 阅读 · 0 评论