EDA/PLD中的C语言嵌入式系统编程修炼之软件架构篇
模块划分 模块划分的"划"是规划的意思,意指怎样合理的将一个很大的软件划分为一系列功能独立的部分合作完成系统的需求。C语言作为一种结构化的程序设计语言,在模块的划分上主要依据功能(依功能进行划分在面向对象设计中成为一个错误,牛顿定律遇到了相对论),C语言模块化程序设计需理解如下概念: (1) 模块即是一个.c文件和一个.h文件的结合,头文件(.h)中是对于该模块接口的声明; (2) 某模块提供给其它模块调用的外部函数及数据需在.h中文件中冠以extern关键字声明; (3) 模块内的函数和全局变量需在.c文件开头冠以static关键字声明; (4) 永远不要在.h 在EDA/PLD(电子设计自动化/可编程逻辑器件)中的C语言嵌入式系统编程,软件架构的设计至关重要。模块划分是构建高效、可维护软件的基础。模块化设计旨在将复杂的系统分解为独立的组件,每个组件都有明确的职责,从而降低耦合度,提高内聚性。 理解C语言的模块化设计概念。一个模块通常由一个`.c`源文件和一个`.h`头文件组成。头文件主要用来声明模块对外提供的接口,包括函数原型和外部变量的声明。例如,如果模块1提供了一个外部函数`func()`和一个全局变量`a`,正确的做法是在`module1.h`中声明: ```c extern void func(); extern int a; ``` 而在对应的`module1.c`中定义它们: ```c #include "module1.h" void func() { // 函数实现 } int a = 5; // 全局变量定义 ``` 这样,其他模块通过包含`module1.h`即可使用`func()`和`a`,而不会产生重复定义的问题。 在嵌入式系统中,模块通常分为两类:硬件驱动模块,对应特定硬件设备;软件功能模块,要求低耦合、高内聚,确保模块间的独立性。硬件驱动模块负责与硬件交互,而软件功能模块处理特定的业务逻辑。 系统架构的选择也是关键。单任务系统适合小型、简单应用,程序按顺序执行。而多任务系统,如VxWorks、ucLinux,能并发处理多个任务,需要操作系统支持。多任务操作系统通过任务调度器和任务控制块(TCB)管理任务的执行,实现任务切换。 在没有多任务OS的单任务系统中,可通过主程序轮询调用各模块的处理程序,模拟多任务环境。这种架构常见于资源有限的嵌入式设备。 C语言在EDA/PLD中的嵌入式系统编程强调模块化设计,通过合理的模块划分和接口声明,实现清晰的软件架构。同时,根据系统需求选择单任务或多任务模型,确保系统的高效性和可靠性。在实际开发中,理解并熟练运用这些概念,对于优化代码结构、提高系统性能至关重要。





























- 粉丝: 7
我的内容管理 展开
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助


最新资源
- 北京建工集团冬施测温工作培训资料.doc
- 管流、明渠流及渗流.doc
- 大数据背景下的网络营销课程改革探讨.docx
- t梁首件工程总结报告.doc
- FX系列PLC机械手传送带设计方案.doc
- 实例工程清单计价造价指标分析.doc
- 有限公司废水处理站操作规程.doc
- Javaseript-DOM脚本程序设计方案的发展与应用方法.doc
- 桩基承台基础方案.docx
- EN航空结算中心checkup报告-EN.doc
- 监理质量管理制度.doc
- 二层工艺楼建筑工程量清单计价实例(含图纸-工程量计算).doc
- 数据结构与算法第十章Algorithmdesigntechniques.ppt
- 计算机控制系统试题三参考答案.doc
- 项目部主要管理人员审批表-.doc
- 第2章--数据排序(C--版).ppt


