实验报告(一)
第1学时跑第一个任务
一.实验目的
本实验的目的是了解嵌入式实时操作系统μCOS代码结构,将其跑起来得到直观的认识。
二.实验步骤
1.将包含全部实验代码的压缩文件解压缩
2.将VC6开发环境打开
3.打开experiment1目录下的ucos_vc.dsw
4.用全部编译(rebuild all)编译程序,运行程序,根据窗口提示输出,获得感性认识!
5.根据教材P206页图7.1及7.1.1和7.1.2的内容,写出文件目录结构的说明,说明嵌入式实时操作系统μCOS都由哪些部分组成
(1)与CPU无关的代码:
操作系统配置文件os_config.h 操作系统头文件ucos_ii.h 内核代码os_core.c 任务管理os_task.c 时间管理os_time.c 信息量管理os_sem.c 互斥信号量管理os_mutex.c 信息邮箱管理os_mbox.c 信息队列管理os_q.c 事件标志组管理os_flag.c 内存管理os_mem.c 定时器管理os_tmr.c
(2)与CPU相关的代码:
处理器相关头文件os_cpu.h 处理器相关的C代码os_cpu.h 处理器相关汇编代码os_cpu_a.asm。
6.VC环境下,在工程上点鼠标右键,查看工程的设计
7.打开main.c, 使用REBUILD ALL 进行编译,找到可执行文件的输出目录,记录下来
experiment1\OUTPUT\Debug\ucos_vc.exe
8.使用菜单或快捷按钮再次执行编译好的程序。
查看运行结果并记录,查看main.c及user.c,分析main.c及user.c代码,解释程序执行的功能。
(1) main.c初始化了操作系统,创建了用户任务usertask
(2)user.c定义了用户任务 usertask,循环对一个变量进行加一,并且输出变量值
9.说明任务堆栈的定义位置,任务在什么时候被创建,任务在什么时候获得运行。
Main.c中CONSTANTS里定义了任务堆栈
任务创建:
在任务调度时,当任务在就续表中优先级最高时,任务获得运行
10.自己修改代码,减少延时时间,或将每次加1改为其他算法,查看效果!
第2学时调试模式跑第一个任务
1.实验目的
本实验的目的在于学会使用VC的调试模式运行和调试操作系统。
2.实验步骤
1.在上次实验的基础上不改动代码,打开工程
2.在user.c中的
printf(“welcome to embeded system\n”);处设置断点。
3.如果程序中有其他断点,去掉
4.在user.c中的
printf(“welcome to embeded system\n”);处设置断点。
(设置断点,在代码处按右键,insert breakpoint)
5.按F5以调试模式运行代码
6.如果有其他断点,去掉,再按F5
7.当到设定的断点处停下时,将VC窗口缩小,调整输出的窗口使两个窗口同时显示在屏幕上
8.按F10单步执行,查看输出
9. 发现在延时代码循环中无法调试,在printf(“j=%d\n”,j++);加断点,按F5
10.在观察窗口watch window输入j, 连续按F5查看j的变化和屏幕的输出。
按一次F5输出一条新记录
11.按SHIFT+F5或使用菜单结束调试,记录
12说明watch window的作用,尝试在watch window中输入操作系统的重要全局变量,P208表7.1,观察他们的值
Watch window可以查看各种变量随程序运行发生的变化
在watch windou中查看一些重要全局变量:
三、实验总结:
通过本次实验的学习,了解嵌入式实时操作系统μCOS代码结构,将程序跑起来得到直观的认识。
让我了解了怎样在VC6.0的开发坏境下编译UCOS程序,学会使用VC的调试模式运行和调试操作系统,对
今后的学习奠定了良好的基础。