보드를 재설정하지 않고 Microchip의 TCP/IP 스택을 재설정 할 수 있습니까?

StackOverflow https://stackoverflow.com/questions/611935

  •  03-07-2019
  •  | 
  •  

문제

8 비트 마이크로 컨트롤러에서 Microchip의 무료 TCP/IP (버전 4.55) 스택으로 작업하고 있습니다.

ASM ( "Reset")으로 전체 보드 재설정을하지 않고 스택을 재설정하려고합니다.

이 스택을 다시 시작하는 방법에 대한 아이디어.

업데이트

스택을 다음 단계로 재설정합니다

  1. 마이크로 칩 이더넷 칩에서 재설정 핀을 전환합니다.
  2. Call StackInit ();
  3. UDP 발표 상태 머신을 수동으로 재설정합니다

이것은 내가 겪은 치명적인 SPI 오류에서 회복되는 것 같습니다.

도움이 되었습니까?

해결책

call stackinit (). 이 기능은 모든 하위 모듈 (TCP, UDP, SMTP 등)을 다시 이색합니다. 또한 열려있는 모든 TCP 및 UDP 소켓을 클로 브러지므로 사용하려는 소켓을 다시 열어야합니다.

부수적으로 : 나는 Microchip 포럼에서 스레드를 따랐다. 나는 또한 내 TCP 스택에서 이상한 리셋을 얻었습니다. 결국 스택 오버플로가되었습니다. 스택 상단에 일부 변수를 넣으십시오.

#pragma udata stackoverflow = 0xE00
UInt32 StackUpperBound[8];
#pragma udata

Main ()의 시작시 이러한 변수를 초기화하고 시작 부분에 중단 점을 넣습니다. 이러한 변수가 덮어 쓰고 있는지 확인하십시오.

다른 팁

나는 Microchip 스택에 완전히 익숙하지 않지만 스택을 다시 시작하도록 설계되지 않으면 성공할 것이라고 의심합니다.

모든 버퍼와 구조가 정적으로 할당 된 경우 이론적으로 초기화 루틴을 호출하여 스택을 "재시작"할 수 있습니다 (구조의 재 입력을한다고 가정).

동적 버퍼 (malloc)를 사용한다면 운이 좋지 않을 것이라고 생각합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top