OpenTCPIP设计中如何在线修改IP地址重启后新地址生效
- UID
- 172616
- 性别
- 男
|
OpenTCPIP设计中如何在线修改IP地址重启后新地址生效
StrongChen:
已与你电话过此问题,因项目时间紧迫,希望能找到直接的设计代码。
问题如下:
本人使用了MC9S12NE64的OpenTCPIP协议栈,经简单修改已经可以使用,但需要增加允许用户动态修改设备的地址功能,以便现场维护。这种功能在我见过的网络设备中已经可以做到:用户修改地址并存储在非易失记忆体内保存后重新启动即可用新的地址访问设备。
anybody including StrongChen can help me?
thanks |
|
|
|
|
|
- UID
- 104380
- 性别
- 男
|
我用CodeWarrior的PE生成了一个参考project,你可以参看它的代码:
http://bbs.chinaecnet.com/uploadImages/NE64_EEPROM_PE.rar |
|
|
|
|
|
- UID
- 172616
- 性别
- 男
|
|
|
|
|
|
- UID
- 172616
- 性别
- 男
|
强陈,我的神啊,你给我的PE生成的工程需要全功能的license支持,我这里没有这么强大的license!
有无可能通过修改你给的ifsh.c设计文件到我现在的OpenTCPIP中来实现我需要的ROM擦写功能?OpenTCPIP的工程是不需要PE来做的。急等!!! |
|
|
|
|
|
- UID
- 104380
- 性别
- 男
|
你现在能打开我给你的project中的文件吗?如果可以,你把代码直接拷到你的文件中去就可以了。 |
|
|
|
|
|
- UID
- 172616
- 性别
- 男
|
请教陈:
我已按照你的介绍把IFsha1的例程写入我的程序,现在发现问题:
我将IP地址等待修改数据的sector擦除过程发现特别慢,约需3~4分钟才可见通过BDM连接的Hiwave中的memory信息刷新为全FF ,而后发现MCU死机 !
请问问题出在那里?是否中断退出处理未设置正确?通常需要设置哪些数据?
|
|
|
|
|
|
- UID
- 172616
- 性别
- 男
|
系统设置:XTAL频率25MHz ,prm中设置ROM_VAR映射到0xC000 TO 0xF7FF的一个段内。我用的3.1的CW。
现象:
单步发现代码执行正常,无发现错误中途退出的情况,但修改flash内容的语句执行时memory观察窗口看不到对应地址内容被改写。 烧录进入MC9S12NE64后加电执行,利用某种条件触发这段语句执行后单片机死机。
请看如下代码:
__DI();
//Disable sector protection
FPROT = 0b10010011;
//Set clock divider(plus setting check)
if(!FCLKDIV_FDIVLD) {
FCLKDIV = 0x4F; /* Set up Clock Divider Register */
}
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//clear the running environment
FSTAT_PVIOL = 1; //set 1 to clear the flag,writing 0 has no effect on PVIOL. while PVIOL is set, it's not possilbe for the flash unit control SM to run on.
FSTAT_ACCERR = 1; // the same reason as above
//flush the flash sector first
//Write dummy data to flash unit buffer
ptr = hard_addr ;
*ptr = 0x11;//send dummy data to flash write buffer
//deliver the command to FCMD
FCMD = 0x40;
//lauch the instruction execution
FSTAT_CBEIF = 1;
//FSTAT checking
if(FSTAT_PVIOL ) break;
if(FSTAT_ACCERR ) break;
//wait until execution complete
while(FSTAT_CCIF ==0 ) ; //idle loop waiting earasure op. completed
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//write data to corresponding memory
//clear the running environment
for(loop_counter=0;loop_counter<11;loop_counter++) {
FSTAT_PVIOL = 1; //set 1 to clear the flag,writing 0 has no effect on PVIOL. while PVIOL is set, it's not possilbe for the flash unit control SM to run on.
FSTAT_ACCERR = 1; // the same reason as above
//Write dummy data to flash unit buffer
*(WORD* )ptr = (WORD) data_buffer[loop_counter*2+1];//send dummy data to flash write buffer
ptr++;
//deliver the command to FCMD
FCMD = 0x20;
//lauch the instruction execution
FSTAT_CBEIF = 1;
//FSTAT checking
if(FSTAT_PVIOL ) break;
if(FSTAT_ACCERR ) break;
//wait until execution complete
while(FSTAT_CCIF ==0 ) ; //idle loop waiting earasure op. completed
}
__EI();
请问StrongChen能看出有何错误吗? 急◎◎◎!!!!! |
|
|
|
|
|
- UID
- 172616
- 性别
- 男
|
补充一下:以上代码的功能是要实现先先擦除网络地址等固化参数所在的sector,然后利用一个for循环语句将需要写入的新的IP地址数据串(保存在data_buffer内,22字节内容)传送过去。
请看下有何错误,谢谢!(Aug 17 2007 10:23AM 发的那个贴不要再看了,现在的现象已经不是那个) |
|
|
|
|
|
- UID
- 172616
- 性别
- 男
|
请问chen:
你给的参考工程中IFsh1.h和IFsh1.c文件内对flash操作的函数有CODE_SEG\DATA_SEG定位到CODE_IFsh1和DATA_IFsh1的修饰,但prm文件中看不到CODE_IFsh1和DATA_IFsh1落到那里,请问这个问题对我如何处理CODE_IFsh1和DATA_IFsh1段?
对MC9S12NE64,flash擦写程序有无必要拷贝至RAM区进行工作?如果要,这个RAM地址怎么设置定位开始地址?
忽略CODE_IFsh1和DATA_IFsh1段地址的修饰,我在调试中发现擦写程序的指针指到了0x9de83c 等位置,对16位MCU,这个地址怎么理解?
不好意思,赶进度加班调试,陆续发帖,劳您和以上几帖问题一起回复。 |
|
|
|
|
|
- UID
- 172616
- 性别
- 男
|
|
|
|
|
|
- UID
- 172616
- 性别
- 男
|
很遗憾,虽然单步调试擦、写完全正确,但连贯执行发现程序执行到擦写命令发射语句(Freescale居然有单步和连贯执行现象不同的情况,不得不服!)
FCMD = 0x40;
时片子死机,在Hiwave中表现为出现提示:Trigger A occured 。
不知道这个“Trigger A occured ”究竟为何意?如何逃脱这个trigger问题让程序顺利跑下去呢????急!!!
StrongChen,where r you? |
|
|
|
|
|