인터넷에 대한 원격 연결을 지원하는 사물 인터넷 장치로서 로컬 또는 원격 OTA 업그레이드도 스크립트 프로그래밍 컨트롤러의 중요한 기능입니다. 릴레이에 버그가 전혀 없다는 보장은 없기 때문입니다. 버그 사용, OTA 업그레이드 인터페이스가 없는 경우 고객이 직렬 포트를 통해 펌웨어를 업그레이드하는 것을 허용하기 어렵고 컨트롤러는 공장으로 다시 업그레이드할 수만 있으며 비용이 높고 영향이 큽니다.
또한 고객은 중국어 프로그래밍을 통해 구현할 수 없는 일부 맞춤형 기능을 가질 수 있으며 이를 구현하려면 컨트롤러 펌웨어를 업그레이드해야 합니다.
이 두 가지 상황은 로컬 또는 원격 OTA 기능을 통해 해결해야 합니다.
요즘 이 기능을 완료하는 데 약간의 시간이 소요되었으며, 이제 다음과 같이 요약됩니다.
(1) ESP8266의 FLASH는 user1.bin이라는 이름의 두 펌웨어를 user2.bin에 저장할 수 있으며, 두 펌웨어의 주소는 주소 0x0000에 저장된 부팅 프로그램 boot.bin에 의해 결정되며 저장 주소는 서로 다릅니다. 플래시 용량이 다릅니다.
예를 들어, 플래시 용량이 1Mbyte인 ESP8266-01S의 경우 저장 주소는 각각 0x01000과 0x81000이고, 플래시 용량이 4Mbyte인 ESP8266-07S의 경우 저장 주소는 각각 0x01000과 0x101000입니다.
(2) system_upgrade_userbin_check 반환 값을 통해 현재 프로그램이 실행 중인 user1.bin 또는 user2.bin, 펌웨어 업그레이드를 가져오고 다른 펌웨어 저장 영역에 완전한 펌웨어를 기록하는 경우(예: 현재 실행이 저장되는 경우) user1.bin의 0x1000에서 0x81000(ESP8266-01S) 또는 0x101000(EPS8266-07S) 주소로 펌웨어 user2.bin을 작성하고, 작성한 후 system_upgrade_flag_set(0x02) 함수를 통해 SDK 쓰기를 알립니다. 완료되면 SDK는 시스템 매개변수를 설정하므로 ESP8266 시작 시 다른 펌웨어로 부팅됩니다.
3) 공식적인 권장 관행은 http 프로토콜을 통해 클라우드 서버의 펌웨어를 메모리에 다운로드하는 것입니다. 주로 두 가지 고려 사항 때문에 이 프로그램을 사용하지 않았습니다. 첫째, 이 프로그램이 엄격하게 검증되었는지 여부 브릭으로 업그레이드하는 것을 피하기 위해 데이터 검증에 대한 충분한 고려가 있는지 의심스럽습니다. 둘째, 이 프로그램을 사용하려면 컨트롤러가 서버에서 펌웨어를 다운로드하기 위해 외부 네트워크에 연결할 수 있어야 하는데 이는 쉽지 않습니다.
저는 현재 델파이를 사용하여 펌웨어 업그레이드 소프트웨어 세트를 개발하고 있습니다. 이 소프트웨어는 컨트롤러에 직접 연결하거나 클라우드 서버의 TCP 게이트웨이에 연결한 다음 컨트롤러로 전송하는 TCP 클라이언트로서의 소프트웨어입니다. 펌웨어를 컨트롤러에 푸시하기 위한 데이터 프레임용 512바이트.
다음으로 이 로직 세트를 서버로 포팅할 수 있으며, 고객은 브라우저를 통해 웹페이지를 열어 펌웨어를 컨트롤러에 푸시할 수 있습니다.
4) 데이터의 무결성이 완전히 검증되었으며, 데이터의 첫 번째 프레임에서 crc32 체크섬을 수행하고, 펌웨어를 플래시에 기록한 다음 읽어 들여 기록된 값과 비교하는 동시에 값을 계산합니다. crc32와 상위 컴퓨터에서 보내는 데이터 읽기 및 쓰기와 비교하여 crc32의 값이 같고 crc의 값도 같으면 데이터의 프레임이 성공적으로 기록된 것으로 간주됩니다.
동시에 각 데이터 프레임의 crc32 값과 crc32 값을 추가로 수행하여 총 crc32 값을 얻습니다. 호스트 컴퓨터에서 보낸 총 crc32 값과 비교하면 system_upgrade_flag_set( 함수를 호출하기 전의 값은 동일합니다. 0x02) SDK가 부팅 펌웨어로 전환할 수 있도록 합니다.
(5) 펌웨어 user1.bin, user2.bin의 서로 다른 두 펌웨어 영역에 쓰기는 동일하지 않습니다. RTOS SDK 개발의 경우 Makefile 변수 APP의 값을 수정하여 user1.bin, user2를 생성해야 합니다. .bin은 컨트롤러에 따라 각각 호스트 컴퓨터가 저장 영역의 펌웨어의 현재 실행으로 돌아가 컨트롤러에 전송된 펌웨어의 다른 저장 영역을 선택합니다. 호스트 컴퓨터는 컨트롤러가 반환한 현재 실행 중인 펌웨어의 저장 영역에 따라 다른 저장 영역의 펌웨어를 선택합니다.
두 저장 영역에 동일한 펌웨어를 사용하면 ESP8266이 정상적으로 시작되지 않습니다.
위 내용은 ESPith SDK x(스크립트 프로그래밍 가능 컨트롤러)용 OTA 기능 구현 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!