|
目标CPU: m128
问题概述:
(1)若在main函数中建立所有的任务,如下:
int main(void)
{
TargetInit();
OSInit();
OSTaskCreateExt(TaskStart,
(void *)0,
&TaskStartStk[OS_TASK_START_STK_SIZE - 1],
TaskStartPrio,
TaskStartPrio,
&TaskStartStk[0],
OS_TASK_START_STK_SIZE,
(void *)0,
OS_TASK_OPT_STK_CHK+OS_TASK_OPT_STK_CLR );
OSTaskCreateExt(TaskTest0,
(void *)0,
&TaskTestStk0[OS_TASK_STK_SIZE - 1],
TaskTest0Prio,
TaskTest0Prio,
&TaskTestStk0[0],
OS_TASK_STK_SIZE,
(void *)0,
OS_TASK_OPT_STK_CHK+OS_TASK_OPT_STK_CLR );
OSStart();
return 0;
}
一切正常,下载到目标板也能正常工作。
(2) 若采用如下方式,将TaskTest0任务的建立放到TaskStart任务中
void TaskStart(void *pdata)
{
pdata = pdata;
init_timer0();/*初始化时钟节拍中断*/
OSTaskCreateExt(TaskTest0,
(void *)0,
&TaskTestStk0[OS_TASK_STK_SIZE - 1],
TaskTest0Prio,
TaskTest0Prio,
&TaskTestStk0[0],
OS_TASK_STK_SIZE,
(void *)0,
OS_TASK_OPT_STK_CHK+OS_TASK_OPT_STK_CLR );
while(1)
{
GREEN_LED_CHG
OSTimeDlyHMSM(0,0,2,0);
}
}
编译链接没有问题,但是下载到m128中不能正常工作,下面对该程序进行了分析,发现在建立TaskTest时Ram乱了,具体分析见下文:
(1)Mega64(同128)的SRAM结构为: 内部的32个寄存器和224个IO寄存器,内部RAM地址从0x100开始,一直到0x10FF;
(2)工程编译通过,占用的flash 、ram空间如下:
(3) 该工程共3个任务,TaskStart堆栈为300,TaskTest为100,IdleTask为64;
编译后改任务占ram空间为1890个字节,从0x100--0x861;
OSMapTbl 0x08 0x100-0x107
OSUnMapTbl 0x100 0x108-0x207
TaskStartStk 0x12c 0x208-0x333
TaskTestStk0 0x64 0x334-0x397
OSLockNesting 0x1 0x398
OSRunning 0x1 0x399
OSIdleCtr 0x4 0x39A-0x39D
OSPrioHighRdy 0x1 0x39E
OSPrioCur 0x1 0x39F
OSTCBList 0x2 0x3A0-0x3A1
OSCtxSwCtr 0x4 0x3A2-0x3A5
OSTCBFreeList 0x2 0x3A6-0x3A7
OSTaskCtr 0x1 0x3A8
OSTCBHighRdy 0x2 0x3A9-0x3AA
OSRdyGrp 0x1 0x3AB
OSRdyTbl 0x8 0x3AC-0x3B3
OSEventFreeList 0x2 0x3B4-0x3B5
OSIntNesting 0x1 0x3B6
OSTCBCur 0x2 0x3B7-0x3B8
OSTime 0x4 0x3B9-0x3BC
OSTaskIdleStk 0x40 0x3BD-0x3FC
OSEventTbl 0xdc 0x3FD-0x4D8
OSTCBTbl 0x309 0x4D9-0x7E1
OSTCBPrioTbl 0x80 0x7E2-0x8b1
(4) 错误出现在TaskTest任务的建立函数中,在执行void OS_TaskStkClr (OS_STK *pbos, INT32U size, INT16U opt) 时,size大小在执行size--操作时,莫名其妙的改变了! pbos地址为0x2F4,size地址为0x2F6.
工程文件:(avrstudio4.12+winavr20070525)
点击此处下载ourdev_201616.rar(文件大小:234K)
上边说明文档的doc格式:
点击此处打开ourdev_201617.doc(文件大小:116K) |
阿莫论坛20周年了!感谢大家的支持与爱护!!
一只鸟敢站在脆弱的枝条上歇脚,它依仗的不是枝条不会断,而是自己有翅膀,会飞。
|