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

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

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

Bob目前归纳的说法:

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

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

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

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

二、目标硬件瓶颈

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

1.分层

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

2.硬件是实现细节

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

4.处理器是实现细节

5.操作系统是实现细节

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

7.DRY条件性编译命令

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