第一次接触操作系统,是在 2010 年左右,那时 STM32 已经开始流行起来,这么强大的单片机,有很多人都在上面跑操作系统,我也跟着移植了 ucos ,在上面还跑了 ucgui ,这个时候写应用完全是一种全新的体验,爽了很多,玩了一年了 ucos ,后来接触到咱们国产的 RT-Thread ,在它上面有很多现成的、拿来即用组件,试用以后发现更爽,就一直用到了今天,大概有 8 年了。也跟大家也聊一聊操作系统的优势:

打开网易新闻 查看更多图片

线程方式的并发任务处理,解决模块化问题,同时保证实时性

模块化:使用了操作系统以后,整个软件的工作被拆分成了由多个任务来构成(也会被称为线程),每个线程有自己独立的运行空间,即线程堆栈,这个时候每个线程你玩你的,我做我的,咱们大家互补干涉,模块化程度得到很好的提高。

并发性:从并发的角度来看,各个线程在使用 delay/事件等待 这类函数时,会自动的让出 CPU 给其他有需要的线程,不仅书写 delay 延时函数操的心少了,整个 CPU 的利用率也得到了提高,最终提升并发性。

实时性:再来看实时性,像 ucos/RT-Thread 这些 RTOS 本身就被设计为实时的操作系统,各个线程都有不同的优先级别,重要的线程可以设为高优先级,不重要的线程可以降低优先级,做好全局的统筹规划后,这样整个软件的实时性也能得到保证。

开发效率:

由于操作系统提供了统一的抽象接口层,方便了可重用组件的积累,提高开发效率

·操作系统其实是一群软件大牛们智慧的结晶,他们站在应用软件、底层驱动的开发角度,对很多常见的软件功能进行了封装、抽象,比如:信号量、事件通知、邮箱、环形缓冲区、单向链表/双向链表等等,这些功能拿来即用,对于开发者方便极了

·还有一些操作系统,比如:Linux 和我们国产的 RT-Thread ,他们这些系统对碎片化的硬件,统一封装了一套标准的硬件操作接口,一般称为设备驱动框架。这样我们的应用软件工程师,就可以专攻应用的工作,再也不用怕更换硬件,又需要重复造轮子了。

软件生态:

生态的丰富带来了量变到质变的过程(自己玩->大家一起玩)

打开网易新闻 查看更多图片

·使用操作系统所带来的软件可模块化、重用性的提升,也使得我们自己在做软件开发时,可以封装一套基于操作系统、适合嵌入式的可重用组件,这些组件不仅可以用在自己的项目中,还能开源出来分享给更多有需要的嵌入式开发者,把软件的价值最大化。

·个人感觉这是一件蛮有意义事情,我自己本身也是一名开源极客,也有在 GitHub 上开源一些嵌入式软件。说实话在做开源软件前,能够深入交流嵌入式软件的地方非常少,毕竟大家的代码不是芯片不一样,就是硬件不一样,你的代码给了他,也不一定能运行起来。但是自从用了操作系统后,软件的可重用性提高了,能够让更多的人很迅速的用起来我的开源软件,这个时候能够有更多的人可以一起交流,还接触到了很多的大牛们,甚至是国外的朋友。俗话说:水涨船高,我的能力也从此得到了快速的提升。所以总结下来,有一个能一起交流嵌入式软件

我们说二十世纪跨越了三个“电”的时代:即电气时代、电子时代和现已进入的电脑时代。这里的电脑,通常是指个人计算机,简称PC机。另外还有一类计算机,主要应用于控制领域,也就是单片机(也称微控制器)。

二十世纪80年代初,单片机:Single Chip Microcomputer,开始发展起来。实质上是把CPU、存储器和各种各样外围设备的接口都集成在一块半导体芯片上,形成以单片机芯片为核心的微型计算机。

目前也称“微控制器”(Microcomputer Unit)。这类微型计算机,从功能到形态皆由控制计算机演变而来。

单片机是将中央处理器(CPU)、存储器(ROM,RAM)、输入/输出(I/O)接口及其他功能部件等集成在一小块硅片上的微型计算机。

单片机不是完成某一个逻辑功能,而是把一个计算机系统集成到一个芯片上。一块芯片就成了一台计算机。体积小、质量轻、价格便宜。

未编程前,单片机芯片只是一片超大规模集成电路,什么也做不了。必须对它编程,赋予它特定的运行程序,它就成为一个最小的、完整的微型计算机控制系统。

单片机MCU的组成

单片机的基本功能是对数据进行运算,要自动完成运算功能,应该具有哪些最基本的功能部分呢?

1.运算器:首先要有进行运算的部件,这就是“运算器”(ALU 算术/逻辑运算部件);

2.存储器:其次,要有能起到存储记忆、作用的器件,即能记忆原始题目、原始数据和中间结果,还要记住使单片机能自动进行运算而编制的各种命令,这类器件就称为“存贮器”(RAM、ROM、EPROM、EEPROM等等)。

存贮器又分为只读存贮器(ROM)和读写存贮器(RAM)两种,前者存放调试好的固定程序和常数,后者存放一些随时有可能变动的数据。只读存贮器一旦将数据存入,就只能读出,不能更改(EPROM、E2PROM等类型的ROM可通过一定的方法来更改、写入数据——编者注)。而读写存贮器可随时存入或读出数据。

3.控制器:此外,还需要有能代替人作用的“控制器”,它能根据事先给定的命令发出各种控制信号,使整个计算过程能一步步地进行。

4.输入/输出接口(I/O接口):光有上面说的这三部分还不够。原始的数据与命令要输入,计算的结果要输出,都需要按先后顺序进行,有时还需等待。这种对输入、输出数据进行一定管理的“门”电路在单片机中称为“口”(Port)。

打开网易新闻 查看更多图片

输入/输出口又分为并行口和串行口等。

人们往往把运算器和控制器合并称为中央处理单元——CPU。单片机除了进行运算外,还要完成控制功能,所以离不开计数和定时。因此,在单片机中还设置了定时器兼计数器。

单片机里面还有一个时钟电路,使单片机在进行运算和控制时,都能有节奏地进行。另外,还有所谓的“中断系统”,使CPU根据外部事态的轻重缓急来采取适当的应付措施。