mmuyu 发表于 2023-8-19 20:14:08

裸机开发与基于freertos有何区别

    裸机开发项目和基于freertos运行项目是我们经常在嵌入式系统中见到的两种方法,他们在不同的方面都有各自的优势和缺点。一般,最主要的区别会在资源调度和任务管理上。

首先是裸机开发:裸机开发指的是直接使用底层硬件开发,或者基于完善的外设库进行开发,一般是不用到操作系统的,像是stm32的标准库,hal库。那么就意味着,我们需要手动编写代码管理各个功能运行,保证各个功能能正常调度。虽然这样可能使我们的项目变得复杂,但是同时也是有很多优点的。
那么第一个优点自然是精简和高效,操作系统一般需要大量的资源开销,如占用ram用于维持操作系统正常调度运行,占用较多的flash空间。像是51这些单片机,ram和flash通常是非常匮乏的,以及操作系统内部多层的函数嵌套都是51无法接受的。因此我们使用裸机开发可以在资源有限的系统上更高效,更完全地发挥芯片的能力,实现更高的性能,更小的占用。
此外,基于裸机我们可以绕过操作系统,直接操作硬件资源,可以实现对系统更精细化的控制。当然,优点也伴随着缺点。由于基于裸机开发,需要手动处理任务,中断,时间处理,因此开发难度相对较高,容易产生错误。而且当面对多任务,每个任务都要求高实时性的时候,手动管理任务调度可能就力不从心了。
因此,假如项目功能少,实时性要求高,或者芯片的资源有限,通常会优先选择基于裸机开发。如果项目有复杂的功能要求,功能涉及到多线程,多任务,事件驱动或者更复杂的场景,这时候会优先选择基于操作系统开发,例如常见的freertos,rt-thread,linux等。 通常,操作系统都提供了多任务的管理,事件机制以及实时性的保障。基于操作系统开发我们的项目,我们可以借助操作系统,确保我们需要的功能能在规定的时间内被执行,在特定事件发生的时候调动对于功能。面对这涉及多任务,多线程,事件驱动,内存管理等复杂的场景,freertos都提供了完善的接口给我们使用,为我们的项目正常运行提供了有力的支持。
虽然基于freertos进行开发有非常大的优势,但是盲目把项目移植到freertos可能不仅无法利用这些优势,还起到反作用,拖累系统运行。基于freertos开发项目,会带来大量的资源开销和flash空间的占用。因此要先确保硬件平台资源足够充足,性能足够强大。还要对项目进行评估,是否有多任务,实时性,事件驱动的需求,分析项目需要的资源,估算系统资源是否受限。根据项目具体的情况选择基于裸机开发还是借助freertos。
    总的来说,在一些情况下,freertos可以加速开发,提高系统的可维护性,可拓展性和实时性。但是在一些简单的项目中,可能并不需要使用实时操作系统。当然最终的决策还是应该根据项目需求和团队能力进行综合考量。


页: [1]
查看完整版本: 裸机开发与基于freertos有何区别