打印
[热门应用]

C语言嵌入式系统模块划分

[复制链接]
2146|21
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
历史暴君|  楼主 | 2017-11-27 18:13 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
模块划分的"划"是规划的意思,意指怎样合理的将一个很大的软件划分为一系列功能独立的部分合作完成系统的需求。C语言作为一种结构化的程序设计语言,在模块的划分上主要依据功能
沙发
历史暴君|  楼主 | 2017-11-27 18:14 | 只看该作者
模块即是一个.c文件和一个.h文件的结合,头文件(.h)中是对于该模块接口的声明

使用特权

评论回复
板凳
历史暴君|  楼主 | 2017-11-27 18:15 | 只看该作者
某模块提供给其它模块调用的外部函数及数据需在.h中文件中冠以extern关键字声明;

使用特权

评论回复
地板
zheng522| | 2017-11-27 21:22 | 只看该作者
永远不要在.h文件中定义变量!定义变量和声明变量的区别在于定义会产生内存分配的操作,是汇编阶段的概念;而声明则只是告诉包含该声明的模块在连接阶段从其它模块寻找外部函数和变量

使用特权

评论回复
5
zheng522| | 2017-11-27 21:22 | 只看该作者
硬件驱动模块,一种特定硬件对应一个模块

使用特权

评论回复
6
zheng522| | 2017-11-27 21:22 | 只看该作者
软件功能模块,其模块的划分应满足低偶合、高内聚的要求

使用特权

评论回复
7
电子信使| | 2017-11-27 21:23 | 只看该作者
"单任务系统"是指该系统不能支持多任务并发操作,宏观串行地执行一个任务

使用特权

评论回复
8
电子信使| | 2017-11-27 21:24 | 只看该作者
多任务系统则可以宏观并行(微观上可能串行)地"同时"执行多个任务

使用特权

评论回复
9
engao| | 2017-11-27 21:24 | 只看该作者
多任务的并发执行通常依赖于一个多任务操作系统(OS),多任务OS的核心是系统调度器,它使用任务控制块(TCB)来管理任务调度功能

使用特权

评论回复
10
engao| | 2017-11-27 21:24 | 只看该作者
TCB包括任务的当前状态、优先级、要等待的事件或资源、任务程序码的起始地址、初始堆栈指针等信息

使用特权

评论回复
11
oiuetjg| | 2017-11-27 21:47 | 只看该作者
调度器在任务被激活时,要用到这些信息。此外,TCB还被用来存放任务的"上下文"(context)

使用特权

评论回复
12
uygferfgf| | 2017-11-27 21:47 | 只看该作者
任务的上下文就是当一个执行中的任务被停止时,所要保存的所有信息

使用特权

评论回复
13
oiuetjg| | 2017-11-27 21:47 | 只看该作者
常,上下文就是计算机当前的状态,也即各个寄存器的内容

使用特权

评论回复
14
uygferfgf| | 2017-11-27 21:47 | 只看该作者
当发生任务切换时,当前运行的任务的上下文被存入TCB,并将要被执行的任务的上下文从它的TCB中取出,放入各个寄存器中

使用特权

评论回复
15
ah9b87| | 2017-11-27 21:48 | 只看该作者
嵌入式多任务OS的典型例子有Vxworks、ucLinux等

使用特权

评论回复
16
ah9b87| | 2017-11-27 21:48 | 只看该作者
究竟选择多任务还是单任务方式,依赖于软件的体系是否庞大

使用特权

评论回复
17
oiuetjg| | 2017-11-27 21:48 | 只看该作者
从CPU复位时的指定地址开始执行

使用特权

评论回复
18
oiuetjg| | 2017-11-27 21:48 | 只看该作者
跳转至汇编代码startup处执行;

使用特权

评论回复
19
ah9b87| | 2017-11-27 21:48 | 只看该作者
跳转至用户主程序main执行,在main中完成

使用特权

评论回复
20
16号哨兵| | 2017-12-30 11:18 | 只看该作者
模块的划分,一般还是根据经验来的,耦合性和可移植性要做到兼容。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

35

主题

312

帖子

0

粉丝