W7100A로 개발한 제품을 시험하는 중입니다.
사용한지는 몇 년 되었습니다.
그동안은 watchdog 기능을 사용해도 실제로 watchdog이 발생하는 경우는 없었는데요…
이번에 네트웍 통신 중에 스마트폰 APP 버그로 인하여 네트웍 프로토콜 상에 가 계속 발생하는 상황이었습니다.
이렇게 2분 정도 지나자 프로그램이 네트웍 관련한 어느 부분에서 빠져나오지 못하는 현상이 발생하여 watchdog 리셋이 발생하였습니다.
그런데, 정상적으로 부팅되면 괜찮은데… 모든 출력 포트를 HIGH 상태로 한 후 뻗어 버렸습니다.
출력 포트에 릴레이 구동회로가 연결되어 있어서 연결된 모든 릴레이가 동작하였습니다.
이 상태에서 리셋 버튼을 누르자 정상 부팅되고 정상 동작하네요.
코드는 직접 작성하였습니다.
정확히 기억은 나지 않습니다만, 2-3년 전에 프로젝트 샘플 소스 코드를 받아서
기능을 수정/추가하여 사용하고 있습니다.
추가 정보를 드리면, watchdog 리셋이 발생할 때마다 위 증상이 나타나는 것은 아닙니다.
횟수를 정확히 세어보지는 않았는데요, 대략 20회 정도 watchdog 리셋이 발생한다면
그 중에서 오동작하는 사례가 발생하는 것입니다.
구현된 기능 중에 TCP 접속을 통한 펌웨어 업그레이드 기능이 있습니다.
따라서 code_write_byte(), code_sector_erase()… 등의 함수들을 사용하고 있습니다.
watchdog 리셋에 의해 오동작하는 경우 간혹 리셋 버튼을 눌러도 부팅되지 않는 경우가 있습니다.
이 때, WizISP 프로그램을 이용하여 Code Memory를 읽어보면, 임의의 섹터가 지워져 있는 것을 확인하였습니다.