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
uC/OS-IIuC/OS-II 在在 ARMARM 平台的移植平台的移植
复习复习 实验平台的搭建与配置实验平台的搭建与配置 串口、串口、 AD/DAAD/DA 模块、模块、 LCDLCD 显示器、触摸显示器、触摸
屏、屏、 CANCAN 总线、直流电机总线、直流电机 // 步进电机等步进电机等 以及以及 Boot LoaderBoot Loader 的熟悉,与操作的熟悉,与操作
实验内容实验内容
1.将 uC/OS-II 内核移植到 ARM7 微处理器 上。
2 .创建两个任务 task1 、 task2 ,分别向串口 输出数据,在超级终端上显示当前正在 运行那个任务。
实验目的实验目的
1 .了解 uC/OS-II 内核的主要结构。 2 .掌握将 uC/OS-II 内核移植到 ARM7
处理器上的基本方法。
实验工具实验工具 实验平台实验平台 ADS1.2ADS1.2 超级终端超级终端
实验原理实验原理 所谓移植,指的是一个操作系统可以在某所谓移植,指的是一个操作系统可以在某
个微处理器或者微控制器上运行。 个微处理器或者微控制器上运行。 设计的语言设计的语言
C:C: 主要开发工具主要开发工具汇编:读写处理器、寄存器时只能通过汇汇编:读写处理器、寄存器时只能通过汇
编语言来实现 编语言来实现
移植的条件移植的条件 11 .处理器的.处理器的 CC 编译器能产生可重入代码。编译器能产生可重入代码。 22 .在程序中可以打开或者关闭中断。.在程序中可以打开或者关闭中断。 33 .处理器支持中断,并且能产生定时中断.处理器支持中断,并且能产生定时中断
(通常在(通常在 10Hz1000Hz10Hz1000Hz 之间)。之间)。 44 .处理器支持能够容纳一定量数据的硬件 .处理器支持能够容纳一定量数据的硬件
堆栈。堆栈。 55 .处理器有将堆栈指针和其他.处理器有将堆栈指针和其他 CPUCPU 寄存寄存
器器 存储和读出到堆栈(或者内存)的指存储和读出到堆栈(或者内存)的指令。令。
所涉及到的函数所涉及到的函数 汇编函数汇编函数
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 个函数为接口函数,可以不加代码个函数为接口函数,可以不加代码
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(); // 开始多任务调度,永不返回开始多任务调度,永不返回}}
基于基于 uC/OSuC/OS 的应用开发的应用开发 void YourTask (void *pdata)void YourTask (void *pdata)
{{
/* /* 用户代码用户代码 */*/
OSTaskDel(OS_PRIO_SELF);OSTaskDel(OS_PRIO_SELF);
}}
添加两个新任务添加两个新任务 添加两个新任务,添加两个新任务, 目的:目的:
通过串口在超级终端上分别显示字符串。通过串口在超级终端上分别显示字符串。