资源描述
µuC/OS-Ⅱ在ARM9上的移植(S3C2440)
概要设计
总页数
编制
15
南昌航空大学东软班 概要设计
修 改 履 历
修改编号
日期
修改人
版本号
修改内容
1
VER0.1.0
初始做成
2
3
目 录
1 文档概述 5
1.1 文档目的和范围 5
1.2 术语/缩略语 5
1.3 参考文档 5
2 模块概述 5
2.1 模块功能定义 6
2.2 模块结构 7
2.3 模块动作时序 8
3 接口说明 8
3.1 数据结构定义 8
3.1.1 模块间接口函数 9
1 文档概述
1.1 文档目的和范围
该项目主要完成主要包括μC/OS-II移植到ARM9 S3C2440上,主要实现任务的启动和任务在中断级的调度和任务的上下文切换,还有实现中断处理服务和开关中断。
1.2 术语/缩略语
序号
术语/缩略语
说明
1
任务调度
通过一定的规则实现任务的切换
2
1.3 参考文档
序号
文档名
作者
时间
版本
1
需求分析
付海文
2013-12-11
VER0.1.0
2
阶段文档模板
东软实训中心
2014-4-14
VER0.1.0
2 模块概述
本模块是μC/OS-II移植到ARM9 S3C2440上的最主要的工作,是连接μC/OS-II操作系统内核和处理器的中间桥梁,每个任务的任务控制块(TCB)中都有自己的堆栈空间用来保存任务的上下文,当需要启动该任务时,通过把管理模式下的堆栈指针SP指向任务的堆栈空间,以出栈的方式把任务的上下文导入到处理器的寄存器中,此时处理器程序计数器(PC)指向任务程序入口地址,即实现了任务的启动;当发生任务级的调度时,首先将当前处理器各寄存器压入栈中,然后在当前任务的TCB中保存任务的堆栈指针,最后将最高优先级就绪态任务切换到处理器中运行态;在中断级的任务切换中需要考虑到中断的嵌套和中断的返回。
2.1 模块功能定义
序号
功能点
功能点详细内容
1
多任务启动
用于用户程序开始启动任务,直接运行最高优先级就绪态任务
2
任务级的切换
当前任务被挂起时,通过比较优先级判优进行任务切换
3
中断级的任务切换
当中断处理结束后,在中断非嵌套情况下实现任务的切换
4
中断服务子程序
当中断发生,保存CPU现场,调用中断处理程序,中断返回
5
关中断
将处理器程序状态寄存器设置为关中断状态,禁止中断发生
6
开中断
将处理器程序状态寄存器设置为开中断状态,使能中断
7
时钟中断处理
发生时钟中断,调用内核时钟节拍处理函数
8
任务堆栈初始化
每个任务都有一个任务堆栈,该堆栈用来保存任务的上下文。
2.2 模块结构
图 1 模块间接口
模块名称
模块类型
概要说明
OSTaskStkInit
接口
任务堆栈初始化
OSStartHighRdy
接口
最高优先级任务启动
OSTaskSwHook
接口
用户自定义函数
OSCtxSw
接口
任务级任务切换
OSIntCtxSw
接口
中断级任务切换
OSTickISR
接口
时钟中断处理
OSCPUSaveSR
接口
关中断
OSCPURestoreSR
接口
开中断
OS_CPU_IRQ_ISR
接口
中断服务程序
2.3 模块动作时序
系统时钟产生中断后,CPU转去处理时钟中断如下图
图2 cpu时钟中断处理的过程
3 接口说明
3.1 数据结构定义
typedef unsigned char BOOLEAN; /*布尔变量*/
typedef unsigned char INT8U; /*无符号8位整形变量*/
typedef signed char INT8S; /*有符号8位整形变量*/
typedef unsigned short INT16U; /*无符号16位整形变量*/
typedef signed short INT16S; /*有符号16位整形变量*/
typedef unsigned int INT32U; /*无符号32位整形变量*/
typedef signed int INT32S; /*有符号32位整形变量*/
typedef float FP32; /*单精度浮点数(32位长度)*/
typedef double FP64; /*双精度浮点数(64位长度)*/
typedef INT32U OS_STK; /*堆栈是32位宽度 */
typedef INT32U OS_CPU_SR; /*CPU state register*/
#define OS_CRITICAL_METHOD 3
#define OS_ENTER_CRITICAL() (cpu_sr = OSCPUSaveSR()) /*Disable interrupts*/
#define OS_EXIT_CRITICAL() (OSCPURestoreSR(cpu_sr)) /*Enable interrupts*/
#define OS_STK_GROWTH 1 /*Stack grows from High to Low On ARM*/函数
#define OS_TASK_SW() OSCtxSw()
3.1.1 模块间接口函数
3.1.1.1 OSTaskStkInit
函数名
OSTaskStkInit
文件名
../OS_CPU_c.c
功能概要
定义数据类型
记述形式
OS_STK *OSTaskStkInit(void(*task)(void *pd),void *p_arg,OS_STK *ptos,INT16U opt)
参数
类型
变量名
I/O
说明
void(*)(void *)
task,pd
-
函数入口地址
返回值
类型
OS_STK
说明
值
堆栈栈顶指针
正常结束
-
-
详细说明
任务堆栈初始化函数
使用注意事项
无
3.1.1.2 OSTaskSwHook
函数名
OSTaskSwHook
文件名
../OS_CPU_c.c
功能概要
用户自定以钩子函数
记述形式
void OSTaskSwHook (void)
参数
类型
变量名
I/O
说明
void
-
-
-
返回值
类型
-
说明
值
-
-
-
-
详细说明
用户可以自己更改钩子函数
使用注意事项
如果更改此函数时不要在该函数里延时太长
3.1.1.3 OSStartHighRdy
函数名
OSStartHighRdy
文件名
../OS_CPU_a.s
功能概要
启动最高优先级就绪态任务
记述形式
OSStartHighRdy
参数
类型
变量名
I/O
说明
-
-
-
-
返回值
类型
-
说明
值
-
-
-
-
详细说明
此函数为汇编函数,在任务第一次启动时被调用
使用注意事项
不需要保存任务堆栈
3.1.1.4 OSCtxSw
函数名
OSCtxSw
文件名
../OS_CPU_a.s
功能概要
任务级任务切换
记述形式
OSCtxSw
参数
类型
变量名
I/O
说明
-
-
-
-
返回值
类型
-
说明
值
-
-
-
-
详细说明
当任务被挂起时,通过优先级判优选择后,会调用此汇编函数执行任务调度
使用注意事项
首先保存当前任务的堆栈,然后在切换到最高优先级就绪态任务
3.1.1.5 OSIntCtxSw
函数名
OSIntCtxSw
文件名
../OS_CPU_a.s
功能概要
中断级任务调度
记述形式
OSIntCtxSw
参数
类型
变量名
I/O
说明
-
-
-
-
返回值
类型
-
说明
值
-
-
-
-
详细说明
当前中断退出后,若在非中断嵌套情况下,会调用该函数执行任务调度
使用注意事项
无需保存CPU现场,直接切换到最高优先级就绪任务
3.1.1.6 OSTickISR
函数名
OSTickISR
文件名
../OS_CPU_a.s
功能概要
时钟中断服务
记述形式
OSTickISR
参数
类型
变量名
I/O
说明
-
-
-
-
返回值
类型
-
说明
值
-
-
-
-
详细说明
当发生定时器中断时,此函数被中断服务子程序调用执行时钟中断服务
使用注意事项
在清除INTPND时必须通过写INTPND实现
3.1.1.7 OS_CPU_IRQ_ISR
函数名
OS_CPU_IRQ_ISR
文件名
../OS_CPU_a.s
功能概要
发生IRQ,提供中断服务
记述形式
OS_CPU_IRQ_ISR
参数
类型
变量名
I/O
说明
-
-
-
-
返回值
类型
-
说明
值
-
-
-
-
详细说明
该函数被安装在启动代码中,作为HanlerIRQ的处理程序
使用注意事项
中断向量的大范围跳转需要使用DCD
3.1.1.8 OSCPUSaveSR
函数名
OSCPUSaveSR
文件名
../OS_CPU_a.s
功能概要
关中断
记述形式
OSCPUSaveSR
参数
类型
变量名
I/O
说明
-
-
-
-
返回值
类型
INT32U
说明
值
cpu_sr
保存当前程序状态寄存器CPSR的控制位,在此使用R0,来保存该值
-
-
详细说明
OS_ENTER_CRITICAL()被宏定义为OSCPUSaveSR,实现临界段保护
使用注意事项
通用寄存器R0被用来保存CPSR的值
3.1.1.9 OSCPURestoreSR
函数名
OSCPURestoreSR
文件名
../OS_CPU_a.s
功能概要
开中断
记述形式
OSCPURestoreSR
参数
类型
变量名
I/O
说明
INT32U
cpu_sr
-
恢复当前程序状态寄存器CPSR的控制位,在此用R0来保存cpu_sr
返回值
类型
-
说明
值
-
-
-
-
详细说明
OS_EXIT_CRITICAL()被宏定义为OSCPURestoreSR,实现临界段打开
使用注意事项
寄存器R0保存的值用来恢复CPSR的值
目 录
第1章 总 论 3
1.1. 项目背景与概况 3
1.2. 主要技术经济指标 7
1.3. 问题与建议 8
第2章 项目投资环境与市场研究 9
2.1. 投资环境分析 9
2.2. 区域房地产市场分析 11
2.3. 销售预测 15
2.4. 营销策略 19
第3章 建设规模与项目开发条件 21
3.1. 建设规模 21
3.2. 项目概况现状 21
3.3. 项目建设条件 22
第4章 建筑方案 26
4.1. 设计依据 26
4.2. 项目设计主题和开发理念 26
4.3. 项目总体规划方案 27
4.4. 建筑设计 28
4.5. 结构设计 29
4.6. 给排水设计 30
第5章 节能节水措施 32
5.1. 设计依据 32
5.2. 建筑部分节能设计 32
第6章 环境影响评价 33
6.1. 编制依据 33
6.2. 环境现状 33
6.3. 项目建设对环境的影响 34
6.4. 环境保护措施 34
第7章 劳动卫生与消防 35
7.1. 指导思想 35
7.2. 职业安全卫生健康对策与措施 35
7.3. 消防设计 36
第8章 组织机构与人力资源配置 38
8.1. 组织机构 38
8.2. 人力资源配置 38
第9章 项目实施进度 39
9.1. 项目开发期 39
9.2. 项目实施进度安排 39
9.3. 项目实施过程控制措施 39
第10章 项目招投标 41
10.1. 工程项目招标投标概述 41
10.2. 工程项目招标投标因素分析 42
10.3. 招标依据 44
10.4. 招标范围 44
10.5. 招标方式 44
第11章 投资估算与资金筹措 45
11.1. 投资估算 45
11.2. 资金筹措 45
第12章 财务评价 47
12.1. 项目评估依据 47
12.2. 财务评价基础数据的选择 47
12.3. 财务评价 47
12.4. 不确定性分析 48
第13章 社会评价 49
13.1. 项目对社会的影响分析 49
13.2. 风险分析 50
13.3. 社会评价结论 51
第14章 研究结论与建议 52
14.1. 可行性研究结论 52
14.2. 建议 52
展开阅读全文