且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

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

更新时间:2022-09-17 18:33:18

本节书摘来异步社区《嵌入式C编程实战》一书中的第1章,第1.3节,作者:【瑞典】Lars Bengtsson(本特松), Lennart Lindh(林德),更多章节内容可以访问云栖社区“异步社区”公众号查看

1.3 复杂度降低

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

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

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

1.3.1 抽象

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

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

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

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

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

软件组件的抽象层次。

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

1.3.2 结构

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

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

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

1.3.3 层次结构

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

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