uC/OSII在LPC2200单片机的移植实践

4星 · 超过85%的资源 需积分: 3 3 下载量 185 浏览量 更新于2024-09-25 收藏 162KB PDF 举报
"本文档是关于将UCOS II操作系统移植到LPC2200单片机的详细说明,包括了移植过程中涉及的关键源文件、函数和中断处理的修改记录。主要内容涵盖OS_CPU_C.C、OS_CPU.H和OS_CPU_A.ASM的修改,以及中断注册函数的编写。" 在移植UCOS II到LPC2200这个基于ARM架构的微控制器时,主要关注以下几个方面: 1. **OS_CPU_C.C**:这个文件包含了与CPU相关的特定实现,如任务管理的函数。 - **OSTaskStkInit()**: 初始化任务堆栈,它负责设置栈顶指针并压入必要的寄存器值,如程序计数器(PC)、链接寄存器(LR)和其他工作寄存器,以及处理器状态寄存器(CPSR)。 - **OSTaskCreateHook()**: 创建任务时执行的钩子函数,可以用来进行额外的任务初始化操作。 - **OSTaskDelHook()**: 删除任务时调用的钩子函数,用于清理任务资源。 - **OSTaskSwHook()**: 任务切换时的钩子函数,可以用来记录或更新任务切换信息。 - **OSTaskStartHook()**: 任务启动时的钩子,可能包含任务的预运行设置。 - **OSTimeTickHook()**: 定时器滴答中断时执行的钩子,通常用于任务超时和调度。 2. **OS_CPU.H**:定义了与CPU架构相关的头文件,包含关键宏定义。 - **关中断/开中断**: 这些宏定义用于在需要中断禁用或恢复时提供原子操作。 - **定义堆栈增长方向**: 根据LPC2200的堆栈增长规则,确定栈指针如何递增或递减以正确管理堆栈空间。 3. **OS_CPU_A.ASM**:汇编语言实现的CPU相关代码,主要用于实时中断服务和上下文切换。 - **OSStartHighRdy()**: 系统启动后,运行优先级最高的任务。 - **OSCtxSw()**: 用户级上下文切换,用于在两个任务之间切换执行。 - **OSIntCtxSw()**: 中断上下文切换,发生在中断服务程序中。 - **OSTickISR()**: 定时器滴答中断服务程序,更新系统时间并触发可能的任务调度。 4. **向量中断注册函数的编写**:在LPC2200中,需要为每个中断源编写相应的中断处理函数,并在启动代码中配置中断向量表,确保中断能正确触发并导向相应的服务程序。 移植UCOS II到LPC2200的过程中,需要对硬件特性有深入理解,如中断处理机制、内存布局、寄存器配置等。同时,要遵循UCOS II的内核规范,确保移植后的系统稳定性、效率和实时性。此外,文档中的修改记录提供了移植过程的变更历史,对于后续的维护和升级具有重要参考价值。