《架构整洁之道》之整洁的嵌入式架构

Doug观点:
虽然软件本身并不会随时间推移而磨损,但硬件及其固件却会随时间推移而过时,随即也需要对软件做相应改动。

Bob基于Doug观点补充:
虽然软件质量本身并不会随时间推移而损耗,但是未妥善管理的硬件依赖和固件依赖却是软件的头号杀手。

Bob目前归纳的说法:

  • “固件通常被存储在非可变内存设备,例如ROM、ERROM或者闪存中。”
  • “固件是直接编程在一个硬件设备上的一组指令或者一段程序。”
  • “固件是嵌入在一个硬件中的软件程序。”
  • “固件是被写入到只读内存设备中的(ROM)程序活数据。”

一、”程序适用测试”测试

为什么这么多嵌入式软件最后都成了固件?看起来,很可能是因为我们在做嵌入式设计时只关注代码是否顺利运行,并不太关心其结构能否撑起一个较长的有效生命周期。Kent Beck描述了软件构建过程中的三个阶段:

  • “先让代码工作起来”——如果代码不能工作,就不能产生价值。
  • “然后再试图将它变好”——通过对代码进行重构,让我们自己和其他人更好地理解代码,并能按照需求不断地修改代码。
  • “最后再试着让它运行得更快”——按照性能提升的”需求”来重构代码。

二、目标硬件瓶颈

目标硬件瓶颈是嵌入式开发所特有的一个问题,如果我们没有采用某种清晰的架构来设计嵌入式系统的代码结构,就经常会面临只能在目标系统平台上测试代码的难题。如果只能在特定的平台上测试代码,那么这一定会拖慢项目的开发进度。

1.分层

三层结构设计从高到底:软件、固件、硬件。

2.硬件是实现细节

3.不要向HAL的用户暴露硬件细节

4.处理器是实现细节

5.操作系统是实现细节

6.面向接口编程与可替代性

7.DRY条件性编译命令

文章目录
  1. 1. 一、”程序适用测试”测试
  2. 2. 二、目标硬件瓶颈
    1. 2.1. 1.分层
    2. 2.2. 2.硬件是实现细节
    3. 2.3. 3.不要向HAL的用户暴露硬件细节
    4. 2.4. 4.处理器是实现细节
    5. 2.5. 5.操作系统是实现细节
    6. 2.6. 6.面向接口编程与可替代性
    7. 2.7. 7.DRY条件性编译命令