12
uC/OS-II uC/OS-II ARM ARM 在在在在在 在在在在在

uC/OS-II 在 ARM 平台的移植

  • Upload
    harken

  • View
    79

  • Download
    2

Embed Size (px)

DESCRIPTION

uC/OS-II 在 ARM 平台的移植. 复习. 实验平台的搭建与配置 串口、 AD/DA 模块、 LCD 显示器、触摸屏、 CAN 总线、直流电机 / 步进电机等 以及 Boot Loader 的熟悉,与操作. 实验内容. 1 . 将 uC/OS-II 内核移植到 ARM7 微处理器上。 2 .创建两个任务 task1 、 task2 ,分别向串口输出数据,在超级终端上显示当前正在运行那个任务。. 实验目的. 1 .了解 uC/OS-II 内核的主要结构。 2 .掌握将 uC/OS-II 内核移植到 ARM7 处理器上的基本方法。. 实验工具. - PowerPoint PPT Presentation

Citation preview

Page 1: uC/OS-II 在 ARM 平台的移植

uC/OS-IIuC/OS-II 在在 ARMARM 平台的移植平台的移植

Page 2: uC/OS-II 在 ARM 平台的移植

复习复习 实验平台的搭建与配置实验平台的搭建与配置 串口、串口、 AD/DAAD/DA 模块、模块、 LCDLCD 显示器、触摸显示器、触摸

屏、屏、 CANCAN 总线、直流电机总线、直流电机 // 步进电机等步进电机等 以及以及 Boot LoaderBoot Loader 的熟悉,与操作的熟悉,与操作

Page 3: uC/OS-II 在 ARM 平台的移植

实验内容实验内容

1.将 uC/OS-II 内核移植到 ARM7 微处理器 上。

2 .创建两个任务 task1 、 task2 ,分别向串口 输出数据,在超级终端上显示当前正在 运行那个任务。

Page 4: uC/OS-II 在 ARM 平台的移植

实验目的实验目的

1 .了解 uC/OS-II 内核的主要结构。 2 .掌握将 uC/OS-II 内核移植到 ARM7

处理器上的基本方法。

Page 5: uC/OS-II 在 ARM 平台的移植

实验工具实验工具 实验平台实验平台 ADS1.2ADS1.2 超级终端超级终端

Page 6: uC/OS-II 在 ARM 平台的移植

实验原理实验原理 所谓移植,指的是一个操作系统可以在某所谓移植,指的是一个操作系统可以在某

个微处理器或者微控制器上运行。 个微处理器或者微控制器上运行。 设计的语言设计的语言

C:C: 主要开发工具主要开发工具汇编:读写处理器、寄存器时只能通过汇汇编:读写处理器、寄存器时只能通过汇

编语言来实现 编语言来实现

Page 7: uC/OS-II 在 ARM 平台的移植

移植的条件移植的条件 11 .处理器的.处理器的 CC 编译器能产生可重入代码。编译器能产生可重入代码。 22 .在程序中可以打开或者关闭中断。.在程序中可以打开或者关闭中断。 33 .处理器支持中断,并且能产生定时中断.处理器支持中断,并且能产生定时中断

(通常在(通常在 10Hz1000Hz10Hz1000Hz 之间)。之间)。 44 .处理器支持能够容纳一定量数据的硬件 .处理器支持能够容纳一定量数据的硬件

堆栈。堆栈。 55 .处理器有将堆栈指针和其他.处理器有将堆栈指针和其他 CPUCPU 寄存寄存

器器 存储和读出到堆栈(或者内存)的指存储和读出到堆栈(或者内存)的指令。令。

Page 8: uC/OS-II 在 ARM 平台的移植
Page 9: uC/OS-II 在 ARM 平台的移植

所涉及到的函数所涉及到的函数 汇编函数汇编函数

OSStartHighRdy()OSStartHighRdy() OSCtxSw()OSCtxSw() OSIntCtxSw()OSIntCtxSw() OSTickISR()OSTickISR()

CC 语言函数语言函数 void *OSTaskStkInit (void (*task)(void *pd),void *pdata, void *OSTaskStkInit (void (*task)(void *pd),void *pdata,

void *ptos, INT16U opt) void *ptos, INT16U opt) void OSTaskCreateHook (OS_TCB *ptcb) void OSTaskCreateHook (OS_TCB *ptcb) void OSTaskDelHook (OS_TCB *ptcb)void OSTaskDelHook (OS_TCB *ptcb) void OSTaskSwHook (void)void OSTaskSwHook (void) void OSTaskStatHook (void)void OSTaskStatHook (void) void OSTimeTickHook (void)void OSTimeTickHook (void) 后后 55 个函数为接口函数,可以不加代码个函数为接口函数,可以不加代码

Page 10: uC/OS-II 在 ARM 平台的移植

uC/OS-IIuC/OS-II 的启动的启动void main (void)void main (void)

{{

OSInit(); // OSInit(); // 初始化初始化 uC/OS-II uC/OS-II

..

通过调用通过调用 OSTaskCreate()OSTaskCreate() 或或 OSTaskCreOSTaskCreateExt()ateExt() 创建至少一个任务创建至少一个任务 ;;

..

OSStart(); //OSStart(); // 开始多任务调度,永不返回开始多任务调度,永不返回}}

Page 11: uC/OS-II 在 ARM 平台的移植

基于基于 uC/OSuC/OS 的应用开发的应用开发 void YourTask (void *pdata)void YourTask (void *pdata)

{{

/* /* 用户代码用户代码 */*/

OSTaskDel(OS_PRIO_SELF);OSTaskDel(OS_PRIO_SELF);

}}

Page 12: uC/OS-II 在 ARM 平台的移植

添加两个新任务添加两个新任务 添加两个新任务,添加两个新任务, 目的:目的:

通过串口在超级终端上分别显示字符串。通过串口在超级终端上分别显示字符串。