嵌入式硬件构件与底层驱动构件基本规范

  • 构件化设计
  • 嵌入式硬件构件
    • 核心构件
    • 中间构件
      • 描述需求接口
      • 描述供给接口
    • 终端构件
  • 嵌入式底层驱动构件
    • 底层驱动构件的规范
  • 底层驱动构件的封装规范
    • 构件设计的基本思想
  • 硬件构件及底层软件构件的重用与移植方法
    • 重用
    • 移植

构件化设计

构件是核心和基础。
复用为必要的手段。
提高软硬件设计可重用性与可移植性。

嵌入式硬件构件

指将一个或多个硬件功能模块,支撑电路及其功能描述封装成一个可重用的硬件实体,并提供一系列规范的输入/输出接口。

核心构件

只有供给接口,没有需求接口。即它只为其他硬件构件提供服务,而不接受服务。
在以单MCU为核心的嵌入式系统中,MCU的硬件最小系统是典型的核心构件。

核心构件为某种型号MCU的硬件最小系统。
使用该MCU进行硬件系统设计时,核心构件可以直接组装到系统中,无需改动。
设计核心构件的接口是为其他构件提供服务的,因此接口标识均为接口,接口设计时,所以可能用到的引脚标注上接口网标,若引脚复用,以第一功能选项命名。

中间构件

不仅有需求接口还有供给接口,即不仅能够接受其他构件提供的服务,也可以为其他构件提供服务。

描述需求接口

采用接口注释(虚线框内)

描述供给接口

采用接口网标(虚线框外)

终端构件

只有需求接口,只接受其他构件提供的服务。

对于核心构件,在应用到具体的系统时,不必做任何改动。
对于中间构件和终端构件,在应用于具体的系统中时,仅需为需求接口添加接口网标,在不同的系统中,接口网标名称不同,但构件实体内部完全相同。

嵌入式底层驱动构件

提高软件设计可重用性与可移植性,必须充分理解和应用软件构件技术。
提高代码质量和生产力的唯一最佳方法就是复用好的代码,软件构件技术是软件复用实现的重要方法。

嵌入式底层驱动构件/驱动构件/硬件驱动构件

直接面向硬件操作的程序代码及使用说明。

底层驱动构件的规范

由头文件(.好)及源程序文件(.从)文件构成,头文件应该是底层驱动构件简明且完备的使用说明,无须查看源程序文件情况下,就可以完全使用该构件进行程序开发。

底层驱动构件的封装规范

提高底层驱动构件的可移植性和可复用性。

构件设计的基本思想

当一个底层构件应用到不同系统中时,只需修改构件的头文件,对于构件的源程序文件则不用修改或改动很小。
良好的底层驱动应具备:封装性 描述性 可移植性 可复用性
则应遵循原则为:层次化 易用性 鲁棒性 内存的可靠使用
所以底层驱动构件都包含对构件公共要素的引用。放在工程文件夹中\Common文件夹中的common.h。
common.h包含芯片寄存器映射文件,一位操作宏函数,重定义基本数据类型等。






严格禁止使用全局变量

若在底层驱动构件中使用全局变量,其他程序即使不通过构件提供的接口也可以访问到构件内部,对构件的正常工作带来隐患。
从软件工程理论中对封装特性的要求看,也不利于构件设计高内聚、低耦合的要求。
用户与构件交互只能通过服务接口进行,即所以到数据传递都通过函数的形参来接收,而不是使用全局变量。

硬件构件及底层软件构件的重用与移植方法

重用

在一个系统中,同一构件可被重复使用多次

移植

将一个系统中使用到的构件应用到另外一个系统中。

嵌入式技术基础与实践(第4版)

嵌入式硬件构件与底层驱动构件基本规范相关推荐

  1. 慕课嵌入式开发及应用(第二章.嵌入式硬件构件与底层驱动构件基本规范)

    慕课苏州大学.嵌入式开发及应用.第二章.入门与软件框架.嵌入式硬件构件与底层驱动构件基本规范 0 目录 2 入门与软件框架 2.1 嵌入式硬件构件与底层驱动构件基本规范 2.1.1 课堂重点 2.1. ...

  2. 嵌入式入门学习笔记4:[转]什么是嵌入式底层驱动开发和嵌入式底层软件开发...

    我们知道嵌入式操作系统(Embedded System)是指以应用为中心.以计算机技术为基础,软件硬件可裁剪.适应应用系统对功能.可靠性.成本.体积.功耗严格要求的专用计算机系统.嵌入式开发分两种,一 ...

  3. 嵌入式行业里面的应用驱动硬件工程师对比

    我觉得对这个问题主要是对"程序"这个分歧上. 一个嵌入式硬件工程师真的是只是画板子那么简单吗?--如果不懂一些驱动访问方法,怎么调试硬件?怎么画出符合要求的电路图?如果这些不会的话 ...

  4. 搞嵌入式Linux,做底层还是应用?底层要掌握哪些技能?

    关注.星标公众号,直达精彩内容 ID:技术让梦想更伟大 整理:李肖遥 很多学习嵌入式的新人.工程师,在学习到半途中,总会感觉到迷茫,不知道自己从哪方面入手.进阶,也不知道自己目前处于学习的哪个层次,不 ...

  5. 基于Linux操作系统的底层驱动技术

    5.3 基于Linux操作系统的底层驱动技术 这里的底层驱动是指Linux下的底层设备驱动,这些驱动通常都是加载在内核态的,可以提供给上层用户态的应用程序访问底层设备的能力.也就是说,上层应用程序通过 ...

  6. 可复用的基于ARM的W5100底层驱动设计

    摘要: 为了缩短基于ARM的网络化嵌入式应用开发周期.降低开发成本和提高产品质量,提出一种有别于传统利用操作系统开发嵌入式应用的模式.在该模式的框架下,对W5100网络芯片底层驱动进行编写.封装和测试 ...

  7. 嵌入式硬件通信接口协议-UART(四)设计起止式的应用层协议

    文章首发于同名微信公众号:DigCore 欢迎关注同名微信公众号:DigCore,及时获取最新技术博文. 原文链接:https://mp.weixin.qq.com/s/amO7rGkqFJtCzuy ...

  8. 学习嵌入式Linux,做底层还是应用?底层要掌握哪些技能?

    关注.星标公众号,直达精彩内容 ID:技术让梦想更伟大 整理:李肖遥 很多学习嵌入式的新人.工程师,在学习到半途中,总会感觉到迷茫,不知道自己从哪方面入手.进阶,也不知道自己目前处于学习的哪个层次,不 ...

  9. 嵌入式软件工程师和嵌入式硬件工程师有什么区别

    什么是嵌入式硬件工程师 随着嵌入式技术的普及,硬件工程师的性质也有所改变.嵌入式硬件工程师与我们平常所说的硬件工程师不同.嵌入式硬件工程不但要求具备硬件工程师的基本技能,还必须完成部分软件工程师的工作 ...

最新文章

  1. 这个Spring循环依赖的坑,90%以上的人都不知道
  2. 无脑单细胞竟会走迷宫、规划交通路线,这种难以归类的生物重定义了智能
  3. JSP在动态网页上输出 三角形和菱形
  4. 如何优雅地辞退互联网企业的老员工?
  5. 比特飞-建站100天感悟
  6. C语言---初识递归///看了这么久的递归,终于会用了~~
  7. androidStudio导入库文件
  8. C# 概念 委托和事件
  9. linux下把进程注册成服务,用service 调用
  10. 【Unity3D】GUI控件
  11. 自学c语言难,c语言难学吗?
  12. win11配置mysql环境变量保姆级教程
  13. Sniffer Pro 4.7.530 SP5下载地址
  14. 服装尺寸 html,服装尺寸S、M、L、XL、XXL分别表示的型号大小和释义(完整版)...
  15. veu+cesium跨域问题
  16. 迅速把庸才变将才的七大步
  17. Dart 实现字符串 进行 gbk编码的 urlencode
  18. 【java】我国最高山峰是珠穆朗玛峰,8848米。现在我有一张足够大的纸,它的厚度是0.01米。请问,我折叠多少次,可以折成珠穆朗玛峰的高度。
  19. QQ也出网页版的了- WebQQ公测中
  20. Linux下GPT分区,gdisk修复损坏的分区表

热门文章

  1. java.security.cert.CertPathValidatorException: Trust anchor for certification path not found.
  2. vscode切换中英文
  3. [产品经理]产品管理职位的级别
  4. 【更新】MindFusion.WinForms Pack v2019.R1发布,改进Visio2013Exporter
  5. SecureCRT标签显示IP地址
  6. 极速办公(PPT)如何设置幻灯片大小
  7. $.each()和$().each
  8. [问题已处理]-mac安装cobra失败
  9. 前端开发实习面试题(JavaScript篇)
  10. 体系结构 | 五段流水线 | 流水线技术