搜索
bottom↓
回复: 53

WIN7下使用VC2010调试uCOS-II 2.91

  [复制链接]
(285776112)

出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
(285775693)

出0入0汤圆

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

出0入0汤圆

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

出0入0汤圆

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

出0入0汤圆

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

出0入0汤圆

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

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

出0入0汤圆

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

出0入0汤圆

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

出0入0汤圆

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

呵呵,谢谢。有问题可以留言。
(285560708)

出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;
}
(285054010)

出0入0汤圆

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

出0入4汤圆

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

出0入0汤圆

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

出0入0汤圆

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

出0入0汤圆

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

出0入0汤圆

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

出0入0汤圆

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

出0入0汤圆

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

出0入0汤圆

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

出0入0汤圆

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

出0入0汤圆

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

出0入0汤圆

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

出0入0汤圆

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

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

出0入0汤圆

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

出0入0汤圆

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

出0入0汤圆

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

出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;
}

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

出0入0汤圆

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

出0入0汤圆

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

出0入0汤圆

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

出0入0汤圆

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

出0入0汤圆

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

出0入0汤圆

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

出0入0汤圆

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

出0入0汤圆

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

出0入0汤圆

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

出0入0汤圆

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

出0入0汤圆

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

出0入0汤圆

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

可以说一下,要怎么用么?
(209701165)

出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参数给多少呢?
(209695198)

出0入0汤圆

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

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

出0入0汤圆

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

出0入0汤圆

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

出0入0汤圆

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

出0入0汤圆

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

出0入0汤圆

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

出0入0汤圆

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

出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
(177577463)

出0入0汤圆

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

出0入0汤圆

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

出0入0汤圆

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

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

本帖子中包含更多资源

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

x
(95440861)

出0入0汤圆

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

出0入0汤圆

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

出0入4汤圆

发表于 2020-6-25 19:07:44 | 显示全部楼层
正在看ucos,下载在windows调试一下
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子论坛 ( 公安交互式论坛备案:44190002001997 粤ICP备09047143号 )

GMT+8, 2021-4-18 02:31

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

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