打印
[ZLG-ARM]

使用ZLG的tcpip开发包:更改ip重启问题

[复制链接]
1456|3
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
gangji|  楼主 | 2007-1-11 12:59 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我用ZLG的tcpip软件包开发
要求能动态修改ip地址,而不能进行硬件复位,该怎么做?
我给出如下方案:
先建立4个任务,如下所示:
                OSTaskCreateExt(TaskB,             
                        (void *)0,
                        &task1_stack[999],
                        TASK_1_PRIO,
                        TASK_1_ID,
                        &task1_stack[0],
                        1000,
                        (void *)0,//&TaskUserData[TASK_4_ID]
                        0);
        OSTaskCreateExt(TaskC,
                        (void *)0,
                        &task2_stack[1999],
                        TASK_2_PRIO,
                        TASK_2_ID,
                        &task2_stack[0],
                        2000,
                        (void *)0,//&TaskUserData[TASK_4_ID]
                        0);
        OSTaskCreateExt(TaskD,
                        (void *)0,
                        &task3_stack[999],
                        TASK_3_PRIO,
                        TASK_3_ID,
                        &task3_stack[0],
                        1000,
                        (void *)0,//&TaskUserData[TASK_4_ID]
                        0);
        OSTaskCreateExt(TaskE,
                        (void *)0,
                        &task4_stack[1999],
                        TASK_4_PRIO,
                        TASK_4_ID,
                        &task4_stack[0],
                        2000,
                        (void *)0,//&TaskUserData[TASK_4_ID]
                        0);
这个大家应该都知道。
若收到修改ip地址的命令,我做如下处理
先删除这4个任务
                               OSTaskDel(TASK_1_PRIO);
                   OSTaskDel(TASK_2_PRIO);
                   OSTaskDel(TASK_3_PRIO);
                   OSTaskDel(TASK_4_PRIO);
然后在用以下命令恢复这4个任务
                             OSTaskCreateExt(TaskB,             
                        (void *)0,
                        &task1_stack[999],
                        TASK_1_PRIO,
                        TASK_1_ID,
                        &task1_stack[0],
                        1000,
                        (void *)0,//&TaskUserData[TASK_4_ID]
                        0);
        OSTaskCreateExt(TaskC,
                        (void *)0,
                        &task2_stack[1999],
                        TASK_2_PRIO,
                        TASK_2_ID,
                        &task2_stack[0],
                        2000,
                        (void *)0,//&TaskUserData[TASK_4_ID]
                        0);
        OSTaskCreateExt(TaskD,
                        (void *)0,
                        &task3_stack[999],
                        TASK_3_PRIO,
                        TASK_3_ID,
                        &task3_stack[0],
                        1000,
                        (void *)0,//&TaskUserData[TASK_4_ID]
                        0);
        OSTaskCreateExt(TaskE,
                        (void *)0,
                        &task4_stack[1999],
                        TASK_4_PRIO,
                        TASK_4_ID,
                        &task4_stack[0],
                        2000,
                        (void *)0,//&TaskUserData[TASK_4_ID]
                        0);
那么新的ip地址生效,也不用复位程序。
但是问题是,这个过程只能重复2次,当第3次删除任务并恢复任务后,程序就
1、自动重启了(若看门狗已打开)
2、停止运行(若看门狗没打开)
这是什么原因呢?是ucosii不允许频繁删除同一个任务吗?还是ZLG软件包出了问题?大家是如何解决类似问题的呢???

相关帖子

沙发
eleven11| | 2007-1-11 13:01 | 只看该作者

写的可真复杂

直接修改netif->addr不就是了

使用特权

评论回复
板凳
gangji|  楼主 | 2007-1-11 15:59 | 只看该作者

请教eleven11

能说详细一点吗?netif->addr在哪里?

使用特权

评论回复
地板
gangji|  楼主 | 2007-1-24 20:23 | 只看该作者

自己顶一个

怀大÷÷

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

9

主题

20

帖子

0

粉丝