嵌入式笔记之操作系统相关【1】

目前市场上主流的一些嵌入式系统

FreeRTOS:FreeRTOS是一款小巧、高效的实时操作系统,适用于多种处理器架构,如ARM、MIPS、AVR、PIC等。它具有可移植性和开源性质,被广泛应用于许多不同领域的嵌入式系统开发中。

uC/OS:uC/OS是一款商业实时操作系统,可用于各种不同的处理器架构。它的优点在于具有较低的内存和处理器占用率,以及高度可靠性和安全性。它也有一个免费的版本叫做uC/OS Lite,可用于非商业用途。

Linux嵌入式系统:Linux是一个开源的操作系统,适用于各种处理器架构。它具有强大的功能和广泛的应用场景,可用于许多不同的嵌入式系统中。但是,由于Linux的内存占用率相对较高,因此它不适用于一些资源受限的嵌入式系统。

RT-Thread:RT-Thread是一款国产的小型实时操作系统,适用于多种处理器架构。它具有可移植性和开源性质,且具有较低的内存和处理器占用率,适合于一些资源受限的嵌入式系统。

FreeRTOS的特点

小巧灵活:FreeRTOS内核非常小,只有几个KB的代码,适合嵌入式系统中内存资源受限的场合。

实时性强:FreeRTOS支持实时性,可以很好地处理时间敏感的任务,同时提供了多种调度算法,可以根据具体应用场景进行选择。

可裁剪性强:FreeRTOS内核具有可裁剪性,用户可以根据实际需求选择需要的功能,避免不必要的资源占用。

可移植性强:FreeRTOS内核可以移植到多种不同的硬件平台和操作系统上,具有广泛的适用性。

丰富的功能组件:FreeRTOS提供了丰富的功能组件,包括任务管理、内存管理、时间管理、队列、信号量、事件组等。

可扩展性强:FreeRTOS支持扩展,用户可以根据需要添加新的功能组件,或者修改现有的功能组件。

社区活跃:FreeRTOS有一个活跃的社区,用户可以在社区中获取帮助、分享经验和交流技术。

FreeRTOS的功能

任务管理:支持多任务管理,可以创建、删除、挂起、恢复任务,设置任务优先级和堆栈大小等。

内存管理:支持动态内存分配和释放,提供内存池管理机制,有效地减少内存碎片。

时间管理:支持定时器管理,可以创建、删除、重置定时器,支持周期性定时器和单次定时器。

消息队列:支持消息队列,可以实现任务之间的数据传输和同步,支持优先级队列和非优先级队列。

信号量:支持二值信号量和计数信号量,可以实现任务之间的同步和互斥。

事件组:支持事件组管理,可以实现任务之间的同步和通信。

互斥量:支持互斥量管理,可以保护共享资源的访问。

中断管理:支持中断管理,可以在中断处理程序中使用FreeRTOS提供的API函数。

低功耗管理:支持低功耗管理,可以实现系统休眠和唤醒。

文件系统:支持文件系统管理,可以访问文件系统中的文件和目录。

TCP/IP协议栈:支持TCP/IP协议栈,可以实现网络通信。

FreeRTOS支持多种调度算法

抢占式优先级调度算法:在这种算法中,任务的优先级越高,调度的机会就越多。当优先级更高的任务就绪时,会立即抢占正在执行的任务。

非抢占式优先级调度算法:在这种算法中,任务的优先级越高,调度的机会就越多。但是当正在执行的任务被抢占时,只有等到任务主动让出CPU或者发生中断时才会进行调度。

时间片轮转调度算法:在这种算法中,每个任务被分配一个时间片,当时间片用完后,任务被挂起,然后调度器选择下一个任务运行。当所有任务都运行一遍后,再重新从第一个任务开始。
基于最短剩余时间优先(SRT)的优先级调度算法:在这种算法中,任务被按照优先级排列,但是在执行任务之前,会先检查每个任务的剩余执行时间,并且优先执行剩余时间最短的任务。

如何设置FreeRTOS使用哪种算法

可以通过查看FreeRTOS配置文件或代码中的以下宏定义来确定所使用的调度算法:
configUSE_PREEMPTION 宏定义,若该值为1,则使用抢占式优先级调度算法;若该值为0,则使用非抢占式优先级调度算法。

configUSE_TIME_SLICING 宏定义,若该值为1,则使用时间片轮转调度算法。

configUSE_SHORTER_RESUME_TIME 宏定义,若该值为1,则使用基于最短剩余时间优先的优先级调度算法。

需要注意的是,不同的调度算法对系统的性能和功耗有着不同的影响,选择合适的调度算法应该根据具体的应用场景和系统要求进行

如何理解抢占式调度算法

在FreeRTOS的抢占式调度算法中,任务的优先级越高调度的机会就越多。当优先级更高的任务就绪时,会立即抢占正在执行的任务,即将当前正在执行的任务挂起,然后立即切换到优先级更高的任务进行执行。

这种调度算法保证了高优先级任务的实时性,可以确保在紧急情况下优先执行高优先级任务。由于抢占式调度算法可以在任何时候强制切换任务,因此可以更灵活地响应外部事件或其他高优先级任务的需求

在FreeRTOS中,抢占式调度算法是默认的调度算法。通过配置文件或者代码中的宏定义,可以开启或关闭抢占式调度算法,也可以配置其他的调度算法,以满足不同应用场景和要求开启方式在上面

如何理解非抢占式调度算法

在FreeRTOS的非抢占式调度算法中,任务的优先级越高,调度的机会就越多。但是当正在执行的任务被抢占时,只有等到任务主动让出CPU或者发生中断时才会进行调度。也就是说,当前正在执行的任务只有在自己主动让出CPU时才会被挂起,而不是被强制抢占。【非抢占式的缺点】

这种调度算法在实现简单、效率高【非抢占的优点】的同时,也有一定的局限性。因为任务只有在主动让出CPU时才会进行调度,所以无法保证高优先级任务在紧急情况下及时得到执行,从而可能影响系统的实时性。

如何理解非抢占式调度算法

在FreeRTOS的时间片调度算法中,系统会将CPU时间分成若干个固定长度的时间片,每个任务在调度时被分配一个时间片,并在时间片用尽之后被强制挂起,以便其他任务获得执行机会。如果任务在时间片用尽之前主动让出CPU,那么剩余时间片将被保存,并在任务下一次执行时继续使用。

时间片调度算法可以提高系统的公平性确保所有任务都有机会得到执行。此外,时间片调度算法还可以平衡系统中任务的负载,从而提高系统的性能和效率
需要注意的是,开启时间片调度算法会增加系统的开销,因为需要进行时间片的切换和维护。

如何理解非抢占式调度算法

FreeRTOS的剩余时间优先(SRT)的优先级调度算法是一种动态优先级调度算法,它的优先级是根据任务剩余执行时间的大小动态调整的。具体来说,每个任务的优先级是根据任务的执行时间、已经使用的CPU时间以及优先级衰减因子来计算的。在SRT算法中,系统会选择当前剩余执行时间最短的任务作为下一个执行的任务。如果有多个任务具有相同的剩余执行时间,那么根据它们已经使用的CPU时间和优先级衰减因子进行调度。SRT算法可以确保执行时间短的任务优先执行,从而提高系统的响应速度和实时性。但是,SRT算法需要实时跟踪任务的剩余执行时间和已经使用的CPU时间增加了系统的开销和复杂度。

如何获取FreeRTOS源码

访问FreeRTOS官方网站(https://www.freertos.org/)。

单击“Download FreeRTOS”按钮,该按钮将带您进入FreeRTOS的下载页面。
在这里插入图片描述

在下载页面中,您可以选择要下载的FreeRTOS版本和格式(zip、tar.gz等)。

下载完成后,解压缩压缩包,即可获得FreeRTOS的源代码。

需要注意的是,FreeRTOS支持多种不同的硬件平台和编译器,因此需要选择与我们目标平台和编译器相对应的版本和格式。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
很高兴回答你关于野火嵌入式Linux学习的问题!以下是一些学习笔记的建议: 1. 了解嵌入式系统:首先,你需要了解嵌入式系统是什么以及它们与桌面操作系统的区别。嵌入式系统通常用于特定的应用领域,例如智能家居、汽车电子和工业控制等。 2. 学习Linux基础知识:野火嵌入式Linux是基于Linux内核的操作系统,所以你需要掌握Linux的基础知识,包括文件系统、进程管理、设备驱动程序等。 3. 硬件平台了解:野火嵌入式Linux有不同的硬件平台,例如野火开发板。你需要学习如何操作和配置这些硬件平台,并了解它们的特性和限制。 4. 交叉编译环境设置:为了在PC上开发嵌入式系统,你需要设置一个交叉编译环境,以便能够编译和调试嵌入式应用程序。这涉及到安装和配置交叉编译工具链。 5. 内核定制和驱动程序开发:学习如何定制Linux内核以满足特定需求,并开发设备驱动程序以支持外部硬件。 6. 应用程序开发:掌握嵌入式应用程序的开发技术,包括使用C/C++语言、Makefile和调试工具。 7. 调试和故障排除:学会使用调试工具和技术来定位和解决嵌入式系统中的问题。 8. 实际项目经验:通过参与实际的嵌入式项目或完成一些小型项目来应用你的知识和技能。 这些只是一些学习笔记的建议,野火嵌入式Linux学习需要不断的实践和探索。希望这些对你有帮助!如果你有任何进一步的问题,欢迎继续提问。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值