《嵌入式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的软件多是在操作系统上面运行,通过驱动程序操作硬件,这使得软件开发以分工的形式进行。

相关文章
|
2月前
|
JavaScript Linux 网络安全
Termux安卓终端美化与开发实战:从下载到插件优化,小白也能玩转Linux
Termux是一款安卓平台上的开源终端模拟器,支持apt包管理、SSH连接及Python/Node.js/C++开发环境搭建,被誉为“手机上的Linux系统”。其特点包括零ROOT权限、跨平台开发和强大扩展性。本文详细介绍其安装准备、基础与高级环境配置、必备插件推荐、常见问题解决方法以及延伸学习资源,帮助用户充分利用Termux进行开发与学习。适用于Android 7+设备,原创内容转载请注明来源。
316 76
|
19天前
|
Linux 定位技术
Linux系统中的cd命令:目录切换技巧
踏过千山,越过万水,人生就是一场不断前行的旅程,总充满了未知与挑战。然而,“cd”命令如同你的旅伴,会带你穿梭在如棋盘一般的文件系统中,探索每一处未知。希望你能从“cd”命令中找到乐趣,像是掌控了一种络新妙的魔法,去向未知进发,开始你的探索之旅。
99 24
|
12天前
|
Linux Shell
Linux系统下快速批量创建和删除文件的方法
总的来说,使用shell脚本来批量处理文件是一种非常强大的工具,只要你愿意花时间学习和实践,你会发现它能大大提高你的工作效率。
66 19
|
22天前
|
安全 Shell Linux
Linux系统之su命令的基本使用
Linux系统之su命令的基本使用
73 2
Linux系统之su命令的基本使用
|
14天前
|
Ubuntu Linux 编译器
在Ubuntu Linux系统下如何搭建并安装EDK2
以上就是在Ubuntu Linux系统下搭建并安装EDK2的过程。这个过程可能会有些复杂,但只要按照步骤一步步来,应该不会有太大问题。如果在过程中遇到任何问题,都可以在网上找到相应的解决方案。希望这个指南能对你有所帮助!
75 17
|
2月前
|
监控 Linux Python
Linux系统资源管理:多角度查看内存使用情况。
要知道,透过内存管理的窗口,我们可以洞察到Linux系统运行的真实身姿,如同解剖学家透过微观镜,洞察生命的奥秘。记住,不要惧怕那些高深的命令和参数,他们只是你掌握系统"魔法棒"的钥匙,熟练掌握后,你就可以骄傲地说:Linux,我来了!
126 27
|
2月前
|
Linux
Linux系统ext4磁盘扩容实践指南
这个过程就像是给你的房子建一个新的储物间。你需要先找到空地(创建新的分区),然后建造储物间(格式化为ext4文件系统),最后将储物间添加到你的房子中(将新的分区添加到文件系统中)。完成这些步骤后,你就有了一个更大的储物空间。
168 10
|
2月前
|
存储 缓存 Linux
Linux系统中如何查看CPU信息
本文介绍了查看CPU核心信息的方法,包括使用`lscpu`命令和读取`/proc/cpuinfo`文件。`lscpu`能快速提供逻辑CPU数量、物理核心数、插槽数等基本信息;而`/proc/cpuinfo`则包含更详细的配置数据,如核心ID和处理器编号。此外,还介绍了如何通过`lscpu`和`dmidecode`命令获取CPU型号、制造商及序列号,并解释了CPU频率与缓存大小的相关信息。最后,详细解析了`lscpu`命令输出的各项参数含义,帮助用户更好地理解CPU的具体配置。
194 8
|
2月前
|
存储 运维 监控
深度体验阿里云系统控制台:SysOM 让 Linux 服务器监控变得如此简单
作为一名经历过无数个凌晨三点被服务器报警电话惊醒的运维工程师,我对监控工具有着近乎苛刻的要求。记得去年那次大型活动,我们的主站流量暴增,服务器内存莫名其妙地飙升到90%以上,却找不到原因。如果当时有一款像阿里云 SysOM 这样直观的监控工具,也许我就不用熬通宵排查问题了。今天,我想分享一下我使用 SysOM 的亲身体验,特别是它那令人印象深刻的内存诊断功能。
|
2月前
|
存储 NoSQL Linux
微服务2——MongoDB单机部署4——Linux系统中的安装启动和连接
本节主要介绍了在Linux系统中安装、启动和连接MongoDB的详细步骤。首先从官网下载MongoDB压缩包并解压至指定目录,接着创建数据和日志存储目录,并配置`mongod.conf`文件以设定日志路径、数据存储路径及绑定IP等参数。之后通过配置文件启动MongoDB服务,并使用`mongo`命令或Compass工具进行连接测试。此外,还提供了防火墙配置建议以及服务停止的两种方法:快速关闭(直接杀死进程)和标准关闭(通过客户端命令安全关闭)。最后补充了数据损坏时的修复操作,确保数据库的稳定运行。
92 0
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等