讲师博文
嵌入式的相关概念 来源 : 华清远见     2023-10-20

一、操作系统
嵌入式操作系统介绍
嵌入式操作系统是为嵌入式系统设计的特定操作系统,它可以有效地管理系统资源并提供良好的任务调度、内存管理和驱动程序支持。
满足实时控制要求的嵌入式操作系统(RTOS)操作系统,以下介绍11种主流的RTOS,分别为RTX、Vxworks、QNX、NuttX、μClinux、FreeRTOS,而国产的嵌入式操作系统包括都江堰操作系统(djyos)、IntewellOS、Alios Things、Huawei LiteOS、SylixOS。
1、RTX
RTX是ARM公司的一款嵌入式实时操作系统,使用标准的C结构编写,运用RealView编译器进行编译。不仅仅是一个实时内核,还具备丰富的中间层组件,不但免费,而且代码也是开放的。
主要功能:开始和停止任务(进程),除此之外还支持进程通信,例如任务的同步、共享资源(外设或内存)的管理、任务之间消息的传递。开发者可以使用基本函数去开启实时运行器,去开始和终结任务,以及去传递任务间的控制(轮转调度)。开发者可以赋予任务优先级。
主要特点:支持时间片,抢占式和合作式调度。不限制数量的任务,每个任务都具有254的优先级。不限制数量的信号量,互斥信号量,消息邮箱和软定时器。支持多线程和线程安全操作。使用MDK基于对话框的配置向导,可以很方便的完成MDK的配置。
2、Vxworks
美国WindRiver公司于1983年设计开发的一种嵌入式实时操作系(RTOS),具有硬实时、确定性与稳定性,也具备航空与国防、工业、医疗、汽车、消费电子产品、网络及其他行业要求的可伸缩性与安全性。
主要功能:
支持可预测的任务同步机制、支持多任务间的通信、存储器优化管理、操作系统的(中断延迟、任务切换、驱动程序延迟等)行为是可知的和可预测的。实时时钟服务+中断管理服务。
主要特点:
具有一个高性能的操作系统内核Wind(实时性好、可裁减)友好的开发调试环境、较好的兼容性、支持多种开发和运行环境。
心仅提供4种服务:进程调度、进程间通信、底层网络通信和中断处理,其进程在独立的地址空间运行。所有其它OS服务,都实现为协作的用户进程,因此QNX核心非常小巧(QNX4.x大约为12Kb)而且运行速度极快。
4、NuttX
NuttX是一个实时嵌入式操作系统(Embedded RTOS),第一个版本由 Gregory Nutt 于 2007 年在宽松的 BSD 许可证下发布。
主要功能:可以构建为开放的、平面的嵌入式 RTOS,或单独构建为具有系统调用接口的微内核。容易扩展到新的处理器架构、 SoC 架构或板级架构。实时的、确定性的、支持优先级继承。BSD 套接字接口。优先级管理的扩展。可选的具有地址环境的任务(进程)。
主要特点:配置灵活,采用模块化设计,核心部分由小同的组件构成,包括内核、C语言库和底层运行包等。每个组件可提供大量的配置选项(实时内核也可作为可选配置),使用eCos提供的配置工具可以很方便地配置,并通过不同的配置使得eCos能够满足不同的嵌入式应用要求。
5、μClinux
μClinux是一种优秀的嵌入式Linux版本,其全称为micro-control Linux,从字面意思看是指微控制Linux。同标准的Linux相比,μClinux的内核非常小,但是它仍然继承了Linux操作系统的主要特性,包括良好的稳定性和移植性、强大的网络功能、出色的文件系统支持、标准丰富的API,以及TCP/IP网络协议等。因为没有MMU内存管理单元,所以其多任务的实现需要一定技巧。
μClinux在结构上继承了标准Linux的多任务实现方式,分为实时进程和普通进程,分别采用先来先服务和时间片轮转调度,仅针对中低档嵌入式CPU特点进行改良,且不支持内核抢占,实时性一般。
综上可知,μClinux最大特点在于针对无MMU处理器设计,这对于没有MMU功能的stm32f103来说是合适的,但移植此系统需要至少512KB的RAM空间,1MB的ROM/FLASH空间,而stmf103拥有256K的FLASH,需要外接存储器,这就增加了硬件设计的成本。
μClinux结构复杂,移植相对困难,内核也较大,其实时性也差一些,若开发的嵌入式产品注重文件系统和与网络应用则μClinux是一个不错的选择。
 
6、FreeRTOS
由于RTOS需占用一定的系统资源(尤其是RAM资源),只有μC/OS-II、embOS、salvo、FreeRTOS等少数实时操作系统能在小RAM单片机上运行。
 
相对于C/OS-II、 embOS等商业操作系统,FreeRTOS操作系统是完全免费的操作系统,具有源码公开、可移植、可裁减、调度策略灵活的特点,可以方便地移植到各种单片机上运行,其最新版本为6.0版。
 
作为一个轻量级的操作系统,FreeRTOS提供的功能包括:任务管理、时间管理、信号量、消息队列、内存管理、记录功能等,可基本满足较小系统的需要。
 
FreeRTOS内核支持优先级调度算法,每个任务可根据重要程度的不同被赋予一定的优先级,CPU总是让处于就绪态的、优先级最高的任务先运行。
 
FreeRT0S内核同时支持轮换调度算法,系统允许不同的任务使用相同的优先级,在没有更高优先级任务就绪的情况下,同一优先级的任务共享CPU的使用时间。
 
7、都江堰操作系统(djyos)
都江堰操作系统,简称djyos,得名于一个伟大的水利工程:都江堰。
与传统操作系统不同,djyos不是以线程而是以事件为调度核心,这种调度算法使程序员摆脱模拟计算机执行过程编写程序的思维方式,而是按人类认知世界的方式编写应用程序,就如同在嵌入式编程中引入了VC似的。
djyos的调度算法使程序员可以摆脱线程和进程的束缚,djyos没有有关线程的api,一个完全不懂线程知识的程序员也可以顺利地在djyos下编写应用程序。
djyos 操作系统是以事件为核心进行调度的,这种调度策略使程序员可以按人类认知事物的习惯而不是计算机的习惯来编程。
IntewellOS
Intewell操作系统是科东软件基于“道”系统研发出来的一款微内核实时操作系统(RTOS),具备软件定义控制、高实时、微内核、微秒级响应、高可靠、全国产自主可控、多业务承载、软硬件解耦等一系列的特性。
主要功能:
具有良好的可扩展性、友好的用户开发环境和丰富的开发调试工具,提供POSIX接口,支持目前市面上的主流芯片。Intewell还可以提供Windows和Linux的实时扩展解决方案,可以为用户更好地进行业务部署。
主要特点:
可以单个RTOS在多核上运行,高实时、高可靠;驱动、组件等运行在核心态外的非特权级空间中,系统隔离性和可靠性高;采用用户级线程,线程切换性能以及线程间的同步、通信性能更高;支持X86、ARM、RISC-V等各种架构的硬件平台。
9、Alios Things
据著名媒体嵌入式操作系统RTOS介绍,AliOS Things 是 AliOS 家族旗下、面向 IoT 领域的、高可伸缩的物联网操作系统。AliOS Things将致力于搭建云端一体化IoT基础设施,具备极致性能、极简开发、云端一体、丰富组件、安全防护等关键能力,并支持终端设备连接到阿里云Link,可广泛应用在智能家居、智慧城市、新出行等领域。
10、Huawei LiteOS
嵌入式操作系统RTOS介绍,Huawei LiteOS 是华为面向IoT领域,构建的轻量级物联网操作系统,以轻量级低功耗、快速启动、互联互通、安全等关键能力,为开发者提供 “一站式” 完整软件平台,有效降低开发门槛、缩短开发周期。
11、SylixOS
嵌入式操作系统RTOS介绍,SylixOS 是一个开源的跨平台的大型实时操作系统(RTOS),SylixOS诞生于2006年,经过十多年的持续开发,SylixOS 已成为功能最为全面的国产操作系统之一。目前已有众多产品和项目应用案例,行业涉及航空航天、军事防务、轨道交通、智能电网、工业自动化等诸多领域。SylixOS 完全符合 POSIX 规范,开源社区丰富的自由软件移植非常方便。
 
二、Shell
1. shell介绍
shell可以理解为软件系统提供给用户操作的命令行界面,是人机交互的一种方式
可以使用shell和操作系统、uboot等软件系统交互,但是存在缺陷,例如创建多个文件时,单独touch a.c需要输入多次,为了简便,可以把创建过程写成一个shell脚本程序,执行这个程序的效果和在命令行输入效果一样
shell是一类编程语言,又叫脚本语言。常见shell语言:**sh、bash、**csh、ksh、perl、python等。
脚本语言在嵌入式应用中,主要用来做配置,不会使用过于复杂的脚本语言特性
linux中最常用的脚本是bash
shell脚本的运行机制:解释运行
C语言编写过程为:编写出源代码,然后编译链接成可执行二进制程序,然后才能运行;而脚本程序不同,脚本程序编写好后源代码即可直接运行
shell程序是解释运行的,shell解析器会逐行的解释shell程序代码,然后一行行去运行
2. shell程序初识
shell程序是文本格式的,编辑器是文本编辑器就可以。因为shell要在Linux系统下运行,所以换行符必须为‘\n’,而windows下的换行符为"\r\n",因此windows中的编辑器写的shell不能在Linux下运行,选择在Linux下使用vi编辑器进行编写调试
不需要编译器
shell程序运行有三种方法
./xx.sh,要求程序必须有可执行权限
source xx.sh,source是一个Linux命令,脚本没有可执行权限也可以运行
bash xx.sh,bash是一个脚本解释器,本质上是一个可执行程序,xx.sh相当于传进去的参数
shell程序的第一行一般为:#!/bin/sh,以#!开头,后加上一个pathname,意思为指定shell程序被那个解释器执行。/bin/sh意思为这个脚本将被当前机器中/bin目录下的sh可执行程序执行
在Ubuntu中默认使用的解释器sh其实不是bash而是dash
脚本中的注释使用#,如果要多行注释,则每行前面都要加#
shell就是把以前命令行中输入执行的命令写成了程序,即为了避免反复在命令行下手工输入而设计的一中记录下手工输入步骤,然后通过执行shell脚本程序就能复述手工输入的过程。
 
三、内核模式(kernel mode)
通常也被称为超级模式(supervisor mode),在内核模式下,正在执行的代码具有对底层硬件的完整且不受限制的访问。它可以执行任何CPU指令并引用任何内存地址。内核模式通常保留给操作系统的最低级别,最受信任的功能。内核模式下的崩溃是灾难性的;他们将停止整个计算机。超级用户模式是计算机开机时选择的自动模式。
 
四、用户模式(user node)
当操作系统运行用户应用程序(例如处理文本编辑器)时,系统处于用户模式。当应用程序请求操作系统的帮助或发生中断或系统调用时,就会发生从用户模式到内核模式的转换。在用户模式下,模式位设置为1。从用户模式切换到内核模式时,它从1更改为0。
 
五、GUI
图形用户界面(Graphical User Interface,简称 GUI,又称图形用户接口)是指采用图形方式显示的计算机操作用户界面。嵌入式GUI即在嵌入式设备上使用显示屏去显示操作界面,主要用来与用户互动。
当前市面上主流的嵌入式 GUI 主要有:emWin(uCGUI),TouchGFX,Embedded Wizard GUI,以及QT。
TouchGFX 是这两年才发布的嵌入式 GUI,以界面华丽,流畅以及强劲的 TouchGFX Designer著称。美中不足的是 TouchGFX 是要收费的。
Embeded Wizard GUI 也是这两年才发布的嵌入式 GUI,同样以华丽,流畅的界面和强劲的GUIBuilder 著称。独创 Chora 界面编程语言,让大家的界面编程极其简单,GUIBuilder 上面含有非常多的控件,皮肤和主题供用户选择,且支持调试。 美中不足的是 Embeded Wizard GUI 也是要收费的。
emWin 属于老牌的嵌入式 GUI 了,有着十几年的历史,软件架构和功能比较成熟了。但是做出来比较炫的效果非常麻烦,且不支持较为复杂的控件。
QT是是一个1991年由Qt Company开发的跨平台C++图形用户界面应用程序开发框架。目前使用Linux操作系统的GUI设计大多数是基于QT开发的。
 
x86
目前的PC架构绝大多数都是Intel的X86架构,貌似也是因为INTEL的这个X86架构早就了目前INTEL如日中天的地位。X86架构(The X86 architecture)是微处理器执行的计算机语言指令集,指一个intel通用计算机系列的标准编号缩写,也标识一套通用的计算机指令集合。
X86结构比ARM结构的系统在性能方面要快得多、强得多。X86的CPU随便就是1G以上、双核、四核大行其道,通常使用45nm(甚至更高级)制程的工艺进行生产;而ARM方面:CPU通常是几百兆,最近才出现1G左右的CPU,制程通常使用不到65nm制程的工艺,可以说在性能和生产工艺方面ARM根本不是X86结构系统的对手。X86系统由微软及Intel构建的Wintel联盟一统天下,垄断了个人电脑操作系统近30年,形成巨大的用户群,也深深固化了众多用户的使用习惯,同时x86系统在硬件和软件开发方面已经形成统一的标准,几乎所有x86硬件平台都可以直接使用微软的视窗系统及现在流行的几乎所有工具软件,所以x86系统在兼容性方面具有无可比拟的优势
 

扫码申领本地嵌入式教学实录全套视频及配套源码

上一篇:Linux 多线程全面解析

下一篇:同样是嵌入式工程师,有人月薪8k有人年薪40W,能力上的差别在哪里?

400-611-6270

Copyright © 2004-2024 华清远见教育科技集团 版权所有
京ICP备16055225号-5京公海网安备11010802025203号