电脑桌面
添加小米粒文库到电脑桌面
安装后可以在桌面快捷访问

C语言嵌入式系统编程软件架构篇

C语言嵌入式系统编程软件架构篇_第1页
1/9
C语言嵌入式系统编程软件架构篇_第2页
2/9
C语言嵌入式系统编程软件架构篇_第3页
3/9
C 语言嵌入式系统编程-----软件架构篇 模块划分 模块划分的"划"是规划的意思,意指怎样合理的将一个很大的软件划分为一系列功能独立的部分合作完成系统的需求。C 语言作为一种结构化的程序设计语言,在模块的划分上主要依据功能(依功能进行划分在面向对象设计中成为一个错误,牛顿定律遇到了>相对论), C语言模块化程序设计需理解如下概念: (1) 模块即是一个.c 文件和一个.h 文件的结合,头文件(.h)中是对于该模块接口的声明; (2) 某模块提供给其它模块调用的外部函数及数据需在.h 中文件中冠以 extern 关键字声明; (3) 模块内的函数和全局变量需在.c 文件开头冠以 static 关键字声明; (4) 永远不要在.h 文件中定义变量!定义变量和声明变量的区别在于定义会产生内存分配的操作,是汇编阶段的概念;而声明则只是告诉包含该声明的模块在连接阶段从其它模块寻找外部函数和变量。如: /*module1.h*/ int a = 5; /* 在模块1的.h 文件中定义 int a */ /*module1 .c*/ #include "module1.h" /* 在模块1中包含模块1的.h 文件 */ /*module2 .c*/ #include "module1.h" /* 在模块2中包含模块1的.h 文件 */ /*module3 .c*/ #include "module1.h" /* 在模块3中包含模块1的.h 文件 */ 以上程序的结果是在模块1、2、3中都定义了整型变量 a,a 在不同的模块中对应不同的地址单元,这个世界上从来不需要这样的程序。正确的做法是: /*module1.h*/ extern int a; /* 在模块1的.h 文件中声明 int a */ /*module1 .c*/ #include "module1.h" /* 在模块1中包含模块1的.h 文件 */ int a = 5; /* 在模块1的.c 文件中定义 int a */ /*module2 .c*/ #include "module1.h" /* 在模块2中包含模块1的.h 文件 */ /*module3 .c*/ #include "module1.h" /* 在模块3中包含模块1的.h 文件 */ 这样如果模块1、2、3操作 a 的话,对应的是同一片内存单元。一个嵌入式系统通常包括两类模块: (1)硬件驱动模块,一种特定硬件对应一个模块; (2)软件功能模块,其模块的划分应满足低偶合、高内聚的要求。 技术支持:626519823 多任务还是单任务 所谓"单任务系统"是指该系统不能支持多任务并发操作,宏观串行地执行一个任务。而多任务系统则可以宏观并行(微观上可能串行)地"同时"执行多个任务。 多任务的并发执行通常依赖于一个多任务操作系统(OS...

1、当您付费下载文档后,您只拥有了使用权限,并不意味着购买了版权,文档只能用于自身使用,不得用于其他商业用途(如 [转卖]进行直接盈利或[编辑后售卖]进行间接盈利)。
2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。
3、如文档内容存在违规,或者侵犯商业秘密、侵犯著作权等,请点击“违规举报”。

碎片内容

C语言嵌入式系统编程软件架构篇

确认删除?
VIP
微信客服
  • 扫码咨询
会员Q群
  • 会员专属群点击这里加入QQ群
客服邮箱
回到顶部