《嵌入式Linux应用开发完全手册》——第1章 嵌入式Linux开发概述 1.1 嵌入式系统介绍

第1章 嵌入式Linux开发概述

本章目标

了解嵌入式系统的概念及发展历史 anniu

了解ARM处理器 anniu

了解各类嵌入式操作系统 anniu

1.1 嵌入式系统介绍

1.1.1 嵌入式系统的定义和特点

1.嵌入式系统的定义

嵌入式系统的定义为:以应用为中心、以计算机技术为基础、软硬件可裁剪、适用于应用系统,对功能、可靠性、成本、体积、功耗严格要求的专用计算机系统。它的主要特点是嵌入、专用。

从20世纪70年代起,微型机以小型、价廉、高速数值计算等特点迅速走向市场,它所具备的智能化水平在工业控制领域发挥了作用,常被组装成各种形状,“嵌入”到一个对象体系中,进行某类智能化的控制。这样一来,计算机便失去了原来的形态与“通用”的功能,为区别于通用计算机系统,将这类为了某个“专用”的目的,而“嵌入”到对象体系中的计算机系统,称为嵌入式计算机系统,简称嵌入式系统。

含有嵌入式系统的设备称为嵌入式设备,这在生活中随处可见:电子表、手机、MP3播放器、摇控器等,涵盖了生产、工业控制、通信、网络、消费电子、汽车电子、军工等领域。从通俗、广义的角度来说,除电脑、超级计算机等具备比较强大计算能力及系统资源(比如内存、存储器等)的电子系统之外,凡具备计算能力的设备都可称为嵌入式设备。随着技术的进步,嵌入式设备的性能越来越高,一个相对高级的PDA的性能并不弱于一般的电脑。

2.嵌入式系统的特点

嵌入式设备常应用于“特定”场合,与“通用的”个人电脑相比,具备以下特点。

(1)软件、硬件可裁剪。

将市面上的手机拆开,会发现虽然它们的功能是相似的,但是所用芯片多种多样,所用的操作系统也有多种,操作界面更是千变万化,操作的便利性各有千秋。这不同于个人电脑,CPU除了INTEL就是AMD公司的,操作系统多用Windows。功能、成本、开发效率等条件决定了嵌入式设备的选材多样化,软件、硬件可裁剪,即当不需要某项功能时,可以去除相关的软硬件。

(2)对功能、可靠性、成本、体积、功耗严格要求。

功能、可靠性、功耗这3点是软件开发人员最关注的地方。仍以手机为例,当选定硬件平台之后,处理器的性能已经被限定了,怎样使得手机的操作更人性化、菜单响应更快捷、具备更多更好的功能,这完全取决于软件。需要驱动程序和应用程序配合,最大程度地发挥硬件的性能。

也许读者见过这类手机,它的屏幕总是经过很长时间才熄灭,这使得它的电池很快耗光,只要在编写软件时进行改进,就可能成倍地延长电池的使用时间。一个优秀的嵌入式系统,对硬件性能的“压榨”、对软件的细致调节,已经到了精益求益的地步。有时候甚至为了节省几秒的启时间而大动脑筋,调整程序的启动顺序让耗时的程序稍后运行、改变程序的存储方式以便更快地加载等,甚至通过显示一个进度条让用户觉得时间没那么长。

1.1.2 嵌入式技术的发展历史

嵌入式技术在20世纪70年代起源于微型机,从此之后,通用计算机与嵌入式计算机就走上了两条不同的道路。通用计算机系统的技术要求是高速、海量的数值计算;技术发展方向是总线速度的无限提升,存储容量的无限扩大。 而嵌入式计算机系统的技术要求则是对象的智能化控制能力;技术发展方向是与对象系统密切相关的嵌入性能、控制能力与控制的可靠性。

嵌入式技术的发展日新月异,经历了单片机(SCM)、微控制器(MCU)、系统级芯片(SoC)3个阶段。

1.SCM(Single Chip Microcomputer)

又称单片微型计算机,简称单片机,随着大规模集成电路的出现及其发展,计算机的CPU、RAM、ROM、定时数器和多种I/O接口集成在一片芯片上,形成芯片级的计算机。

这个阶段主要是“寻求”单片形态嵌入式系统的最佳体系结构,也是从这个阶段起,嵌入式计算机技术与通用计算机技术走上两条不同的道路。

2.MCU(Micro Controller Unit)

MCU即微控制器阶段的特征是:“满足”各类嵌入式应用,根据对象系统要求扩展各种外围电路与接口电路,突显其对象的智能化控制能力。它所涉及的领域都与对象系统相关,因此,发展MCU的重任不可避免地落在电气、电子技术厂家的身上。

实际上,MCU、SCM之间的概念在日常工作中并不严格区分,很多时候一概以“单片机”称呼。随着能够运行更复杂软件(比如操作系统)的SoC的出现,“单片机”通常是指不运行操作系统、功能相对单一的嵌入式系统,但这不是绝对的,比如8051上就可以运行RTX51实时操作系统,它的大小只有6kB,相比于嵌入式Linux、Windows CE等操作系统而言比较简单。

3.SoC(System on a Chip)

随着设计与制造技术的发展,集成电路设计从晶体管的集成发展到逻辑门的集成,现在又发展到IP的集成,即SoC(System on a Chip)设计技术。SoC可以有效地降低电子/信息系统产品的开发成本,缩短开发周期,提高产品的竞争力,是未来工业界将采用的最主要的产品开发方式。

虽然SoC一词多年前就已出现,但到底什么是SoC则有各种不同的说法。在经过了多年的争论后,专家们就SoC的定义达成了一致意见。这个定义虽然不是非常严格,但明确地表明了SoC的特征。

① 实现复杂系统功能的VLSI;

② 采用超深亚微米工艺技术;

③ 使用一个以上嵌入式CPU/数字信号处理器(DSP);

④ 外部可以对芯片进行编程;

⑤ 主要采用第三方IP进行设计。

从上述SoC的特征来看,SoC中包含了微处理器/微控制器、存储器以及其他专用功能逻辑,但并不是包含了微处理器、存储器以及其他专用功能逻辑的芯片就是SoC,8051就集成了微处理器、存储器时部件,它不属于SoC。SoC技术被广泛认同的根本原因,并不在于SoC可以集成多少个晶体管,而在于SoC可以用较短时间设计出来,这是SoC的主要价值所在——缩短产品的上市周期。

因此,SoC更合理的定义为:SoC是在一个芯片上由于广泛使用预定制模块IP(Intellectual Property)而得以快速开发的集成电路。

本书介绍的S3C2410/S3C2440就属于SoC,它们集成了处理器、内存管理单元(MMU)、NAND Flash控制器等部件,而处理器是基于ARM公司的IP设计的。

嵌入式软件随着硬件的发展,也发生了很大的变化。在SCM、MCU阶段,嵌入式软件的编写通常由相关行业的电气、电子技术专家编写,计算机专业队伍并没有真正进入单片机应用领域。因此,电子技术应用工程师以自己习惯性的电子技术应用模式从事单片机的应用开发。这种应用模式最重要的特点是:软、硬件的底层性和随意性;对象系统专业技术的密切相关性;缺少计算机工程设计方法。

随着嵌入式处理器性能的快速提高,网络、通信、多媒体技术得以发展,很多嵌入式设备都具备收发邮件、编写文档、视听等功能,计算机专业人士开始进入嵌入式领域。这形成了明显的技术特点:基于操作系统、以网络、通信为主的“非嵌入式底层”应用——除要完成的功能比较特殊、性能比较苛刻外,嵌入式应用软件的开发已经与普通软件开发没有差别。实际上,很多基于操作系统的嵌入式应用程序就是先在PC上模拟验证,最后才移入嵌入式设备的。

以一个简单的例子加以说明:以前基于单片机编写的软件,通常是在main函数中定义一个无限循环,然后在里面查询各类输入事件,并作出相应处理,它直接操作硬件;而基于SoC的软件多是在操作系统上面运行,通过驱动程序操作硬件,这使得软件开发以分工的形式进行。

时间: 2024-08-15 08:44:06

《嵌入式Linux应用开发完全手册》——第1章 嵌入式Linux开发概述 1.1 嵌入式系统介绍的相关文章

《嵌入式Linux应用开发完全手册》——1.2 基于ARM处理器的嵌入式Linux系统

1.2 基于ARM处理器的嵌入式Linux系统 1.2.1 ARM处理器介绍 1.ARM的概念 嵌入式处理器种类繁多,有ARM.MIPS.PPC等多种架构.ARM处理器的文档丰富,各类嵌入式软件大多(往往首选)支持ARM处理器,使用ARM开发板来学习嵌入式开发是个好选择.基于不同架构CPU的开发是相通的,掌握ARM架构之后,在使用其他CPU时也会很快上手.当然,作为产品进行选材时,需要考虑的因素就非常多了,这不在本书的介绍范围之内. ARM(Advanced RISC Machine),既可以认

《Linux 高级程序设计(第三版)》——第2章 Linux下C语言开发工具 2.1 常用编辑工具

第2章 Linux下C语言开发工具 Linux 高级程序设计(第三版) Linux操作系统绝大多数的内核代码都是由C语言编写,因此,在Linux下的应用程序,特别是需要与内核进行交互的程序一般都是由C语言编写的,C++程序并不多见,例如驱动开发几乎都是由C语言编写的.因此,本书所有内容都立足于Linux下的C程序开发.本章主要介绍Linux下进行C语言程序开发所必备的工具. 本章第1节主要介绍Linux环境下常用的开发工具,包括常用的编辑器.这些编辑器类似于Windows平台下的记事本和Word

手把手教你写Linux设备驱动---中断(一)(基于友善之臂4412开发板)

今天,我们要来实现一个基于tiny4412开发板上的最简本的按键中断驱动程序,那么,写这个程序之前,我们先来了解下Linux中断的基本知识. 在Linux内核中,每一个能够发出中断请求的硬件设备控制器都有一条名为IRQ的输出线.所有现在存在的IRQ线都与一个名为可编程中断控制器的硬件电路的输入引脚相连,我们可以来看下4412上与板子上相连的按键. 下面这张电路图,也就是4412板子上按键的电路图和CPU的连接关系图: 我们明显可以看到,4个按键分别接在GPX3这几个引脚上,对应着引脚,接下来我们

Linux管理员手册(3)--存贮介质_unix linux

Linux管理员手册(3)--磁盘和其他存贮介质的使用 安装和升级系统时,需要对硬盘做很多工作.必须在硬盘上做文件系统,使文件能存在其上,并为系统不同的部分保留空间. 本章说明所有这些初始化工作.通常,一旦你建立了系统,就不必再做这些工作(除了使用软盘).如果你要增加一个新硬盘或更好地调整你的硬盘的使用,那么可能回到这一章. 管理磁盘的基本任务有: 格式化磁盘.这为磁盘进入使用做一些工作,比如检查坏扇区.(现在多数硬盘无须格式化.) 给硬盘分区,如果想用于互相不干扰的几件事.分区的一个原因是要在

windows下开发的RCP,能直接发布linux产品么?

问题描述 有谁试过么?发布的时候执行环境的选项有linux,win32,macos,solaris,可我导出来在linux下用不了.还是要用linux的Eclipse的再编译一遍再发布?现在下了linux下的eclipse,除了linux下的swt库,还要下什么? 解决方案 解决方案二:要下deltapack,而不光是SWT.解决方案三:谢谢,那确定不能直接导出Linux下的产品了么?可是他弄个那样的功能干嘛啊...解决方案四:用不用的版本开发适应不同的环境打包发布就没问题了解决方案五:引用2楼

《Linux/UNIX系统编程手册(上、下册)》——1.2 Linux简史

1.2 Linux简史 术语Linux通常用来指代完整的类UNIX(UNIX-like)操作系统,Linux内核只是其中的一部分.这么定义多少有些措辞不当,因为一般商业Linux发布版中所含的诸多关键组件实际上发源于另一项目,早在Linux问世前几年就已经启动了. 1.2.1 GNU项目 1984年,Richard Stallman之前一直供职于MIT的一位天赋异禀的程序员,开始着手创建一个"自由的(free)"UNIX实现.Stallman的观点属于道德层面,而对"free

手把手教你从零实现Linux misc设备驱动一(基于友善之臂4412开发板)

关于如何来写一个misc设备,在前面有篇文章已经介绍了大致的流程,现在就让我们来实现一个最简单的misc设备驱动. http://blog.csdn.net/morixinguan/article/details/52700146 关于前面的字符设备有以下四篇文章,可以做参考: http://blog.csdn.net/morixinguan/article/details/55002774 http://blog.csdn.net/morixinguan/article/details/550

《Android深度探索(卷1):HAL与驱动开发》——1.5节如何学习Linux驱动开发

1.5 如何学习Linux驱动开发 Android深度探索(卷1):HAL与驱动开发 由于Linux的内核版本更新较快(稳定版本1至3月更新一次,升级版本1至2周更新一次),每一次内核的变化就意味着Linux驱动的变化(就算不需要修改驱动代码,至少也得在新的Linux内核版本下重新编译),所以Linux内核的不断变化对从事Linux驱动开发的程序员影响比较大.不过这对于学习Linux驱动开发来说影响相对较小.因为不管是哪个版本的Linux内核,开发Linux驱动的方法和步骤基本相同,只要掌握了一

《Linux C编程从入门到精通》一第2章 在Linux中编写C语言代码2.1 Linux中C语言程序开发流程和工具介绍

第2章 在Linux中编写C语言代码 Linux C编程从入门到精通 Linux作为一个操作系统,一项重要的功能就是要支持用户编程.传统的UNIX下的程序开发语言是C语言,C语言是一种平台适应性强.易于移植的语言.Linux是用C语言写成的.反过来,Linux又为C语言提供了很好的支持,C语言编译工具gcc.调试工具gdb属于最早开发出来的一批自由软件.因此Linux与C语言形成了完美的结合,为用户提供了一个强大的编程环境,本章将介绍在Linux中编写C语言程序的流程和具体方法. 2.1 Lin