보드를 재설정하지 않고 Microchip의 TCP/IP 스택을 재설정 할 수 있습니까?
문제
8 비트 마이크로 컨트롤러에서 Microchip의 무료 TCP/IP (버전 4.55) 스택으로 작업하고 있습니다.
ASM ( "Reset")으로 전체 보드 재설정을하지 않고 스택을 재설정하려고합니다.
이 스택을 다시 시작하는 방법에 대한 아이디어.
업데이트
스택을 다음 단계로 재설정합니다
- 마이크로 칩 이더넷 칩에서 재설정 핀을 전환합니다.
- Call StackInit ();
- UDP 발표 상태 머신을 수동으로 재설정합니다
이것은 내가 겪은 치명적인 SPI 오류에서 회복되는 것 같습니다.
해결책
call stackinit (). 이 기능은 모든 하위 모듈 (TCP, UDP, SMTP 등)을 다시 이색합니다. 또한 열려있는 모든 TCP 및 UDP 소켓을 클로 브러지므로 사용하려는 소켓을 다시 열어야합니다.
부수적으로 : 나는 Microchip 포럼에서 스레드를 따랐다. 나는 또한 내 TCP 스택에서 이상한 리셋을 얻었습니다. 결국 스택 오버플로가되었습니다. 스택 상단에 일부 변수를 넣으십시오.
#pragma udata stackoverflow = 0xE00
UInt32 StackUpperBound[8];
#pragma udata
Main ()의 시작시 이러한 변수를 초기화하고 시작 부분에 중단 점을 넣습니다. 이러한 변수가 덮어 쓰고 있는지 확인하십시오.
다른 팁
나는 Microchip 스택에 완전히 익숙하지 않지만 스택을 다시 시작하도록 설계되지 않으면 성공할 것이라고 의심합니다.
모든 버퍼와 구조가 정적으로 할당 된 경우 이론적으로 초기화 루틴을 호출하여 스택을 "재시작"할 수 있습니다 (구조의 재 입력을한다고 가정).
동적 버퍼 (malloc)를 사용한다면 운이 좋지 않을 것이라고 생각합니다.
제휴하지 않습니다 StackOverflow