搜索
bottom↓
回复: 127

一个最新的uCOS-II的GCCAVR移植版本

[复制链接]

出0入0汤圆

发表于 2007-9-9 23:54:49 | 显示全部楼层 |阅读模式
本人刚刚移植通过,基于atmega128的,时钟节拍采用的是8位定时器Timer0的比较匹配输出中断,频率200Hz。基于最新的uCOS-II v2.85,较新的GCCAVR 4.1.1(WinAVR20070122)。

我在网上看了很多,但是关于一个真正能够跑起来的基于GCCAVR最新版本的uCOS-II几乎没有,但是自己自小酷爱GCCAVR,于是独自捣鼓很久,终于搞出来了,用的移植方法也是作者Jean J. Labrosse在书籍《MicroC/OS-II》Second Edition里面推荐的最新的方法进行移植的。

点击此处下载armok01171130.zip

有不明白的可以联系我。
QQ:    20057607
Email: xiawei0311#gmail.com

阿莫论坛20周年了!感谢大家的支持与爱护!!

一只鸟敢站在脆弱的枝条上歇脚,它依仗的不是枝条不会断,而是自己有翅膀,会飞。

出0入0汤圆

发表于 2007-9-10 00:33:51 | 显示全部楼层
顶你。

出0入0汤圆

发表于 2007-9-10 00:45:14 | 显示全部楼层
你的这个贴子,今天让我失眠。再顶一下。

出0入0汤圆

发表于 2007-9-10 00:49:50 | 显示全部楼层
请问是否能直接应用的Mega64上,好象只是RAM与ROM大小不同吧?

出0入0汤圆

发表于 2007-9-10 01:15:42 | 显示全部楼层

我试了一下,会出现阶段avr-gcc: _spawnv: Invalid argument
make ***[UCOS-II.elf] error 1 的错误,见附件图;
因为我机器上装了较多的编译器,所以我一般都用绝对路径使用make(应该没有问题)
clean 了一遍,还是相同的问题

出0入0汤圆

发表于 2007-9-10 01:21:15 | 显示全部楼层
我用的GCC版本更新一些,不知是不是这个问题?

出0入0汤圆

 楼主| 发表于 2007-9-10 01:58:07 | 显示全部楼层
我这里并不报错啊!只是一个.eep的error而已。
这是我的截屏

出0入0汤圆

 楼主| 发表于 2007-9-10 02:19:22 | 显示全部楼层
应用程序我也运行过了,一切正常啊,可能是你的编译器的问题吧,我的是4.1.1的了,已经是很新的了,没想到还有比我更新的GCCAVR。有空去单位再用4.1.2的GCCAVR给你试试。
哈哈,看来我还要再测试一下,“最新的GCC”+最新的“uCOS-II”。
明天再试,睡觉了。

出0入0汤圆

发表于 2007-9-10 08:55:56 | 显示全部楼层
简直是太酷了!

出0入0汤圆

发表于 2007-9-10 09:36:47 | 显示全部楼层
我把机器上其它的编译器都删除了,清理了注册表,再重新编没问题了!可能是其它的东西造成的,谢谢!
另外请问是不是直接可以用在M64上,我看了二者好象没有什么差别!
再次感谢!

出0入0汤圆

发表于 2007-9-10 10:12:01 | 显示全部楼层
可以提供2.85的原版吗??

出0入0汤圆

发表于 2007-9-10 10:27:20 | 显示全部楼层
点击此处下载armok01171348.ZIP
我这有官网上的下的,支持IAR及ICC的,但是好象少了APP.h(可能是希望你自己来配置)
本想用正版的,写邮件不回,打电话给他们办事处也不能很好解决问题,
同意阿莫说的,收费才能保证其价值(不是原话,大概这个意思);
只是觉得他为了让别人付费,可以不公开代码(编成.o文件发布),
但是给别人评估的东西最好能让傻子也顺利得用起来,要不怎么知道他好不好呢!

出0入0汤圆

 楼主| 发表于 2007-9-10 10:29:42 | 显示全部楼层
可以直接应用在atmega64上面,完全可以!
压缩包里面的OSsrc文件夹下的就是2.85的源码啊,一个字都没改动!

出0入0汤圆

发表于 2007-9-10 10:33:10 | 显示全部楼层
呵呵,谢谢!

出0入0汤圆

发表于 2007-9-10 10:41:18 | 显示全部楼层
有应用实例吗?哪怕一个非常简单的,非常感谢!

出0入0汤圆

 楼主| 发表于 2007-9-10 11:14:54 | 显示全部楼层
你改一下main.c文件即可,实现一个小例程。

#include <avr/io.h>

#include "ucos_ii.h"
#include "atmega128.h"

OS_STK TestTaskStk0[100];
OS_STK TestTaskStk1[100];

void TestTask0(void* pdata);
void TestTask1(void* pdata);

int main(void)
{
DDRA=0xFF;/*PORTA口设置为输出*/
PORTA=0xFF;/*PORTA口全部置为高电平*/
DDRC=0xFF;/*PORTC口设置为输出*/
PORTC=0xFF;/*PORTC口全部置为高电平*/
OSInit();
OSTaskCreate(TestTask0,(void*)0,&TestTaskStk0[99],0);
OSTaskCreate(TestTask1,(void*)0,&TestTaskStk1[99],1);
OSStart();
}

void TestTask0(void* pdata)
{
INT8U LED=0xFF;
pdata=pdata;
init_timer0();/*初始化时钟节拍中断*/
while(1)
{
  LED^=0x01;
  PORTA=LED;
  OSTimeDlyHMSM(0,0,1,0);/*PA0口电平每隔1秒改变一次*/
}
}

void TestTask1(void* pdata)
{
INT8U LED=0xFF;
pdata=pdata;
while(1)
{
  LED^=0x01;
  PORTC=LED;
  OSTimeDlyHMSM(0,0,3,0);/*PC0口电平每隔3秒改变一次*/
}
}

出0入0汤圆

发表于 2007-9-10 12:25:45 | 显示全部楼层
谢谢usbfish!

出0入0汤圆

发表于 2007-9-10 16:07:04 | 显示全部楼层
请教usbfish:直接在AVR Stdio4中编译(WinAVR-2005或其它版本)需要修改哪些那些地方,能否也给一个源程序?谢谢!

出0入0汤圆

发表于 2007-9-10 16:52:17 | 显示全部楼层
狂顶顶下~!

出0入0汤圆

发表于 2007-9-10 17:08:54 | 显示全部楼层
下了
研究一下.
顶上去

出0入0汤圆

发表于 2007-9-10 17:28:26 | 显示全部楼层
不错!刚试了!
可以在winavr2007上编译通过!
有一个.eep的报错!
可以生成hex文件!

出0入0汤圆

发表于 2007-9-10 17:39:44 | 显示全部楼层
好,顶上~

出0入0汤圆

发表于 2007-9-10 21:00:56 | 显示全部楼层
精品顶起

出0入0汤圆

发表于 2007-9-11 08:55:00 | 显示全部楼层
问一下,中断函数应该怎么写

出0入0汤圆

 楼主| 发表于 2007-9-11 09:50:19 | 显示全部楼层
为了照顾兼容性,暂时没有添加中断函数。我会在后面放出。

出0入0汤圆

发表于 2007-9-11 10:28:38 | 显示全部楼层
很好,盼着能够早日完成

出0入0汤圆

发表于 2007-9-11 11:17:22 | 显示全部楼层
顶!
能否建一个QQ群?要usbfish兄给每个兄弟指点建议忙不过来,呵呵!

出0入0汤圆

 楼主| 发表于 2007-9-11 11:29:52 | 显示全部楼层
汗。。。。。
指点不敢当,大家共勉。

出0入0汤圆

发表于 2007-9-25 00:48:23 | 显示全部楼层
直接加到WINAVR中的工程里面,再写一个makefile这样可以吗?
还是非要用DOS命令才行?

出0入0汤圆

发表于 2007-9-25 18:49:32 | 显示全部楼层
very good!

出0入0汤圆

发表于 2007-9-25 22:59:09 | 显示全部楼层
好东西啊,

出0入0汤圆

发表于 2007-12-15 11:13:50 | 显示全部楼层
好东西~帮顶!

出0入0汤圆

发表于 2007-12-29 12:51:56 | 显示全部楼层
太感动了!!!!!!!!!

出0入0汤圆

发表于 2007-12-29 13:31:03 | 显示全部楼层
能不能加我为好友啊..我也挺喜欢玩UC/OS-II..只是GCC不大会用.
我玩的是UC/OS-II+LPC2148 ADS环境.
QQ312008263

出0入0汤圆

发表于 2008-1-17 15:17:04 | 显示全部楼层
好,用了你的移植程序,结果出现了下边的问题:
http://www2.ourdev.cn/bbs/bbs_content.jsp?bbs_sn=893493&bbs_page_no=1&search_mode=1&search_text=ucos&bbs_id=9999

呵呵,有点乱,对于软件堆栈和硬件堆栈。

出0入70汤圆

发表于 2008-1-18 10:26:06 | 显示全部楼层
顶起

出0入0汤圆

发表于 2008-1-22 09:52:26 | 显示全部楼层
谢谢!顶一下

出10入210汤圆

发表于 2008-1-22 13:23:56 | 显示全部楼层
试了,这个可以在M128上面用。很正常。
13K多程序。
但不能在M16上用,有空要好好研究一下,因为有个ICC的uCOS2(2.7X)(也本站网友的)可以在M8/16上跑。
不知楼主有没有试一下M16。

.bss的大小超出了1K,不知是不是这个问题。

出0入0汤圆

发表于 2008-3-25 17:09:40 | 显示全部楼层
全部顶上来,慢慢在看看。发现学习OS真是个痛苦的事情

出0入0汤圆

发表于 2008-3-26 08:30:21 | 显示全部楼层
顶!

出0入0汤圆

发表于 2008-3-26 11:34:28 | 显示全部楼层
顶起

出0入70汤圆

发表于 2008-3-26 12:14:59 | 显示全部楼层
用一楼代码


>make clean
……

>make all

-------- begin --------
avr-gcc (GCC) 4.2.2 (WinAVR 20071221)
Copyright (C) 2007 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.


Compiling: ../OSsrc/os_core.c
avr-gcc -c -mmcu=atmega128 -I. -gstabs -DF_CPU=1000000UL  -Os -funsigned-char -f
unsigned-bitfields -fpack-struct -fshort-enums -Wall -Wstrict-prototypes -Wa,-ad
hlns=../OSsrc/os_core.lst -I../AVR -I../Config -I../OSsrc -std=gnu99 -MD -MP -MF
.dep/os_core.o.d ../OSsrc/os_core.c -o ../OSsrc/os_core.o

Compiling: ../OSsrc/os_flag.c
avr-gcc -c -mmcu=atmega128 -I. -gstabs -DF_CPU=1000000UL  -Os -funsigned-char -f
unsigned-bitfields -fpack-struct -fshort-enums -Wall -Wstrict-prototypes -Wa,-ad
hlns=../OSsrc/os_flag.lst -I../AVR -I../Config -I../OSsrc -std=gnu99 -MD -MP -MF
.dep/os_flag.o.d ../OSsrc/os_flag.c -o ../OSsrc/os_flag.o

Compiling: ../OSsrc/os_mbox.c
avr-gcc -c -mmcu=atmega128 -I. -gstabs -DF_CPU=1000000UL  -Os -funsigned-char -f
unsigned-bitfields -fpack-struct -fshort-enums -Wall -Wstrict-prototypes -Wa,-ad
hlns=../OSsrc/os_mbox.lst -I../AVR -I../Config -I../OSsrc -std=gnu99 -MD -MP -MF
.dep/os_mbox.o.d ../OSsrc/os_mbox.c -o ../OSsrc/os_mbox.o

Compiling: ../OSsrc/os_mem.c
avr-gcc -c -mmcu=atmega128 -I. -gstabs -DF_CPU=1000000UL  -Os -funsigned-char -f
unsigned-bitfields -fpack-struct -fshort-enums -Wall -Wstrict-prototypes -Wa,-ad
hlns=../OSsrc/os_mem.lst -I../AVR -I../Config -I../OSsrc -std=gnu99 -MD -MP -MF
.dep/os_mem.o.d ../OSsrc/os_mem.c -o ../OSsrc/os_mem.o

Compiling: ../OSsrc/os_mutex.c
avr-gcc -c -mmcu=atmega128 -I. -gstabs -DF_CPU=1000000UL  -Os -funsigned-char -f
unsigned-bitfields -fpack-struct -fshort-enums -Wall -Wstrict-prototypes -Wa,-ad
hlns=../OSsrc/os_mutex.lst -I../AVR -I../Config -I../OSsrc -std=gnu99 -MD -MP -M
F .dep/os_mutex.o.d ../OSsrc/os_mutex.c -o ../OSsrc/os_mutex.o

Compiling: ../OSsrc/os_q.c
avr-gcc -c -mmcu=atmega128 -I. -gstabs -DF_CPU=1000000UL  -Os -funsigned-char -f
unsigned-bitfields -fpack-struct -fshort-enums -Wall -Wstrict-prototypes -Wa,-ad
hlns=../OSsrc/os_q.lst -I../AVR -I../Config -I../OSsrc -std=gnu99 -MD -MP -MF .d
ep/os_q.o.d ../OSsrc/os_q.c -o ../OSsrc/os_q.o

Compiling: ../OSsrc/os_sem.c
avr-gcc -c -mmcu=atmega128 -I. -gstabs -DF_CPU=1000000UL  -Os -funsigned-char -f
unsigned-bitfields -fpack-struct -fshort-enums -Wall -Wstrict-prototypes -Wa,-ad
hlns=../OSsrc/os_sem.lst -I../AVR -I../Config -I../OSsrc -std=gnu99 -MD -MP -MF
.dep/os_sem.o.d ../OSsrc/os_sem.c -o ../OSsrc/os_sem.o

Compiling: ../OSsrc/os_task.c
avr-gcc -c -mmcu=atmega128 -I. -gstabs -DF_CPU=1000000UL  -Os -funsigned-char -f
unsigned-bitfields -fpack-struct -fshort-enums -Wall -Wstrict-prototypes -Wa,-ad
hlns=../OSsrc/os_task.lst -I../AVR -I../Config -I../OSsrc -std=gnu99 -MD -MP -MF
.dep/os_task.o.d ../OSsrc/os_task.c -o ../OSsrc/os_task.o

Compiling: ../OSsrc/os_time.c
avr-gcc -c -mmcu=atmega128 -I. -gstabs -DF_CPU=1000000UL  -Os -funsigned-char -f
unsigned-bitfields -fpack-struct -fshort-enums -Wall -Wstrict-prototypes -Wa,-ad
hlns=../OSsrc/os_time.lst -I../AVR -I../Config -I../OSsrc -std=gnu99 -MD -MP -MF
.dep/os_time.o.d ../OSsrc/os_time.c -o ../OSsrc/os_time.o

Compiling: ../OSsrc/os_tmr.c
avr-gcc -c -mmcu=atmega128 -I. -gstabs -DF_CPU=1000000UL  -Os -funsigned-char -f
unsigned-bitfields -fpack-struct -fshort-enums -Wall -Wstrict-prototypes -Wa,-ad
hlns=../OSsrc/os_tmr.lst -I../AVR -I../Config -I../OSsrc -std=gnu99 -MD -MP -MF
.dep/os_tmr.o.d ../OSsrc/os_tmr.c -o ../OSsrc/os_tmr.o

Compiling: ../OSsrc/os_dbg_r.c
avr-gcc -c -mmcu=atmega128 -I. -gstabs -DF_CPU=1000000UL  -Os -funsigned-char -f
unsigned-bitfields -fpack-struct -fshort-enums -Wall -Wstrict-prototypes -Wa,-ad
hlns=../OSsrc/os_dbg_r.lst -I../AVR -I../Config -I../OSsrc -std=gnu99 -MD -MP -M
F .dep/os_dbg_r.o.d ../OSsrc/os_dbg_r.c -o ../OSsrc/os_dbg_r.o

Compiling: ../AVR/OS_CPU_C.c
avr-gcc -c -mmcu=atmega128 -I. -gstabs -DF_CPU=1000000UL  -Os -funsigned-char -f
unsigned-bitfields -fpack-struct -fshort-enums -Wall -Wstrict-prototypes -Wa,-ad
hlns=../AVR/OS_CPU_C.lst -I../AVR -I../Config -I../OSsrc -std=gnu99 -MD -MP -MF
.dep/OS_CPU_C.o.d ../AVR/OS_CPU_C.c -o ../AVR/OS_CPU_C.o

Compiling: ../APP/main.c
avr-gcc -c -mmcu=atmega128 -I. -gstabs -DF_CPU=1000000UL  -Os -funsigned-char -f
unsigned-bitfields -fpack-struct -fshort-enums -Wall -Wstrict-prototypes -Wa,-ad
hlns=../APP/main.lst -I../AVR -I../Config -I../OSsrc -std=gnu99 -MD -MP -MF .dep
/main.o.d ../APP/main.c -o ../APP/main.o

Assembling: ../AVR/OS_CPU_A.S
avr-gcc -c -mmcu=atmega128 -I. -x assembler-with-cpp -Wa,-adhlns=../AVR/OS_CPU_A
.lst,-gstabs  ../AVR/OS_CPU_A.S -o ../AVR/OS_CPU_A.o

Linking: uCOS-II.elf
avr-gcc -mmcu=atmega128 -I. -gstabs -DF_CPU=1000000UL  -Os -funsigned-char -funs
igned-bitfields -fpack-struct -fshort-enums -Wall -Wstrict-prototypes -Wa,-adhln
s=../OSsrc/os_core.o -I../AVR -I../Config -I../OSsrc -std=gnu99 -MD -MP -MF .dep
/uCOS-II.elf.d ../OSsrc/os_core.o ../OSsrc/os_flag.o ../OSsrc/os_mbox.o ../OSsrc
/os_mem.o ../OSsrc/os_mutex.o ../OSsrc/os_q.o ../OSsrc/os_sem.o ../OSsrc/os_task
.o ../OSsrc/os_time.o ../OSsrc/os_tmr.o ../OSsrc/os_dbg_r.o ../AVR/OS_CPU_C.o ..
/APP/main.o ../AVR/OS_CPU_A.o --output uCOS-II.elf -Wl,-Map=uCOS-II.map,--cref
  -lm

Creating load file for Flash: uCOS-II.hex
avr-objcopy -O ihex -R .eeprom uCOS-II.elf uCOS-II.hex

Creating load file for EEPROM: uCOS-II.eep
avr-objcopy -j .eeprom --set-section-flags=.eeprom="alloc,load" \
        --change-section-lma .eeprom=0 -O ihex uCOS-II.elf uCOS-II.eep
c:\WinAVR-20071221\bin\avr-objcopy.exe: --change-section-lma .eeprom=0x00000000
never used

Creating Extended Listing: uCOS-II.lss
avr-objdump -h -S uCOS-II.elf > uCOS-II.lss

Creating Symbol Table: uCOS-II.sym
avr-nm -n uCOS-II.elf > uCOS-II.sym

Size after:
uCOS-II.elf  :
section     size      addr
.data        266   8388864
.text      11190         0
.bss        1629   8389130
.stab      28644         0
.stabstr    8031         0
Total      49760



-------- end --------

出0入0汤圆

发表于 2008-3-26 12:34:43 | 显示全部楼层
mark

出0入0汤圆

发表于 2008-3-26 14:18:12 | 显示全部楼层
我也标记一下

出0入0汤圆

发表于 2008-4-9 09:27:41 | 显示全部楼层
顶。

出0入0汤圆

发表于 2008-4-9 09:30:00 | 显示全部楼层
简直酷B了

出0入0汤圆

发表于 2008-4-23 10:33:53 | 显示全部楼层
酷,我试了好几个都不行,编译路径不会配,谢了!

出0入0汤圆

发表于 2008-5-10 23:46:18 | 显示全部楼层
顶!
我是刚开始学gcc
为什么不直接用gcc的集成开发环境
而要用dos命令呢
小弟不解其有什么好处??

出0入0汤圆

发表于 2008-5-25 23:35:05 | 显示全部楼层
楼主你好
我把你的UCOS用在了mage64上了可以运行
但是有个奇怪的问题
运行TCCR3B=0;后 TCCR3B的值却变成了1
其他很多寄存器如TCCR0B 等等都是一样的情况
至于堆栈分配是足够的
请问这是什么原因呀
谢谢

出0入0汤圆

发表于 2008-5-25 23:40:00 | 显示全部楼层
还有一个问题就是
在足够堆栈的情况下
在一个任务中使用三个以上的char变量;
则只有一个或两个变量可以被赋值为0
而把其他的变量赋值为0,结果却变成了1;
不知道大家有没有出现和我一样的问题!
超级郁闷中!

出0入0汤圆

发表于 2008-5-28 15:32:40 | 显示全部楼层

出0入0汤圆

发表于 2008-7-1 17:29:53 | 显示全部楼层
马个客

出0入0汤圆

发表于 2008-7-2 10:27:26 | 显示全部楼层
不知道用在m32上,用iccavr编译需要做哪些改动。

出0入0汤圆

发表于 2008-7-11 12:53:34 | 显示全部楼层
我也凑下热闹

出0入0汤圆

发表于 2008-7-16 17:32:05 | 显示全部楼层
顶起来!

出0入0汤圆

发表于 2008-12-17 15:00:27 | 显示全部楼层
非常感谢LZ的无私奉献

OSIntCtxSw:

#if&nbsp;OS_CPU_HOOKS_EN>&nbsp;0

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CALL&nbsp;&nbsp;&nbsp;OSTaskSwHook&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;&nbsp;Call&nbsp;user&nbsp;defined&nbsp;task&nbsp;switch&nbsp;hook

#endif

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;LDS&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;R16,OSPrioHighRdy&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;&nbsp;OSPrioCur&nbsp;=&nbsp;OSPrioHighRdy

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;STS&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;OSPrioCur,R16&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;



&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;LDS&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;R30,OSTCBHighRdy&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;&nbsp;Z&nbsp;=&nbsp;OSTCBHighRdy->OSTCBStkPtr

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;LDS&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;R31,OSTCBHighRdy+1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;STS&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;OSTCBCur,R30&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;&nbsp;OSTCBCur&nbsp;=&nbsp;OSTCBHighRdy

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;STS&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;OSTCBCur+1,R31&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;



&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;LD&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;R28,Z+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;&nbsp;Restore&nbsp;Y&nbsp;pointer

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;OUT&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;_SFR_IO_ADDR(SPL),R28

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;LD&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;R29,Z+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;OUT&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;_SFR_IO_ADDR(SPH),R29



&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;POPRS&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;&nbsp;Restore&nbsp;all&nbsp;registers&nbsp;and&nbsp;status&nbsp;register

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;RET

但是感觉在中断级的任务切换这一点上有些没有理解清楚&nbsp;好像并没有做堆栈结构的调整这一步工作。

我的感觉是被中断调度挂起的任务的栈顶指针丢失了。

只是凭感觉而言,如果犯了低级错误请大家不要见笑。&nbsp;&nbsp;希望LZ和各位大侠能给解答一下:)

出0入0汤圆

发表于 2008-12-17 16:06:25 | 显示全部楼层
好,记录一下。

出0入0汤圆

发表于 2008-12-22 17:25:03 | 显示全部楼层
mark

出0入0汤圆

发表于 2008-12-23 09:37:18 | 显示全部楼层
请usbfish&nbsp;按网友的更正重新发一个新的,

谢谢

出0入0汤圆

发表于 2008-12-23 09:40:27 | 显示全部楼层
chiooo:

是usbfish的程序有问题,我按"cnlostain"&nbsp;、widesoft&nbsp;通关的更正后,proteus&nbsp;仿真通过

出0入0汤圆

发表于 2008-12-23 15:12:00 | 显示全部楼层

出0入0汤圆

发表于 2008-12-25 09:22:01 | 显示全部楼层
lihongguang&nbsp;:我试用了一下,第一个任务执行,第二个任务不能正常运行,why?具体如何修正

出0入0汤圆

发表于 2008-12-26 08:45:29 | 显示全部楼层
"是usbfish的程序有问题,我按"cnlostain"&nbsp;、widesoft&nbsp;通关的更正后,proteus&nbsp;仿真通过&nbsp;"



具体怎么样?能否给个说明?

出0入0汤圆

发表于 2008-12-27 15:07:47 | 显示全部楼层
“自小酷爱GCCAVR”——楼主太牛逼了,不知GCCAVR出来多久了?楼主中学毕业没有?哈哈

出0入0汤圆

发表于 2009-2-24 22:19:57 | 显示全部楼层
学习中,感激楼主

出0入0汤圆

发表于 2009-5-14 23:20:18 | 显示全部楼层
cnlostain: OSIntCtxSw函数没问题,根本不需要在这个函数里调整堆栈。如果你是按照ucOS-II第二版书上的移植方法去考虑,那就不对了。那本书有几处已经明显过时,不符合当前源码的现状了。
其实,如果你看过官方移植代码的话,会发现早在2.7x版中就已经不再调整堆栈了。调整堆栈是一种过时的做法,会牵扯到CPU和编译器两方面的移植,还和相关函数的局部变量等影响堆栈的因素有关,非常麻烦。如果换一个思路:在堆栈被“污染”之前就把SP保存到TCB,那不就省事了吗?最新的代码就是这么做的!
所以,不要完全相信那本书上讲的,其中有些内容已经过时了。举几个例子:
书上提到,ucOS-II目前不支持事件标志,实际上已经支持了
系统支持的最大任务数不是64,而是256
...

关于LZ贴出来的这份代码,我下来试着编译了一把,虽然可以运行,但是感觉有点不对头,源码部分是否被改过?
os_core.c中的几个钩子函数的调用怎么都没有条件编译呢?这样一来,os_cfg.h中的相关配置还有什么用?
怀疑中...

出0入0汤圆

发表于 2009-6-10 23:58:48 | 显示全部楼层
mark

出0入0汤圆

发表于 2009-6-11 08:40:31 | 显示全部楼层
还真不错呀

出0入0汤圆

发表于 2009-6-14 17:01:20 | 显示全部楼层
mark

出0入0汤圆

发表于 2009-6-19 16:32:19 | 显示全部楼层
不错呀!

出0入0汤圆

发表于 2009-7-30 09:14:03 | 显示全部楼层
标记

出0入0汤圆

发表于 2009-8-17 15:20:19 | 显示全部楼层
哇塞,牛人牛贴,顶

出0入0汤圆

发表于 2009-8-17 16:07:47 | 显示全部楼层
这篇文章太棒了,mark一下

出0入0汤圆

发表于 2009-8-31 00:49:32 | 显示全部楼层
mark

出0入0汤圆

发表于 2009-9-1 10:40:19 | 显示全部楼层
下载下来看了下,楼主进入退出临界区使用了方法一,我在M64上跑运行成功.但我把临界区改成方法三就运行不成功,不知道哪里出了问题。方法一不允许临界区嵌套,但程序要是复杂了很难避免不会出现临界区嵌套。还有我用它驱动12664显示出现问题,我让12864第一行显示,结果第一第二次是在第一行显示,但以后却跑到第8行显示去了。不知道是不是参数传递用到的寄存器遭到了破坏(应该不是堆栈溢出,因为我把堆栈改大了好多次都没有用)。代码还在分析ing.

出0入0汤圆

发表于 2009-9-15 14:05:54 | 显示全部楼层
xiexie

出0入0汤圆

发表于 2009-9-24 20:53:51 | 显示全部楼层
顶!!!

出0入0汤圆

发表于 2009-9-29 08:20:43 | 显示全部楼层
万分感激啊

出0入0汤圆

发表于 2009-9-29 13:12:37 | 显示全部楼层
mark

出0入0汤圆

发表于 2009-10-19 21:01:11 | 显示全部楼层
一个最新的uCOS-II的GCCAVR移植版本!!好东西啊!mark!!!

出0入0汤圆

发表于 2009-10-24 10:58:35 | 显示全部楼层
mark

出0入0汤圆

发表于 2009-10-25 03:56:39 | 显示全部楼层
问下4楼,tiger2023 岁月催人老

我在编译时也出现了你的问题,把机子上的IAR for ARM,IAR for AVR,iccavr,keilc51,编译器全删了,只有VC6.0和winavr

还是编译不过去,

超级郁闷,请教下四楼,是把那个编译器删掉,就可以编译通过了???

出0入0汤圆

发表于 2009-10-25 09:31:00 | 显示全部楼层
mark

出0入0汤圆

发表于 2009-10-27 21:49:02 | 显示全部楼层
楼主,下了你的文件,感谢,任务中不能调用OSTaskDel();函数,查了下,发现OS_CFG.H文件里的  #define OS_TASK_DEL_EN     0

定义为 0 ,改为 1 ,保存,重新编译文件,编译器还是提示41: undefined reference to `OSTaskDel'

将整个工程保存,在重新打开,仍然提示41: undefined reference to `OSTaskDel',不明白问题在那里,

望楼主或者路过的大虾看到,指点下,

出0入0汤圆

发表于 2009-10-27 22:48:11 | 显示全部楼层
问题已经解决,是AVRStudio编译器编译一次源文件后,即使你修改源文件相关头文件,也不会在下次编译

时重新编译该文件了,

解决办法就是如果修改了源文件调用的头文件,将上次编译产生的所有文件删除,

在重新编译就可以了,

出0入0汤圆

发表于 2009-11-12 20:22:35 | 显示全部楼层
一定要留记号啊

出0入0汤圆

发表于 2009-11-15 17:45:56 | 显示全部楼层
mark

出0入0汤圆

发表于 2009-11-15 18:13:56 | 显示全部楼层
收藏,谢谢~

出0入0汤圆

发表于 2009-11-23 10:04:16 | 显示全部楼层
收藏学习

出0入0汤圆

发表于 2009-11-24 20:43:18 | 显示全部楼层
mark

出0入0汤圆

发表于 2009-12-29 19:47:38 | 显示全部楼层
回复【楼主位】usbfish
-----------------------------------------------------------------------

热泪盈眶啊!!!!

出0入0汤圆

发表于 2009-12-29 19:47:57 | 显示全部楼层
回复【楼主位】usbfish
-----------------------------------------------------------------------

热泪盈眶啊!!!!

出0入0汤圆

发表于 2010-1-5 17:07:32 | 显示全部楼层
MARK!

出0入0汤圆

发表于 2010-1-11 20:54:36 | 显示全部楼层
系统从ucos开始

出0入0汤圆

发表于 2010-3-17 13:21:54 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-3-17 13:42:54 | 显示全部楼层
不能不顶哦

出0入0汤圆

发表于 2010-4-3 16:36:35 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-4-3 19:00:38 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-4-12 15:58:44 | 显示全部楼层
谢谢分享

出0入0汤圆

发表于 2010-5-16 17:19:57 | 显示全部楼层
收藏
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-3-29 01:53

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

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