第1章 初识嵌入式系统

目录

1.1概述

1.1.1 嵌入式系统的定义

1.1.2嵌入式系统的发展历史

1.1.3嵌入式系统的发展的新变化

1.2嵌入式系统的组成

1.3ARM处理器

1.3.1ARM处理器介绍

1.3.2ARM体系结构的发展

1.3.3ARM处理器

1.4Linux操作系统

1.4.1Linux内核版本

1.4.2Linux发行版本

1.5linux系统安装

 任务1 虚拟机与主机共享文件


1.1概述

嵌入式系统和普通人的生活联系非常紧密,应用日益广泛,可以说是无所不在、无处不在。与通常使用的PC相比,嵌入式系统的形式多样、体积小,可以灵活地适应各种设备的需要。

1.1.1 嵌入式系统的定义

       嵌入式这个概念却很早就已经存在了,英文为embeded system。但是具体什么是嵌入式系统?国内外专家学者和企业界人士的理解都不尽相同,具有代表性的意见有两种:一种是说嵌入式系统就是嵌入式的计算机系统,另外一种认为嵌入式系统是一种机电结合、软硬结合执行某种特殊功能的系统。从广义上讲,凡是带微处理器的专用计算机系统都可以称为嵌入式系统,如各类单片机和DSP系统。但是不管如何定义,“嵌入”这两个字,或英文“embed”本身就提示我们:嵌入式系统是“嵌”在另一个系统中的,所以我们可以把嵌入式系统看成是一种专用的计算机系统,其一般是以另外一个更大系统的子系统形式存在的。

       专用的计算机系统意味着嵌入式系统是解决特定问题的,一个子系统表明嵌入式系统是另一个系统的一部分。专用和嵌入是嵌入式系统本质的特征。嵌入式系统特别强调“量身定做”的原则,开发人员往往需要针对某一种特殊用途开发出一个截然不同的嵌入式系统来,所以我们很难不经过“大量”修改而直接将一个嵌入式系统全套用到其他的嵌入式产品上去。这提醒嵌入式系统开发人员不要试图去开发一个万能系统,嵌入式系统一定是针对特定系统解决特定问题的。同时也提醒我们,嵌入式系统是灵活多变,能够适应多种环境和场合,软硬件可裁剪、可配置;其资源相对也是比较有限的。

1.1.2嵌入式系统的发展历史

      嵌入式系统最初的应用是基于单片机的,大多以可编程控制器的形式出现,具有监测、伺服、设备指示等功能,通常应用于各类工业控制和飞机、导弹等武器装备中,一般没有操作系统的支持,只能通过汇编语言对系统进行直接控制,运行结束后再清除内存。这些装置虽然已经初步具备了嵌入式的应用特点,但仅仅只是使用8位的CPU芯片来执行一些单线程的程序,因此严格地说还谈不上"系统"的概念。 

     20世纪80年代,随着微电子工艺水平的提高,IC制造商开始把嵌入式应用中所需要的微处理器、I/O接口、串行接口以及RAMROM等部件统统集成到一片VLSI中,制造出面向I/O设计的微控制器,并一举成为嵌入式系统领域中异军突起的新秀。与此同时,嵌入式系统的程序员也开始基于一些简单的"操作系统"开发嵌入式应用软件,大大缩短了开发周期、提高了开发效率。 

      20世纪90年代,在分布控制、柔性制造、数字化通信和信息家电等巨大需求的牵引下,嵌入式系统进一步飞速发展,而面向实时信号处理算法的DSP产品则向着高速度、高精度、低功耗的方向发展。随着硬件实时性要求的提高,嵌入式系统的软件规模也不断扩大,逐渐形成了实时多任务操作系统(RTOS),并开始成为嵌入式系统的主流。

       21世纪无疑将是一个网络的时代,将嵌入式系统应用到各种网络环境中去的呼声自然也越来越高。目前大多数嵌入式系统还孤立于Internet之外,随着Internet的进一步发展,以及Internet技术与信息家电、工业控制技术等的结合日益紧密,嵌入式设备与Internet的结合才是嵌入式技术的真正未来。

1.1.3嵌入式系统的发展的新变化

信息时代和数字时代的到来,为嵌入式系统的发展带来了巨大的机遇,同时也对嵌入式系统厂商提出了新的挑战。目前,嵌入式技术与Internet技术的结合正在推动着嵌入式技术的飞速发展,嵌入式系统的研究和应用产生了新的显著变化:

1)新的微处理器层出不穷,嵌入式操作系统发展迅速。嵌入式系统进一步降低了功耗和软硬件成本。

2)各类嵌入式Linux操作系统迅速发展。由于具有源代码开放、系统内核小、执行效率高、网络结构完整等特点,很适合信息家电等嵌入式系统的需要。

 3)通用计算机上使用的新技术、新观念开始逐步移植到嵌入式系统中,如嵌入式数据库、移动代理、实时CORBA等,嵌入式软件平台得到进一步完善。

 4)网络互联成为必然趋势。网络化、信息化的要求随着Internet技术的成熟和带宽的提高而日益突出,以往功能单一的设备如电话、手机、冰箱、微波炉等功能不再单一,结构变得更加复杂。

 5)人机交互界面更加友好。

 6)嵌入式系统的开发成了一项系统工程,嵌入式系统开发愈加复杂。开发厂商不仅要提供嵌入式软硬件系统本身,同时还要提供强大的硬件开发工具和软件支持包。

1.2嵌入式系统的组成

嵌入式系统与传统的PC一样,也是一种计算机系统,是由硬件和软件组成的。一般而言,典型的嵌入式系统的又可以进一步分成四个部分:嵌入式处理器、嵌入式外围设备、嵌入式操作系统和嵌入式应用软件,如下图所示:

嵌入式处理器 

      嵌入式处理器是嵌入式系统硬件平台的核心。嵌入式处理器与通用处理器最大的不同点在于,嵌入式CPU大多工作在为特定用户群所专门设计的系统中,它将通用CPU中许多由板卡完成的任务集成到芯片内部,从而有利于嵌入式系统在设计时趋于小型化,同时还具有很高的效率和可靠性。 嵌入式处理器的体系结构经历了从CISC(复杂指令集)至RISC(精简指令集)和Compact RISC的转变,位数则由4位、8位、16位、32位逐步发展到64位。目前常用的嵌入式处理器可分为低端的嵌入式微控制器(Micro Controller UnitMCU)、中高端的嵌入式微处理器(Embedded Micro Processor UnitEMPU)、用于计算机通信领域的嵌入式DSP处理器(Embedded Digital Signal ProcessorEDSP)和高度集成的嵌入式片上系统(System On ChipSOC)。

      目前几乎每个半导体制造商都生产嵌入式处理器,并且越来越多的公司开始拥有自主的处理器设计部门,据不完全统计,全世界嵌入式处理器已经超过1000多种,流行的体系结构有30多个系列,其中以ARMPowerPCMC 68000MIPS等使用得最为广泛。

 嵌入式外围设备 

      在嵌入系统硬件系统中,除了中心控制部件(MCUDSPEMPUSOC)以外,用于完成存储、通信、调试、显示等辅助功能的其他部件,事实上都可以算作嵌入式外围设备。外部设备在不同的系统中有不同的选择。例如,在汽车上,外部设备主要是传感器;而在一般手机上,外部设备可以是键盘、液晶屏幕等。

嵌入式操作系统 

      嵌入式操作系统是用来支持嵌入式应用的系统软件,是嵌入式系统极为重要的组成部分,通常包括与硬件相关的底层驱动程序、系统内核、设备驱动接口、通信协议、图形用户界面(GUI)等。嵌入式操作系统具有通用操作系统的基本特点,如能够有效管理复杂的系统资源,能够对硬件进行抽象,能够提供库函数、驱动程序、开发工具集等。但与通用操作系统相比较,嵌入式操作系统在系统实时性、硬件依赖性、软件固化性以及应用专用性等方面,具有更加鲜明的特点。

 嵌入式应用软件

嵌入式应用软件是针对特定应用领域,基于某一固定的硬件平台,用来达到用户预期目标的计算机软件,由于用户任务可能有时间和精度上的要求,因此有些嵌入式应用软件需要特定嵌入式操作系统的支持。嵌入式应用软件和普通应用软件有一定的区别,它不仅要求其准确性、安全性和稳定性等方面能够满足实际应用的需要,而且还要尽可能地进行优化,以减少对系统资源的消耗,降低硬件成本。 

1.3ARM处理器

确切地说ARM处理器不是指某种处理器,而是采用ARM体系结构开发的处理器。可以说说ARM处理器是目前在嵌入式领域最重要的处理器。目前有数十家公司使用ARM体系结构开发自己的芯片,支持的外部设备和功能丰富多样。

1.3.1ARM处理器介绍

通常人们认为ARM(Advanced RISC Machine)是一家公司的名字,也可以认为是一类处理器的统称,还可以认为是一种技术的名字。

ARM公司于1991年成立于英国剑桥,是微处理器行业的一家知名企业,自己本身并不生产芯片,而是主要通过出售芯片设计技术的授权获取利润。该企业设计了大量低成本、高性能、低功耗的RISC处理器、 相关技术及软件。

目前,采用ARM技术知识产权(IP核)的微处理器,即通常所说的 ARM微处理器,已遍及工业控制、消费类电子产品、通信系统、网络系统、无线系统 等各类产品市场。基于ARM技术的微处理器应用约占据了32位RISC微处理器80%以 上的市场份额,其中在手机市场,ARM占有绝对的垄断地位。

1.3.2ARM体系结构的发展

体系结构,定义了指令集(ISA)和基于这一体系结构下处理器的编程模型。 基于同种体系结构可以有多种处理器,每个处理器性能不同,所面向的应用也就不 同,但每个处理器的实现都要遵循同一体系结构。

1983年ARM公司开始ARM的设计,早期的V1结构、V2结构有26位的寻址空间,现已废弃不用。在1980年代晚期的V3结构将寻址范围扩展到32位,是ARM质一般的飞跃。后来V4结构不再强制要求与以前的26位体系结构版本兼容,它清楚地指明了哪个指令会引起未定义指令异常发生,V4结构可谓是真正地得到了推广,值得一提的是16位指令集Thumb指令集就是在这个版本上成立的。

V5结构在版本4的基础上,对现在指令的定义进行了必要的修正,对版本4体系结构进行了扩展,并增加了指令。V5结构的ARM处理器提升了ARM和Thumb两种指令的交互工作能力,同时 有了DSP指令—V5E结构、Java指令—V5J结构的支持。

ARM体系结构版本6是2001年发布的,该版本增加了媒体指令。属于V6体系结构的处理器核有ARM11(2002年发布)。V6体系结构包含ARM体系结构中所有的4种特殊指令集:Thumb指令(T)、DSP指令(E)、Java指令(J)和Media指令。

ARM体系结构版本V7是在版本V6基础上诞生的。V7结构采用了Thumb-2技术,它是在ARM的Thumb代码压缩技术的基础上发展起来的,并且保持了对现存ARM解决方案的完整的代码兼容性。V7结构还采用了NEON技术,将DSP和媒体处理能力提高了近4倍。并支持改良的浮点运算,满足下一代3D图形、游戏以及传统嵌入式控制应用的需求。从此版本开始,ARM公司正式将以前的版本ARM处理器称为经典系列,V7结构及以后处理器称为Cortex系列,并且将 Cortex系列产品分为A(应用处理)、R(实时控制)、M(微控制)三个子系列。

ARM在2012年下半年首次发布采用64位V8架构产品。V8是ARM公司的第一款64位处理器架构,包括AArch64和AArch32二种主要执行状态。其中前者引入了一套新的指令集“A64”专门用于64位处理器,后者后者用来兼容现有的32位ARM指令集。目前我们看到的Cortex-A53, Cortex-A57(现在被A72替代了)二款处理器便属于Cortex-A50系列。

1.3.3ARM处理器

芯片厂家获得ARM公司的授权以后生成出来不同的处理器,ARM处理器的支持(如指令语义)的实现细节可能会有所不同。根据结构体系及内核的差异,目前ARM处理器又分为不同的系列,如下表所示:

                                                            表1ARM处理器内核列表

架构 处理器家族
ARMv1 ARM1
ARMv2 ARM2ARM3
ARMv3 ARM6、ARM7
ARMv4 StrongARMARM7TDMIARM9TDMI
ARMv5 ARM7EJARM9EARM10EXScale
ARMv6 ARM11ARM Cortex-M
ARMv7 ARM Cortex-AARM Cortex-MARM Cortex-R
ARMv8 Cortex-A35、Cortex-A50系列、Cortex-A72、Cortex-A73

     世界各大半导体生产商从ARM公司购买其设计 的 ARM 微处理器核,根据各自不同的应用领域,加入适当的外围电路,从而形成自 己的 ARM 微处理器芯片进入市场,又形成了各自的ARM系列芯片。典型的如基于Cortex-M3内核的意法半导体STM32 系列芯片,基于ARM920T内核的Samsung S3C2442和 S3C2410芯片 ,基于ARM7TDMI(-S)内核的恩智浦半导体LPC2000LH754xx系列芯片等。                           

1.4Linux操作系统

      应用于嵌入式系统的的嵌入式操作系统很多,如Linux、uCOS-II、WinCE等,其中Linux系统是应用最为广泛的。 Linux系统是一个免费使用的类似Unix的操作系统,最初运行在X86体系结构,目前已被移植到数十种处理器上,如ARM、LoongSon等。Linux最初是由芬兰的Linux Torvalds设计开发,经过多年的发展,已经形成一个非常庞大、功能完善的操作系统。

       嵌入式Linux是以Linux为基础的嵌入式操作系统,它被广泛应用在移动电话、媒体播放器、消费性电子产品以及航空航天等领域。嵌入式Linux是将Linux操作系统进行裁剪修改,使之能在嵌入式计算机系统上运行的一种操作系统。嵌入式Linux既继承了Internet上无限的开放源代码资源,又具有嵌入式操作系统的特性。嵌入式Linux的特点是版本免费,而且性能优异,软件移植容易,代码开放,有许多应用软件支持,应用产品开发周期短,新产品上市迅速,稳定性好、安全性好。

1.4.1Linux内核版本

      严格来讲,Linux这个词本身只表示Linux内核,任何使用Linux内核的操作系统都可以称为Linux操作系统。 内核,是一个操作系统的核心。是基于硬件的第一层软件扩充,提供操作系统的最基本的功能,是操作系统工作的基础,它负责管理系统的进程、内存、设备驱动程序、文件和网络系统,决定着系统的性能和稳定性。Linux内核的主要模块(或组件)分以下几个部分:存储管理、CPU和进程管理、文件系统、设备管理和驱动、网络通信,以及系统的初始化(引导)、系统调用等。

       Linux内核是源码开源的,源代码可至https://www.kernel.org下载。另外网站https://elixir.bootlin.com/linux/latest/source,提供了在线工具帮助我们阅读有关代码。

       Linux内核版本号一般由3组数字组成:X.Y.Z。X表示主版本号,Y表示次版本号,Z表示修订版本号。早期次版本号为奇数时代表的是不稳定版本,偶数时代表稳定版本。目前Linux内核的最新的稳定版本为5.1.10版。

小技巧:如何查看Linux内核版本号?

     在Linux终端中输入 uname -a

1.4.2Linux发行版本

      Linux系统是开放的,任何人都可以制作自己的系统。Linux 主要作为Linux发行版(通常被称为"distro")的一部分而使用。这些发行版由个人,松散组织的团队,以及商业机构和志愿者组织编写。它们通常包括了其他的系统软件和应用软件,以及一个用来简化系统初始安装的安装工具,和让软件安装升级的集成管理器。大多数系统还包括了像提供GUI界面的XFree86之类的曾经运行于BSD的程序。 一个典型的Linux发行版包括:Linux内核,一些GNU程序库和工具,命令行shell,图形界面的X Window系统和相应的桌面环境,如KDEGNOME,并包含数千种从办公套件编译器文本编辑器到科学工具的应用软件。

      发行版为许多不同的目的而制作, 包括对不同计算机结构的支持, 对一个具体区域或语言的本地化,实时应用,和嵌入式系统,甚至许多版本故意地只加入免费软件。已经有超过三百个发行版被积极的开发,最普遍被使用的发行版有大约十二个。在如下https://www.linux.org/pages/download可以找到当前较为流行的Linux发行版本的下载。

小技巧:如何查看Linu发行版本号?

     在Linux终端中输入 lsb_release -a

Ubuntu

Ubuntu是一个以桌面应用为主的开源GNU/Linux操作系统。提到Linux,作为几乎所有Linux相关产品的榜首,基于Debian的Ubuntu可谓独树一帜,特别是为了满足每个用户的需求,出现了不少版本或风格的Ubuntu。其中桌面版和服务器版从简易的安装,到卓越的硬件恢复能力,再到世界级的商业支持水平,Ubuntu都超越了所有其它版本。

Red Hat

Redhat linux是全世界应用最广泛的Linux。Redhat(红帽)是桌面虚拟化世界领先的开源解决方案供应商,使用社区驱动的方式提供可靠和高性能的云、虚拟化、存储、Linux® 和中间件技术。

CentOS操作系统平台

CentOS也叫做社区企业操作系统,是企业Linux发行版Red Hat Enterprise Linux(以下称之为RHEL)依照开放源代码规定释出的源代码所编译而成,而且在RHEL的基础上修正了不少已知的 Bug ,相对于其他 Linux 发行版,其稳定性值得信赖。

Android

Android主要使用于移动设备,如智能手机平板电脑,由Google(谷歌)公司和开放手机联盟领导及开发。Android 是运行于Linux kernel之上,但并不是GNU/Linux。Android 为了达到商业应用,必须移除被GNU GPL授权证所约束的部份,在一般GNU/Linux 里支持的功能,Android 大都没有支持,包括CairoX11AlsaFFmpegGTKPangoGlibc等都被移除掉了。  

Deepin

深度操作系统,亦称为 Deepin,原名 Hiweed Linux 及 Linux Deepin,是武汉深之度科技有限公司开发的 Linux 发行版。Linux Deepin 项目是目前中国最活跃的 Linux 发行版社区之一。除操作系统外,深度团队也进行桌面环境和配套基础软件的开发,并与第三方厂商合作开发 Linux 版本应用。目前系统已经拥有很多针对 Deepin 系统开发的应用程序。此外开发团队也参与 Linux 内核补丁相关作业。

1.5Linux操作系统安装

我们见到的绝大多数的应用软件是以本地方式开发的,即本机(HOST)开发、调试,本机运行。但是一般来说嵌入式系统资源有限,所以嵌入式系统一般采用交叉开发的方式进行。所谓交叉开发是指嵌入式系统的开发环境和运行环境是不一样的。嵌入式系统的软件是在PC机(也叫宿主机,Host)上进行开发,而其是在开发板(也叫目标机,target)上运行的,运行与开发的环境是不一致的,开发时要使用宿主机上的编译、汇编及连接工具(一般是GNU的GCC)生成在嵌入式系统(目标机、目标系统)上可执行的二进制代码,然后把可执行文件下载到目标机上执行。

交叉开发环境

下载的方式有很多,可以采用串口、以太网口等,具体的方法后面的章节再详细叙述。

因此对于嵌入式系统开发工作而言,第一步一般就是安装一台装有指定操作系统的PC作为宿主机,目前来说主要有几个方案来在宿主机上安装Linux操作系统:

  • 在Windows下安装虚拟机后,再在虚拟机中安装Linux操作系统
  • 直接安装Linux操作系统

       由于大部分人对Windows比较熟悉,很多日常工作也都是使用的Windows操作系统,所以大部分人采取第一种方法。

       虚拟机软件一般采用VMware Workstation,也可以采用VirtualBox或VirtualPC。VMware Workstation属于商业软件,性能最优。VirtualBox和VirtualPC都是免费的。这三者都符合我们的要求,安装使用的方法也类似。

       本系列安装的虚拟机工具为VMware-workstation-full-8.0.2-591240,在虚拟机中安装的操作系统为ubuntu10.04LTS 32bit。如何安装VMware Workstation及Ubuntu 有网上有比较充分的资料,只要有Windows系统安装经验的,很容易掌握,而且安装的过程需要很长,此处不再叙述。并且一般我们只要在一台机器上安装一次,其他机器只要安装好了虚拟机(如VMware Workstation等),然后将旧机器上的虚拟机文件(一般为*.vmx,*.vmdk格式)拷贝到新机器上,用vmware打开虚拟机文件配置文件,那么就有了一个与旧机器完全一样的环境,这个过程与重新安装系统相比要快得多,此处不再叙述。

小贴士:

本系列提供如下镜像供下载,解压后,在虚拟机中打开其配置文件即可使用。

链接:https://pan.baidu.com/s/1Y-45kkMekRDSJmQe2dGD0A 
提取码:8esb 

其中Ubuntu启动以后,其中的用户ada的密码为ada

 任务1 虚拟机与主机共享文件

设置文件共享后,能够在主机和虚拟机之间进行文件传输,对于习惯于在Windows下工作的人来说这是非常方便的。其操作步骤如下:

1)选择

2)单击“Add”按钮

3)单击“Next”按钮.....当我们进入虚拟机,打开“/mnt/hgfs”'目录下,会发现一个目录“share”,进入“share”目录,可以看到Windows系统下的文件。
 

发布了27 篇原创文章 · 获赞 3 · 访问量 5569

猜你喜欢

转载自blog.csdn.net/wxg_wuchujie88/article/details/91961616
今日推荐