《嵌入式C编程实战》——1.3 复杂度降低

1.3 复杂度降低

正如我们所见,问题的复杂度正在不断地增加,我们必须对此做出应对。可是,关键是怎样才能降低复杂度呢?本节将会就这个问题给出一些基本的答案。

下面给出了一些“与降低复杂度相关的词汇”。

抽象。
结构(或体系)。
层次结构。

1.3.1 抽象

本书在以下部分定义了最小的组件,有时这些组件也被称为叶组件。这些组件包括逻辑门、触发器、存储单元(逻辑组件)。其实,还可以将这些组件再分成更小的部分,如晶体管、电阻、电感和电容等最小的不可分割的组成。这些逻辑组件是总线、CPU的组成部分。而总线和CPU又是构成多处理器系统的组成部分。

组件的复杂性可以通过抽象层的数目和元件的数量来确定。使用抽象层的目的是为了通过隐藏子组件,来降低系统的复杂性。

本书的以下部分定义了不可再分的元件,或者有时也称为叶元件,如门电路、触发器、存储器(逻辑部件)。其实,可以对一些更小的元件进行研究,如晶体管、电阻、电感和电容。

这些逻辑部件共同构成了总线和CPU,而总线和CPU又共同构成了多处理器系统。

一个组件的复杂性可以由它所包含的元件的数量和抽象层次的数目决定。抽象层次通过隐藏组件降低复杂性。

软件组件的抽象层次。

机器代码−工艺相关。
汇编代码−工艺相关。
高级语言−工艺无关。
软件组件−工艺无关。
较高的抽象层次往往被描述为工艺无关。例如,一个C程序可以被编译成各种不同的CPU所能执行的程序,硬件的VHDL可以被用来对各种不同类型的FPGA进行开发。然而,较高的抽象层次也并非总都是工艺无关的,一个较高的抽象层次的组件对处理器就是工艺相关的。

1.3.2 结构

结构用来描述各个组成部分的组件,以及各个组件之间的关系。嵌入式系统的软件和硬件都有自己的体系结构,如图1.5所示。

这里有一个关于结构的经典法则指出:任何一个人类使用的设备都不应该包含超过72以上的组成部分。但是,一个计算机却可以同时控制大量(数以百万计)的组件。

1.3.3 层次结构

现在创建一个结构示意图,如图1.6所示。结构中的每一个分支都在延续,直到一个不再可分的节点,这些组节点有时也被称作叶节点。一个组件是一个分支或者是一个不可分的叶结点。一个叶组件可以是一段没有调用任何其他函数的C代码,或者是没有子组件的VHDL代码。抽象层顶部的部分比底部复杂。

时间: 2024-09-15 10:04:29

《嵌入式C编程实战》——1.3 复杂度降低的相关文章

《嵌入式C编程实战》——第1章 嵌入式系统简介 1.1 嵌入式计算机系统

第1章 嵌入式系统简介 嵌入式C编程实战 1.1 嵌入式计算机系统 图1.1为两台不同的计算机. 大部分人看到图1.1后,立刻就可以认出左边的机器是一台计算机.不过,几乎没有人会把右侧的机器看作是计算机,事实上,它确实是一台货真价实的计算机.这两台看起来截然不同的计算机最根本的区别在于,右侧的计算机是嵌入在洗衣机内部的. 如果你认识到这两者的差异,就可以将计算机分成通用计算机和嵌入式计算机两类. 1.通用计算机通用计算机指的是台式机.笔记本电脑以及工作站等.通用计算机(几乎)总是配有键盘.显示设

《嵌入式C编程实战》——导读

前 言 本书是为致力于使用微控制器来设计嵌入式系统的人们准备的.本书将翔实的理论与真实的实践相结合.现在由微控制器管理的嵌入式系统无处不在,汽车.机器人.办公室.医疗设备.机械.家居,以及其他各种各样的需求中都可以看到它们的身影.一个典型的微控制器包括了处理器.存储器和外部设备.一个嵌入式系统C开发者需要对微控制器的体系结构和软件开发中的底层操作有一个深入的了解. 本书的主要内容是介绍嵌入式软件的设计,通过真实的案例,使读者"学会如何去做".读者通过书中提供的实验,可以快速地做到理论与

《嵌入式C编程实战》——第1章 嵌入式系统简介 1.1 嵌入式计算机系统

第1章 嵌入式系统简介 1.1 嵌入式计算机系统 图1.1为两台不同的计算机. 大部分人看到图1.1后,立刻就可以认出左边的机器是一台计算机.不过,几乎没有人会把右侧的机器看作是计算机,事实上,它确实是一台货真价实的计算机.这两台看起来截然不同的计算机最根本的区别在于,右侧的计算机是嵌入在洗衣机内部的. 如果你认识到这两者的差异,就可以将计算机分成通用计算机和嵌入式计算机两类. 1.通用计算机 通用计算机指的是台式机.笔记本电脑以及工作站等.通用计算机(几乎)总是配有键盘.显示设备.硬盘驱动器,

《嵌入式C编程实战》——1.5 软件开发工具

1.5 软件开发工具 现在有很多的软件开发语言,如C.C++.ADA.LISP等.软件的开发都遵循标准化的过程.程序(源代码)可以被编译成目标对象可以执行的代码,一些编译器会将代码转换为汇编程序.而链接器将程序与用到的库文件和其他一些东西组织在一起,而且所有的基地址都是绝对地址.链接器最后产生的可以被下载到目标系统并执行的机器代码,如图1.11所示. 1.5.1 编译器 编译器是一种计算机软件,它的作用是将源程序转换为目标程序.通常,通过两个步骤,就可以将一个C语言编写的程序转换为目标程序.第一

《嵌入式C编程实战》——1.2 应用程序和平台

1.2 应用程序和平台 图1.4所示的应用程序和平台是一个嵌入式计算机系统的两个组成部分.平台被设计用来帮助应用程序完成真正的任务.一个平台可以是硬件和操作系统的组合,而应用程序则是一个软件.例如,用来控制工业机器人的软件.通常,一些很小的系统中是不需要操作系统的.事实上,支持应用程序的平台和项目的管理之间存在着联系,一些项目中已经证实了这种联系的重要性.这意味着如果有一个可以简化应用程序实现的平台,那么就无需再为项目管理付出高昂的代价了. 性能:如果一个系统不能满足它的性能需求,就是一个毫无用

《嵌入式C编程实战》——1.4 硬件−FPGA设备

1.4 硬件−FPGA设备 本书中使用的所有案例都是基于灵活性极大的FPGA设备上完成的.如果一个设计师使用单片机工作时,他仅仅能完成对硬件架构的测试.但是,如果选用了FPGA,他将能通过设置I/O来实现对所有的从简单到复杂的多处理器体系结构的实验设计.因此,FPGA是最适合进行应用设计教育和学习的平台. 从逻辑上讲,这些FPGA设备可以按照设计师所设想的任何方式进行连接.图1.7显示了FPGA设备的灵活性.左边是一个简单的设计,右边是一个使用了两个32位CPU的复杂设计. 可以通过http:/

《嵌入式C编程实战》——1.6 YouTube的推荐资源

1.6 YouTube的推荐资源 互联网是一个无穷无尽的信息来源.本书中大多数章节的结尾部分都会推荐一些Youtube上的视频,这些视频与本章的主题有关.下面给出了几个推荐的视频. 编译器的工作原理:https://www.youtube.com/watch?v=Kd93n4_5UjM. API是什么?:https://www.youtube.com/watch?v=iGkTCObcOqM. SDK是什么?:https://www.youtube.com/watch?v=py5H8gKvw44.

Javascript设计模式理论与编程实战之简单工厂模式_javascript技巧

阅读目录 基本介绍 举例说明 总结说明 简单工厂模式是由一个方法来决定到底要创建哪个类的实例, 而这些实例经常都拥有相同的接口. 这种模式主要用在所实例化的类型在编译期并不能确定, 而是在执行期决定的情况. 说的通俗点,就像公司茶水间的饮料机,要咖啡还是牛奶取决于你按哪个按钮. 简单工厂模式在创建ajax对象的时候也非常有用. 通常我们创建对象最常规的方法就是使用new关键字调用构造函数,这会导致对象之间的依赖性.工厂模式是一种有助于消除类之间依赖性的设计模式,它使用一个方法来决定要实例化哪一个

编程实战——电影管理器之界面UI及动画切换

在前文"编程实战--电影管理器之利用MediaInfo获取高清视频文件的相关信息"中提到电影管理器的目的是方便播放影片,在想看影片时不需要在茫茫的文件夹下找寻.   我对电影管理器的想法如下: 1.可以全键盘操作(不依赖鼠标),最好是利用键盘上的小数字键区就能完成全部操作. 2.基于HTPC的全屏操作,故软件的大小为1920*1080 3.模仿时下流行的"磁贴"效果.   下图是本软件的初步的界面UI 解释一下: 1.HTPC的屏幕是1920*1080,在软件设计的