我眼中的嵌入式
本次博客我将直入主题:嵌入式之梁哥的第一次课
一、什么是嵌入式:
(百度百科)
IEEE(Institute ofElectrical and Electronics Engineers,美国电气和电子工程师协会)对嵌入式系统的定义:“用于控制、监视或者辅助操作机器和设备的装置”。原文为:Devices Used to Control,Monitor or Assistthe Operation of Equipment,Machinery or Plants)。
嵌入式系统是一种专用的计算机系统,作为装置或设备的一部分。通常,嵌入式系统是一个控制程序存储在ROM中的嵌入式处理器控制板。事实上,所有带有数字接口的设备,如手表、微波炉、录像机、汽车等,都使用嵌入式系统,有些嵌入式系统还包含操作系统,但大多数嵌入式系统都是由单个程序实现整个控制逻辑。[1]
从应用对象上加以定义,嵌入式系统是软件和硬件的综合体,还可以涵盖机械等附属装置。国内普遍认同的嵌入式系统定义为:以应用为中心,以计算机技术为基础,软硬件可裁剪,适应应用系统对功能、可靠性、成本、体积、功耗等严格要求的专用计算机系统。
(以上内容来自百度百科)
也就是说嵌入式是一个系统的简称,是软件和硬件的综合体。
1、 操作系统(OperatingSystem)
(1) 线程与进程实现多任务机制;
(2) 提供网络TCP\IP栈,能够实现远程控制;
(3) 提高软件的移植性;
(4) 提供了很多开元的软件和工具;
(5) 软件开发人员不需要懂硬件;
(百度百科)
操作系统(Operating System,简称OS)是管理和控制计算机硬件与软件资源的计算机程序,是直接运行在“裸机”上的最基本的系统软件,任何其他软件都必须在操作系统的支持下才能运行。
操作系统是用户和计算机的接口,同时也是计算机硬件和其他软件的接口。操作系统的功能包括管理计算机系统的硬件、软件及数据资源,控制程序运行,改善人机界面,为其它应用软件提供支持,让计算机系统所有资源最大限度地发挥作用,提供各种形式的用户界面,使用户有一个好的工作环境,为其它软件的开发提供必要的服务和相应的接口等。实际上,用户是不用接触操作系统的,操作系统管理着计算机硬件资源,同时按照应用程序的资源请求,分配资源,如:划分CPU时间,内存空间的开辟,调用打印机等。
系统作用:
主要体现在两方面:
1.屏蔽硬件物理特性和操作细节,为用户使用计算机提供了便利
指令系统(成千上万条机器指令,它们的执行由微程序的指令解释系统实现的)。计算机问世初期,
计算机工作者就是在裸机上通过手工操作方式进行工作。计算机硬件体系结构越来越复杂。
2.有效管理系统资源,提高系统资源使用效率
如何有效地管理、合理地分配系统资源,提高系统资源的使用效率是操作系统必须发挥的主要作用。资源利用率、系统吞吐量是两个重要的指标。
计算机系统要同时供多个程序共同使用。操作解决资源共享问题!!如何分配、管理有限的资源是非常关键的问题!
操作系统定义:操作系统是计算机系统中最基本的系统软件,它用于有效地管理系统资源,并为用户使用计算机提供了便利的环境。
主要功能:
1、 资源管理;
2、 程序控制;
3、 人机交互;
4、 虚拟内存;
5、 用户接口;
6、 用户界面;
分类方法:
操作系统的种类相当多,各种设备安装的操作系统可从简单到复杂,可分为智能卡操作系统、实时操作系统、传感器节点操作系统、嵌入式操作系统、个人计算机操作系统、多处理器操作系统、网络操作系统和大型机操作系统。[4]
应用领域
可分为桌面操作系统、服务器操作系统、嵌入式操作系统;
所支持用户数
可分为单用户操作系统(如MSDOS、OS/2.Windows)、多用户操作系统(如UNIX、Linux、MVS);
源码开放程度
可分为开源操作系统(如Linux、FreeBSD)和闭源操作系统(如Mac OS X、Windows);
硬件结构
可分为网络操作系统(Netware、Windows NT、OS/2 warp)、多媒体操作系统(Amiga)、和分布式操作系统等;
操作系统环境
可分为批处理操作系统(如MVX、DOS/VSE)、分时操作系统( 如Linux、UNIX、XENIX、Mac OS X)、实时操作系统(如iEMX、VRTX、RTOS,RT WINDOWS);
存储器寻址宽
可以将操作系统分为8位、16位、32位、64位、128位的操作系统。早期的操作系统一般只支持8位和16位存储器寻指宽度,现代的操作系统如Linux和Windows 7都支持32位和64位。
(以上内容来自百度百科)
显而易见,操作系统也是一款软件,只不过它是有特殊功能的软件,可以支持其他应用软件的运行并可以直接和硬件“互动”。
常见操作系统:
DOS操作系统、Windows操作系统、Linux、UNIX、Android和iOS
2、 硬件平台:
ARM与STM32(是内核的)
ARM (ARM处理器内核)
ARM处理器是英国Acorn有限公司设计的低功耗成本的第一款RISC微处理器。全称为Acorn RISC Machine。ARM处理器本身是32位设计,但也配备16位指令集,一般来讲比等价32位代码节省达35%,却能保留32位系统的所有优势。
Stm32(具体的芯片)
STM32系列基于专为要求高性能、低成本、低功耗的嵌入式应用专门设计的ARM Cortex-M3内核。
二、课堂主要内容:
1、应用软件开发:
<1>精通一门语言;
<2>熟悉一款操作系统;
<3>熟悉数据结构、算法;
2、系统软件开发:
<1>精通C语言;(操作系统是C语言实现的)
<2>熟悉汇编语言;(汇编语言访问硬件效率高)
<3>理解操作系统的实现;
<4>熟悉硬件的工作原理;
3、硬件:
CPU(51单片机、ARM)
外设(IIC、SPI、PCI、USB、LCD、蓝牙、WiFi、flash)
4、开发语言:
C、C++、Java(软件基础)
5、操作系统:
Linux、Android、uC\OSII
6、驱动开发:
Linux、Android
7、扩展:
Stm32、数据结构
8、课程安排:
1~2:嵌入式开发概述&Linux开发工具(gcc、gdb、make、shell);
3~8:C语言强化;
9~10:数据结构(链表、栈、队列);
11~12:文件和数据库;
进程与线程:
进程是一个具有独立功能的程序关于某个数据集合的一次运行活动。它可以申请和拥有系统资源,是一个动态的概念,是一个活动的实体。它不只是程序的代码,还包括当前的活动,通过程序计数器的值和处理寄存器的内容来表示。
进程是一个“执行中的程序”。程序是一个没有生命的实体,只有处理器赋予程序生命时,它才能成为一个活动的实体,我们称其为进程。
通常在一个进程中可以包含若干个线程,它们可以利用进程所拥有的资源。在引入线程的操作系统中,通常都是把进程作为分配资源的基本单位,而把线程作为独立运行和独立调度的基本单位。由于线程比进程更小,基本上不拥有系统资源,故对它的调度所付出的开销就会小得多,能更高效的提高系统内多个程序间并发执行的程度。
进程是具有一定独立功能的程序关于某个数据集合上的一次运行活动,进程是系统进行资源分配和调度的一个独立单位。线程是进程的一个实体,是CPU调度和分派的基本单位,它是比进程更小的能独立运行的基本单位。线程自己基本上不拥有系统资源,只拥有一点在运行中必不可少的资源(如程序计数器,一组寄存器和栈),但是它可与同属一个进程的其他的线程共享进程所拥有的全部资源。
线程和进程的区别在于,子进程和父进程有不同的代码和数据空间,而多个线程则共享数据空间,每个线程有自己的执行堆栈和程序计数器为其执行上下文。多线程主要是为了节约CPU时间,发挥利用,根据具体情况而定。线程的运行中需要使用计算机的内存资源和CPU。
线程与进程的区别归纳:
a.地址空间和其它资源:进程间相互独立,同一进程的各线程间共享。某进程内的线程在其它进程不可见。
b.通信:进程间通信IPC,线程间可以直接读写进程数据段(如全局变量)来进行通信——需要进程同步和互斥手段的辅助,以保证数据的一致性。
c.调度和切换:线程上下文切换比进程上下文切换要快得多。
d.在多线程OS中,进程不是一个可执行的实体。