概要设计基于μcosii系统在s3c2440平台的移植的设计与实现.doc

上传人:re****.1 文档编号:548136313 上传时间:2022-12-17 格式:DOC 页数:15 大小:246KB
返回 下载 相关 举报
概要设计基于μcosii系统在s3c2440平台的移植的设计与实现.doc_第1页
第1页 / 共15页
概要设计基于μcosii系统在s3c2440平台的移植的设计与实现.doc_第2页
第2页 / 共15页
概要设计基于μcosii系统在s3c2440平台的移植的设计与实现.doc_第3页
第3页 / 共15页
概要设计基于μcosii系统在s3c2440平台的移植的设计与实现.doc_第4页
第4页 / 共15页
概要设计基于μcosii系统在s3c2440平台的移植的设计与实现.doc_第5页
第5页 / 共15页
点击查看更多>>
资源描述

《概要设计基于μcosii系统在s3c2440平台的移植的设计与实现.doc》由会员分享,可在线阅读,更多相关《概要设计基于μcosii系统在s3c2440平台的移植的设计与实现.doc(15页珍藏版)》请在金锄头文库上搜索。

1、 uC/OS-在ARM9上的移植(S3C2440)概要设计总页数编制13南昌航空大学东软班 概要设计修 改 履 历修改编号日期修改人版本号修改内容1VER0.1.0初始做成23目 录1 文档概述51.1 文档目的和范围51.2 术语/缩略语51.3 参考文档52 模块概述52.1 模块功能定义62.2 模块结构72.3 模块动作时序83 接口说明83.1 数据结构定义83.1.1 模块间接口函数91 文档概述1.1 文档目的和范围该项目主要完成主要包括C/OS-II移植到ARM9 S3C2440上,主要实现任务的启动和任务在中断级的调度和任务的上下文切换,还有实现中断处理服务和开关中断。1.2

2、 术语/缩略语序号术语/缩略语说明1任务调度通过一定的规则实现任务的切换21.3 参考文档序号文档名作者时间版本1需求分析付海文2013-12-11VER0.1.02阶段文档模板东软实训中心2014-4-14VER0.1.02 模块概述本模块是C/OS-II移植到ARM9 S3C2440上的最主要的工作,是连接C/OS-II操作系统内核和处理器的中间桥梁,每个任务的任务控制块(TCB)中都有自己的堆栈空间用来保存任务的上下文,当需要启动该任务时,通过把管理模式下的堆栈指针SP指向任务的堆栈空间,以出栈的方式把任务的上下文导入到处理器的寄存器中,此时处理器程序计数器(PC)指向任务程序入口地址,

3、即实现了任务的启动;当发生任务级的调度时,首先将当前处理器各寄存器压入栈中,然后在当前任务的TCB中保存任务的堆栈指针,最后将最高优先级就绪态任务切换到处理器中运行态;在中断级的任务切换中需要考虑到中断的嵌套和中断的返回。2.1 模块功能定义序号功能点功能点详细内容1多任务启动用于用户程序开始启动任务,直接运行最高优先级就绪态任务2任务级的切换当前任务被挂起时,通过比较优先级判优进行任务切换3中断级的任务切换当中断处理结束后,在中断非嵌套情况下实现任务的切换4中断服务子程序当中断发生,保存CPU现场,调用中断处理程序,中断返回5关中断将处理器程序状态寄存器设置为关中断状态,禁止中断发生6开中断

4、将处理器程序状态寄存器设置为开中断状态,使能中断7时钟中断处理发生时钟中断,调用内核时钟节拍处理函数8任务堆栈初始化每个任务都有一个任务堆栈,该堆栈用来保存任务的上下文。2.2 模块结构 图 1 模块间接口模块名称模块类型概要说明OSTaskStkInit接口任务堆栈初始化OSStartHighRdy接口最高优先级任务启动OSTaskSwHook接口用户自定义函数OSCtxSw接口任务级任务切换OSIntCtxSw接口中断级任务切换OSTickISR接口时钟中断处理OSCPUSaveSR接口关中断OSCPURestoreSR接口开中断OS_CPU_IRQ_ISR接口中断服务程序2.3 模块动作

5、时序系统时钟产生中断后,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; /*

6、无符号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_METHOD3#define OS_ENTER_CRITICAL()(cpu_sr = OSCPUSaveSR()/*Disable inter

7、rupts*/#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 *

8、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函数名

9、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

10、函数名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

11、.7 OS_CPU_IRQ_ISR函数名OS_CPU_IRQ_ISR文件名./OS_CPU_a.s功能概要发生IRQ,提供中断服务记述形式OS_CPU_IRQ_ISR参数类型变量名I/O说明-返回值类型-说明值-详细说明该函数被安装在启动代码中,作为HanlerIRQ的处理程序使用注意事项中断向量的大范围跳转需要使用DCD3.1.1.8 OSCPUSaveSR函数名OSCPUSaveSR文件名./OS_CPU_a.s功能概要关中断记述形式OSCPUSaveSR参数类型变量名I/O说明-返回值类型INT32U说明值cpu_sr保存当前程序状态寄存器CPSR的控制位,在此使用R0,来保存该值-详细

12、说明OS_ENTER_CRITICAL()被宏定义为OSCPUSaveSR,实现临界段保护使用注意事项通用寄存器R0被用来保存CPSR的值3.1.1.9 OSCPURestoreSR函数名OSCPURestoreSR文件名./OS_CPU_a.s功能概要开中断记述形式OSCPURestoreSR参数类型变量名I/O说明INT32Ucpu_sr-恢复当前程序状态寄存器CPSR的控制位,在此用R0来保存cpu_sr返回值类型-说明值-详细说明OS_EXIT_CRITICAL()被宏定义为OSCPURestoreSR,实现临界段打开使用注意事项寄存器R0保存的值用来恢复CPSR的值目 录第1章总 论31.1.项目背景与概况3

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 商业/管理/HR > 其它文档 > 租房合同

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号