搜索
bottom↓
回复: 57

WIN7下使用VC2010调试uCOS-II 2.91

  [复制链接]

出0入0汤圆

发表于 2012-3-28 12:16:41 | 显示全部楼层 |阅读模式
本帖最后由 littleGnss 于 2012-3-28 12:19 编辑

业余时间自学uCOS-II源码,为了方便学习和调试,尝试在WIN7 Visual Studio 2010环境下调试uCOS-II 2.91

1. 下载uCOS-II 2.91

官方下载地址

为了能够运行范例,自己修改后的源码。

2. 下载WIN32 移植代码

虽然官方提供了WIN32的移植代码,但是这个版本的代码只能支持比较简单的范例,类似外部中断,动态优先级转换等功能没有进行移植,应外官方移植支持的ucOS-ii的版本也比较低。官网x86 Win32 Simulator

所以本人采用了德国Hochschule Esslingen 大学Zimmermann教授的WIN32移植版本。该版本支持到uCOS-ii 2.84.经过少量修改后可支持最新的uCOS-ii 2.91. 此外该移植使用软件中断仿真外部中断。这个版本具体介绍参见 Zimmermann教授的网站

我自己稍加修改的的移植源文件。

3. 下载例程

Zimmermann的移植包含了6个例程。 这六个例程的源代码。
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就可以顺利运行。如图4所示


最后对于Example0, 模拟中断,Zimmermann提供了中断发生的程序。 (注意,如果编译这个源文件irqGenerator.c, 也需要设置Character Set -> Use Multi-byte Character Set.
中断下载

Example0运行截图。


参考网站:
http://www2.hs-esslingen.de/~zimmerma/software/index_uk.html
http://embedded-tips.blogspot.ca ... r-ucos-ii-with.html

本人初学uCOS-ii, 如有错误,欢迎指正。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出0入0汤圆

发表于 2012-3-28 12:23:40 | 显示全部楼层
相当不错啊,谢谢分享啊!

出0入0汤圆

发表于 2012-3-28 12:35:06 | 显示全部楼层
2010
用过2008 !
现在要QT了!

出0入0汤圆

发表于 2012-3-28 12:38:24 | 显示全部楼层
牛,mark,备用。

出0入0汤圆

发表于 2012-3-28 12:39:33 | 显示全部楼层
的确很牛 但是2010太占资源了

出0入0汤圆

 楼主| 发表于 2012-3-29 00:00:41 | 显示全部楼层
430504 发表于 2012-3-28 12:39
的确很牛 但是2010太占资源了

还好吧,主要VC2010 比VC6好用太多了。界面也看的舒服多了。

出0入0汤圆

发表于 2012-3-29 00:15:33 | 显示全部楼层
很好,mark!!!

出0入0汤圆

发表于 2012-3-30 23:59:01 | 显示全部楼层
看起来很给力'明天下载,研究一下

出0入0汤圆

 楼主| 发表于 2012-3-31 00:01:20 | 显示全部楼层
XUEPENGBIN 发表于 2012-3-30 23:59
看起来很给力'明天下载,研究一下

呵呵,谢谢。有问题可以留言。

出0入0汤圆

 楼主| 发表于 2012-3-31 00:06:45 | 显示全部楼层
忘了一点, 在官方2.91 ucos_ii.c文件中,要加入下面的函数, 这个主要是为了能够通过编译。

/*
*********************************************************************************************************
* OSTaskReturnHook(OS_TCB *ptcb)
*
* Description: These functions does nothing just here to compile
*
*
*********************************************************************************************************
*/

void OSTaskReturnHook(OS_TCB *ptcb)
{
ptcb = ptcb;
}

出0入0汤圆

发表于 2012-4-5 20:51:43 | 显示全部楼层
mark一下,记号

出0入4汤圆

发表于 2012-4-5 20:56:36 | 显示全部楼层
不错不错,相当的不错

出0入0汤圆

发表于 2012-4-7 10:55:31 | 显示全部楼层
大侠,能发下V2010给我吗,先谢过了。824076435@qq.com

出0入0汤圆

发表于 2012-5-29 20:38:52 | 显示全部楼层
相当好,谢谢!
头像被屏蔽

出0入0汤圆

发表于 2013-1-29 17:44:09 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽

出0入0汤圆

发表于 2013-1-29 19:00:46 | 显示全部楼层
大二就换2010的飘过,2010确实比vc6爽多,台式机不是很卡,经常项目同时开3个VS2010都还可以,但笔记本就比较卡了,估计现在的笔记本运行也没多大压力了,我的笔记本是比较老的~

出0入0汤圆

发表于 2013-1-29 19:03:19 | 显示全部楼层
mark      

出0入0汤圆

发表于 2013-1-29 20:45:11 | 显示全部楼层
VS2010去调 UCOS2 好用不?

出0入0汤圆

发表于 2013-2-8 15:27:06 | 显示全部楼层
正好过年研究下ucos源码,用了5年不知道如何实现的。

出0入0汤圆

发表于 2013-3-12 09:22:23 | 显示全部楼层
成功了!
编译时有冲突,把OS_CPU_C.c里的注释掉就行了。

出0入0汤圆

发表于 2013-3-29 00:34:37 | 显示全部楼层
楼主牛B,佩服。

出0入0汤圆

发表于 2013-4-16 22:04:46 | 显示全部楼层
下载的文件里面找不到TEST.h文件呢??

出0入0汤圆

 楼主| 发表于 2013-4-16 23:26:19 | 显示全部楼层
fenglinglzw 发表于 2013-4-16 22:04
下载的文件里面找不到TEST.h文件呢??

应该是笔误,只有TEST.c这个文件。

出0入0汤圆

发表于 2013-9-9 11:39:54 | 显示全部楼层
挺厉害的。。。。

出0入0汤圆

发表于 2013-12-26 16:46:46 | 显示全部楼层
正好在整这个,找了几个,就是没找到具体的流程,谢谢!

出0入0汤圆

发表于 2013-12-26 18:29:23 | 显示全部楼层
楼主,编译时出现了错误        4        error LNK2005: _OSTaskStatHook 已经在 test.obj 中定义

出0入0汤圆

发表于 2013-12-29 18:06:23 | 显示全部楼层
出现error LNK2005: _OSTaskStatHook 已经在 test.obj 中定义这个错误,只要在ucos_ii.c中加入

/*
*********************************************************************************************************
* OSTaskReturnHook(OS_TCB *ptcb)
*
* Description: These functions does nothing just here to compile
*
*
*********************************************************************************************************
*/

void OSTaskReturnHook(OS_TCB *ptcb)
{
ptcb = ptcb;
}

即可。其他警告是类型不匹配的问题。
已经试验成功

出0入0汤圆

发表于 2013-12-29 18:15:36 | 显示全部楼层
不错的东西,感谢分享

出0入0汤圆

发表于 2013-12-30 23:36:51 | 显示全部楼层
不错不错。我记得上学期,简单过了一遍2。52用2010总是出现错误。试试楼主这个。马上考完试回家看看

出0入0汤圆

发表于 2014-3-31 23:01:23 | 显示全部楼层
感谢,收藏了~

出0入0汤圆

发表于 2014-3-31 23:43:25 | 显示全部楼层
顶起,让更多人看到

出0入0汤圆

发表于 2014-4-6 23:28:32 | 显示全部楼层
收藏了 谢谢              

出0入0汤圆

发表于 2014-4-28 11:32:30 | 显示全部楼层
不错 先收藏

出0入0汤圆

发表于 2014-4-30 10:20:48 | 显示全部楼层
mark!!!!

出0入0汤圆

发表于 2014-4-30 13:05:24 | 显示全部楼层
留名学习

出0入0汤圆

发表于 2014-5-5 08:33:36 | 显示全部楼层
谢谢分享                              

出0入0汤圆

发表于 2014-5-5 09:28:36 | 显示全部楼层
不错,MARK,楼主好实践

出0入0汤圆

发表于 2014-7-27 19:55:25 | 显示全部楼层
中断触发不了啊,楼主。。。。 = =

出0入0汤圆

发表于 2014-7-27 19:55:46 | 显示全部楼层
daniellee1226 发表于 2014-7-27 19:55
中断触发不了啊,楼主。。。。 = =

可以说一下,要怎么用么?

出0入0汤圆

发表于 2014-8-26 00:12:28 | 显示全部楼层
本帖最后由 Robbins 于 2014-8-26 01:31 编辑

Example 0 的中断始终出不来,打印几次任务后就一直等待了,我把irqGenerator.exe程序放到项目可执行文件程序同一个文件夹,不知是不是这样做。
哦,看了网站原文,发现理解错了,应该是运行expample1的时候,再双击运行irqGenerator.exe ,但是expample1不知道为什么运行一下就等待了。
再看了irqGenerator的代码,irqGenerator.exe应该要从命令行运行吧,argc argv参数给多少呢?

出0入0汤圆

发表于 2014-8-26 01:51:55 | 显示全部楼层
本帖最后由 Robbins 于 2014-8-26 02:04 编辑

搞定了,为了搞懂传入参数,重建了一个irq工程,加入irqGenerator.c,编译后在命令行下输入irq 1就可触发中断1。
看了网站说明,这个代码只是为了模拟ucos一些基本功能,使用会有些限制,纯属DIY,但是在没有板子的情况下玩玩还是不错滴,而且能用线程来模拟,确实高手

出0入0汤圆

发表于 2014-10-5 18:17:08 | 显示全部楼层
果断还要再顶一下。。。。

出0入0汤圆

发表于 2014-10-10 13:37:55 | 显示全部楼层
留名 ,有机会学习,mark一下

出0入0汤圆

发表于 2015-2-5 22:36:29 | 显示全部楼层
额,楼主哇,我居然出现了黑框框,连main函数都进不了,用你的方法在2013版本上运行的,编译貌似过了。

出0入0汤圆

发表于 2015-4-2 10:25:40 | 显示全部楼层
谢谢啊 楼主 我先试试看 有问题的话还要麻烦你啊!

出0入0汤圆

发表于 2015-7-15 17:08:09 | 显示全部楼层
windows8有没有哪位试过呀

出0入0汤圆

发表于 2015-7-16 19:23:07 | 显示全部楼层
不错                        学习              

出0入0汤圆

发表于 2015-8-21 00:39:39 | 显示全部楼层
提示这个   
Error        1        error C1083: Cannot open include file: 'includes.h': No such file or directory        f:\常用资料\ucos-ii\2\使用vc2010调试ucos-ii 2.91\win7_port\win7\pc.c        15        1        ConsoleApplication1
明明有这个头文件在里面呀  ,有没有人遇到过呀

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出0入0汤圆

发表于 2015-9-1 19:27:30 | 显示全部楼层
调完,应用在MCU中还需要更改吗?
目前我的STM32代码,都是在VS中建立工程,进行代码编写、修改;在MDK中进行编译、在线调试的,也算比较方便吧

出0入0汤圆

发表于 2015-10-9 14:00:04 | 显示全部楼层
WIN7下使用VC2010调试uCOS-II 2.91  mark

出0入0汤圆

发表于 2017-12-13 00:12:10 | 显示全部楼层
littleGnss 发表于 2012-3-29 00:00
还好吧,主要VC2010 比VC6好用太多了。界面也看的舒服多了。

用VS2010,怎么提示找不到exe文件?

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出0入0汤圆

发表于 2018-4-9 11:10:52 | 显示全部楼层
非常棒!正是我想要学的。请问Zimmermann教授的port文件有吗?因为我的ucos是2.8版本的,多谢!

出0入0汤圆

发表于 2018-6-10 02:51:35 来自手机 | 显示全部楼层
pc版的ucos不错

出0入4汤圆

发表于 2020-6-25 19:07:44 | 显示全部楼层
正在看ucos,下载在windows调试一下

出0入4汤圆

发表于 2021-6-29 16:05:35 | 显示全部楼层
这个正在研究。

出0入0汤圆

发表于 2021-6-29 20:30:09 来自手机 | 显示全部楼层
这个正在研究

出0入4汤圆

发表于 2021-7-1 12:46:46 | 显示全部楼层
怎么模拟中断程序会没反应呢?另外,以下部分不注释掉才能编译过,注释了,反而不能过?

为了能够成功编译,需要注释掉 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>

出0入0汤圆

发表于 2021-12-17 22:25:00 | 显示全部楼层
大佬,我想问一下各个例程的意义是什么,虽然这篇已经发布很久了,但是希望能看见,急用
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子论坛 -- 东莞阿莫电子网站 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2023-2-7 20:35

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表