uCOS-II模拟(VS2010&WIN32)
转自http://www.amobbs.com/thread-5462878-1-1.html
自学uCOS-II源码,在论坛上上看到大神在WIN7 Visual Studio 2010环境下调试uCOS-II 2.91。故转载过来跟着调试学习。
1. 下载uCOS-II 2.91
官方下载地址:http://micrium.com/page/downloads/source_code
方便调试而修改后的源码地址:http://www.amobbs.com/forum.php?mod=attachment&aid=MjM0MXw3N2I5NGNlMHwxMzUyNTY5MTAyfDE4MDg2MHw1NDYyODc4
2. 下载WIN32 移植代码
虽然官方提供了WIN32的移植代码,但是这个版本的代码只能支持比较简单的范例,类似外部中断,动态优先级转换等功能没有进行移植,应外官方移植支持的ucOS-ii的版本也比较低。官网x86 Win32 Simulator
所以本人采用了德国Hochschule Esslingen 大学Zimmermann教授的WIN32移植版本。该版本支持到uCOS-ii 2.84.经过少量修改后可支持最新的uCOS-ii 2.91. 此外该移植使用软件中断仿真外部中断。这个版本具体介绍参见 Zimmermann教授的网站。
我自己稍加修改的的移植源文件WIN7 PORT.zip。
3. 下载例程
Zimmermann的移植包含了6个例程。 这六个例程的源代码App.zip。
Zimmermann教授移植和范例地址
4. 新建VC2010工程
新建Win32 Console Application, 如图1所示:
Application Settings 选择 Console Application,取消掉Pre-complied Header,再选择Empty Project。 如图2所示:
为了方便起见,以如图3方式安排源文件,(根据需要可以自己安排自己的目录)
App目录下存放例程文件: app_cfg.h; INCLUDE.h; OS_CFG.h; Test.h.
Port目录下存放移植文件: PC.h.h, PC.c, os_cpu.h和os_cpu.c四个文件。
Source目录下存放uCOS-ii 2.91的内核文件。
将这些文件加入到工程的Source Files分类下。
在工程的property窗口,设置 General -> Character Set -> Use Multi-byte Character Set.
C/C++ -> General -> Additional Include Directories 分别加入App,Port和source目录。
Linker -> Input -> Additional Dependencies 加入winmm.lib (关于时钟的win api)
由于Zimmermann的例程是基于uCOS 2.84的,为了使用2.91版本, 需要在OS_CFG.h中加入新的配置选项
#define OS_FLAG_NAME_EN 1u /* Enable names for event flag group */
#define OS_MEM_NAME_EN 1u /* Enable memory partition names */
#define OS_APP_HOOKS_EN 0u /* Application-defined hooks are called from the uC/OS-II hooks */
#define OS_EVENT_MULTI_EN 1u /* Include code for OSEventPendMulti() */
#define OS_TASK_NAME_EN 1u /* Enable task names */
#define OS_TASK_REG_TBL_SIZE 1u /* Size of task variables array (#of INT32U entries) */
为了能够成功编译,需要注释掉 ucos_ii.c文件中
#include <os_core.c>
#include <os_flag.c>
#include <os_mbox.c>
#include <os_mem.c>
#include <os_mutex.c>
#include <os_q.c>
#include <os_sem.c>
#include <os_task.c>
#include <os_time.c>
#include <os_tmr.c>
另外因为uCOS-ii在windows的移植上,无法合理计算idleTask的counter数,所以当OS_TASK_STAT_EN使能后,无法进行统计任务(1/10秒的时候OSIdleCtrMax的值比100还小)。所以通过修改os_core.c中如下行:
注释掉:
OSIdleCtrMax /= 100uL;
将 :
OSCPUUsage = (INT8U)(100uL - OSIdleCtrRun / OSIdleCtrMax);
改为:
OSCPUUsage = (INT8U)(100uL - OSIdleCtrRun * 100 / OSIdleCtrMax);
这样修改后,Example 3就可以顺利运行。
最后对于Example0, 模拟中断,Zimmermann提供了中断发生的程序。 (注意,如果编译这个源文件irqGenerator.c, 也需要设置Character Set -> Use Multi-byte Character Set.
中断下载
参考网站:
http://www2.hs-esslingen.de/~zimmerma/software/index_uk.html
http://embedded-tips.blogspot.ca/2010/02/running-pc-utility-for-ucos-ii-with.html
uCOS-II模拟(VS2010&WIN32)的更多相关文章
- DE1-SOC开发板上搭建NIOS II处理器运行UCOS II
DE1-SOC开发板上搭建NIOS II处理器运行UCOS II 今天在DE1-SOC的开发板上搭建NIOS II软核运行了UCOS II,整个开发过程比较繁琐,稍微有一步做的不对,就会导致整个过 ...
- ucos ii 46个系统API函数解析
源: ucos ii 46个系统API函数解析
- FreeRTOS 和uCOS II的简单比较
转载:http://www.viewtool.com/bbs/forum.php?mod=viewthread&tid=114 这是两种RTOS, 现在粗略比较一下. freeRTOS比uCO ...
- VS2010 Win32项目的源码位置设置
在VS2010中,我们可以创建一个Win32项目用来编辑C或CPP代码,项目建好后我们向项目文件夹添加代码文件,并调试能正常运行. 有时候我们会发现项目目录下没有源文件,这种情况下,可以通过设置“输出 ...
- hdu_5831_Rikka with Parenthesis II(模拟)
题目链接:hdu_5831_Rikka with Parenthesis II 题意: 给你一些括号的排列,必须交换一次,能不能将全部的括号匹配 题解: 模拟一下括号的匹配就行了,注意要特判只有一对括 ...
- ucos ii 百度官方介绍
μC/OS II(Micro-Controller Operating System Two)是一个可以基于ROM运行的.可裁剪的.抢占式.实时多任务内核,具有高度可移植性,特别适合于微处 ...
- 汉诺塔问题II(模拟)
汉诺塔问题II Time Limit: 1 Sec Memory Limit: 64 MB Submit: 1556 Solved: 720 Description 汉诺塔(又称河内塔)问题是源于 ...
- VS2010 win32项目windows窗体程序 向导生成代码解析
目录: 1.Win32项目的windows窗体程序的向导生成了如下代码 2.手工生成代码如下 3.当消息队列中没有消息需要处理,我们可以利用这段时间处理我们自己的任务 1.Win32项目的window ...
- vista x64 vs2010 win32添加资源 未能完成操作解决办法
非常痛苦的感觉,不能用vc6,msdn library也不好用,去2k3系统试了下,没有任何问题,无奈想重装系统了,但是太浪费时间,装了虚拟机也是vistax64的,安装之后正常... 卸载重新安装依 ...
随机推荐
- 转载: GMM-HMM学习笔记
转载地址:http://blog.csdn.net/davidie/article/details/46929269 最近几天钻研了语音处理中的GMM-HMM模型,阅读了一些技术博客和学术论文,总算是 ...
- spring security 登录、权限管理配置
登录流程 1)容器启动(MySecurityMetadataSource:loadResourceDefine加载系统资源与权限列表) 2)用户发出请求 3)过滤器拦截(MySecurityFil ...
- net8:简易的文件磁盘管理操作一(包括文件以及文件夹的编辑创建删除移动拷贝重命名等)
原文发布时间为:2008-08-07 -- 来源于本人的百度文章 [由搬家工具导入] using System;using System.Data;using System.Configuration ...
- 转 C++STL之string
http://www.cnblogs.com/wangkangluo1/archive/2011/07/22/2114118.html string类的构造函数: string(const char ...
- shell的函数的简单入门
shell的函数的简单入门 语法: function funcname(){} 示例: #!/bin/bash #定义将参数转化为大写的函数 function strToUpper(){ | tr ' ...
- cannot find package "golang.org/x/crypto/pbkdf2" in any of:
cannot find package "golang.org/x/crypto/pbkdf2" in any of: /Users/zhou/go/src/mos.market/ ...
- (12)java -IDEA使用
一. 引入jar包 1. 2.
- 如何选择 IT 技术书籍
★第1招:看网上评论 首先,上一些权威的图书网站,看看大伙儿的评价如何(要相信群众的眼睛是雪亮的).对于英文书籍,我一般上亚马逊网站去看看:中文书籍则上豆瓣网.这两个网站都提供星级评分,一般 > ...
- BZOJ——1626: [Usaco2007 Dec]Building Roads 修建道路
http://www.lydsy.com/JudgeOnline/problem.php?id=1626 Time Limit: 5 Sec Memory Limit: 64 MBSubmit: 1 ...
- 洛谷 P3865 【模板】ST表
P3865 [模板]ST表 题目背景 这是一道ST表经典题——静态区间最大值 请注意最大数据时限只有0.8s,数据强度不低,请务必保证你的每次查询复杂度为 O(1)O(1) 题目描述 给定一个长度为 ...