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

简介:

本节书摘来自异步社区《嵌入式Linux应用开发完全手册》一书中的第1章,第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的软件多是在操作系统上面运行,通过驱动程序操作硬件,这使得软件开发以分工的形式进行。

相关文章
|
3天前
|
Linux 编译器 Android开发
FFmpeg开发笔记(九)Linux交叉编译Android的x265库
在Linux环境下,本文指导如何交叉编译x265的so库以适应Android。首先,需安装cmake和下载android-ndk-r21e。接着,下载x265源码,修改crosscompile.cmake的编译器设置。配置x265源码,使用指定的NDK路径,并在配置界面修改相关选项。随后,修改编译规则,编译并安装x265,调整pc描述文件并更新PKG_CONFIG_PATH。最后,修改FFmpeg配置脚本启用x265支持,编译安装FFmpeg,将生成的so文件导入Android工程,调整gradle配置以确保顺利运行。
24 1
FFmpeg开发笔记(九)Linux交叉编译Android的x265库
|
5天前
|
Ubuntu 安全 Linux
《Linux 简易速速上手小册》第1章: Linux 系统基础(2024 最新版)
《Linux 简易速速上手小册》第1章: Linux 系统基础(2024 最新版)
38 1
|
12天前
|
资源调度 JavaScript 搜索推荐
Linux系统之部署envlinks极简个人导航页
【4月更文挑战第11天】Linux系统之部署envlinks极简个人导航页
52 2
|
1天前
|
监控 安全 Linux
Linux系统之安装ServerBee服务器监控工具
【4月更文挑战第22天】Linux系统之安装ServerBee服务器监控工具
34 2
|
1天前
|
缓存 Linux
linux系统缓存机制
linux系统缓存机制
|
2天前
|
存储 Linux Android开发
RK3568 Android/Linux 系统动态更换 U-Boot/Kernel Logo
RK3568 Android/Linux 系统动态更换 U-Boot/Kernel Logo
15 0
|
2天前
|
Linux 开发工具 Android开发
Docker系列(1)安装Linux系统编译Android源码
Docker系列(1)安装Linux系统编译Android源码
4 0
|
3天前
|
资源调度 JavaScript Ubuntu
Linux系统之部署briefing视频聊天系统
【4月更文挑战第21天】Linux系统之部署briefing视频聊天系统
37 2
|
4天前
|
Linux Perl
Linux系统替换字符串常用命令
请注意,`sed`命令可以非常强大,可以根据不同的需求使用不同的选项和正则表达式来进行更复杂的字符串替换操作。
16 0
|
8天前
|
运维 网络协议 Unix
18.系统知识-Linux常用命令
18.系统知识-Linux常用命令