KR20240079226A - Method and system for updating firmware in the robot - Google Patents

Method and system for updating firmware in the robot Download PDF

Info

Publication number
KR20240079226A
KR20240079226A KR1020220161105A KR20220161105A KR20240079226A KR 20240079226 A KR20240079226 A KR 20240079226A KR 1020220161105 A KR1020220161105 A KR 1020220161105A KR 20220161105 A KR20220161105 A KR 20220161105A KR 20240079226 A KR20240079226 A KR 20240079226A
Authority
KR
South Korea
Prior art keywords
firmware
control device
wireless
new
packet
Prior art date
Application number
KR1020220161105A
Other languages
Korean (ko)
Inventor
이덕연
이동욱
최동운
Original Assignee
한국생산기술연구원
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 한국생산기술연구원 filed Critical 한국생산기술연구원
Priority to KR1020220161105A priority Critical patent/KR20240079226A/en
Publication of KR20240079226A publication Critical patent/KR20240079226A/en

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/65Updates
    • G06F8/654Updates using techniques specially adapted for alterable solid state memories, e.g. for EEPROM or flash memories
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1004Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's to protect a block of data words, e.g. CRC or checksum
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1415Saving, restoring, recovering or retrying at system level
    • G06F11/1417Boot up procedures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/4401Bootstrapping
    • G06F9/4406Loading of operating system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/4401Bootstrapping
    • G06F9/4411Configuring for operating with peripheral devices; Loading of device drivers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/546Message passing systems or structures, e.g. queues
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L1/00Arrangements for detecting or preventing errors in the information received
    • H04L1/004Arrangements for detecting or preventing errors in the information received by using forward error control

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Quality & Reliability (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Stored Programmes (AREA)

Abstract

본 발명의 일 실시 예에 따른, 로봇에서 펌웨어를 업데이트하는 방법 및 시스템은, 로봇 제어 장치와 무선 통신을 연결하며, 자바스크립트 객체 표기법 형식을 이용하여 무선 펌웨어 갱신의 개시를 알리는 무선 펌웨어 갱신 시작 메시지를 생성하고, 상기 무선 펌웨어 갱신 시작 메시지를 상기 로봇 제어 장치로 전송하며, 상기 자바스크립트 객체 표시법 형식을 이용하여 신규 펌웨어를 다수의 펌웨어 패킷들로 생성하고, 상기 펌웨어 패킷들을 상기 로봇 제어 장치로 전송하는 무선 펌웨어 갱신 서버; 및 상기 무선 펌웨어 갱신 시작 메시지가 수신되면, 무선 펌웨어의 수신을 대기하는 무선 펌웨어 갱신 대기 상태로 진입하며, 상기 펌웨어 패킷들을 수신하여 메모리의 신규 펌웨어 임시 영역에 저장하고, 상기 펌웨어 패킷들 중에서 마지막 펌웨어 패킷이 수신되면, 상기 신규 펌웨어의 정상 전송 완료를 나타내는 신규 펌웨어 플래그를 설정하며, 부트 로더를 통해 상기 신규 펌웨어 플래그가 설정되어 있는지 여부를 확인하고, 상기 확인 결과, 상기 신규 펌웨어 플래그가 설정된 경우, 상기 저장된 펌웨어 패킷들을 이용하여 펌웨어를 업데이트하며, 상기 신규 펌웨어 플래그를 해제한 후, 재부팅하는 상기 로봇 제어 장치를 포함한다.According to an embodiment of the present invention, a method and system for updating firmware in a robot connects a robot control device to wireless communication and includes a wireless firmware update start message that announces the start of wireless firmware update using JavaScript object notation format. Generate, transmit the wireless firmware update start message to the robot control device, generate new firmware as a plurality of firmware packets using the JavaScript object notation format, and transmit the firmware packets to the robot control device. wireless firmware update server; And when the wireless firmware update start message is received, it enters a wireless firmware update standby state waiting to receive wireless firmware, receives the firmware packets and stores them in a new firmware temporary area of the memory, and selects the last firmware among the firmware packets. When a packet is received, a new firmware flag is set indicating completion of normal transmission of the new firmware, and whether the new firmware flag is set is checked through a boot loader. As a result of the confirmation, if the new firmware flag is set, It includes the robot control device that updates firmware using the stored firmware packets, releases the new firmware flag, and then reboots.

Description

로봇에서 펌웨어를 업데이트하는 방법 및 시스템{Method and system for updating firmware in the robot}Method and system for updating firmware in the robot}

본 발명은 로봇에 관한 것으로, 특히, 로봇에서 펌웨어를 업데이트하는 방법 및 시스템에 관한 것이다.The present invention relates to robots, and particularly to a method and system for updating firmware in a robot.

가정 또는 산업에서 사용하는 로봇은 수많은 부품으로 구성되며, 이 부품들은 각 부품을 제어하는 제어장치를 포함한다. 그리고 각 제어장치는 일반적으로 부품 동작 제어를 위해 소프트웨어인 펌웨어(firmware)를 이용한다. 이러한 펌웨어는 문제가 생기거나 성능 향상을 위해 업데이트가 수행되어야 한다.Robots used at home or in industry are made up of numerous parts, and these parts include control devices that control each part. And each control device generally uses firmware, which is software, to control component operations. Such firmware must be updated when problems arise or to improve performance.

한편, 모바일 기기 또는 컴퓨터 시스템에서 펌웨어의 버그나 개선이 필요로 할 때, 기존 펌웨어를 대부분 특정 파일 형식으로 업데이트하거나 네트워크 통신, 범용 직렬 버스(Universal Serial Bus,이하 'USB'라 한다) 통신 또는 범용 비동기식 송수신기(Universal Asynchronous Receiver and Transmitter, 이하 'UART'라 한다) 통신을 이용하여 업데이트한다.On the other hand, when a bug or improvement in firmware is needed in a mobile device or computer system, the existing firmware is usually updated to a specific file format or is used through network communication, Universal Serial Bus (hereinafter referred to as 'USB') communication, or universal communication. It is updated using asynchronous transmitter and receiver (Universal Asynchronous Receiver and Transmitter, hereinafter referred to as 'UART') communication.

특히, 기존의 방식에서는 컨트롤러 보드의 프로그램 내용을 보완하는 경우, 컨트롤러 보드를 기기에서 분해하여 제이텍(Joint Test Action Group, 이하 'JTAG'이라 한다)/UART/USB 등의 통신을 이용하여 해당 프로그램을 입력한 후 다시 기기에 컨트롤러 보드를 장착하는 과정을 거친다. 그러나 이러한 과정을 수행하는 중에 컨트롤러 보드의 파손을 야기하거나 로봇을 분해해야만 펌웨어 업데이트가 가능하므로 펌웨어 업데이트가 시간 및 공간적으로 제약되는 문제점이 있었다.In particular, in the case of supplementing the program content of the controller board in the existing method, the controller board is disassembled from the device and the program is downloaded using communication such as JTEC (Joint Test Action Group, hereinafter referred to as 'JTAG')/UART/USB. After entering the information, go through the process of installing the controller board into the device again. However, during this process, the firmware update could only be done by damaging the controller board or disassembling the robot, so there was a problem in that the firmware update was limited in time and space.

따라서, 이러한 문제점을 해결하기 위한 방안의 필요성이 대두하였다. Therefore, the need for a method to solve these problems has emerged.

본 발명의 일 실시 예는 로봇에서 펌웨어를 업데이트하는 방법 및 시스템을 제안한다.One embodiment of the present invention proposes a method and system for updating firmware in a robot.

그리고 본 발명의 일 실시 예는 무선 통신망을 통해 로봇에서 펌웨어를 업데이트하는 방법 및 시스템을 제안한다.And, an embodiment of the present invention proposes a method and system for updating firmware in a robot through a wireless communication network.

또한, 본 발명의 일 실시 예는 콘텐츠를 변경하거나 성능을 개선하기 위해 로봇에서 펌웨어를 업데이트하는 방법 및 시스템을 제안한다.Additionally, an embodiment of the present invention proposes a method and system for updating firmware in a robot to change content or improve performance.

본 발명의 일 실시 예에 따른, 로봇에서 펌웨어를 업데이트하는 시스템은, 로봇 제어 장치와 무선 통신을 연결하며, 자바스크립트 객체 표기법 형식을 이용하여 무선 펌웨어 갱신의 개시를 알리는 무선 펌웨어 갱신 시작 메시지를 생성하고, 상기 무선 펌웨어 갱신 시작 메시지를 상기 로봇 제어 장치로 전송하며, 상기 자바스크립트 객체 표시법 형식을 이용하여 신규 펌웨어를 다수의 펌웨어 패킷들로 생성하고, 상기 펌웨어 패킷들을 상기 로봇 제어 장치로 전송하는 무선 펌웨어 갱신 서버; 및 상기 무선 펌웨어 갱신 시작 메시지가 수신되면, 무선 펌웨어의 수신을 대기하는 무선 펌웨어 갱신 대기 상태로 진입하며, 상기 펌웨어 패킷들을 수신하여 메모리의 신규 펌웨어 임시 영역에 저장하고, 상기 펌웨어 패킷들 중에서 마지막 펌웨어 패킷이 수신되면, 상기 신규 펌웨어의 정상 전송 완료를 나타내는 신규 펌웨어 플래그를 설정하며, 부트 로더를 통해 상기 신규 펌웨어 플래그가 설정되어 있는지 여부를 확인하고, 상기 확인 결과, 상기 신규 펌웨어 플래그가 설정된 경우, 상기 저장된 펌웨어 패킷들을 이용하여 펌웨어를 업데이트하며, 상기 신규 펌웨어 플래그를 해제한 후, 재부팅하는 상기 로봇 제어 장치를 포함한다.According to an embodiment of the present invention, a system for updating firmware in a robot connects wireless communication with a robot control device and generates a wireless firmware update start message notifying the start of wireless firmware update using JavaScript object notation format. and transmitting the wireless firmware update start message to the robot control device, generating new firmware as a plurality of firmware packets using the JavaScript object notation format, and transmitting the firmware packets to the robot control device. Firmware update server; And when the wireless firmware update start message is received, it enters a wireless firmware update standby state waiting to receive wireless firmware, receives the firmware packets and stores them in a new firmware temporary area of the memory, and selects the last firmware among the firmware packets. When a packet is received, a new firmware flag is set indicating completion of normal transmission of the new firmware, and whether the new firmware flag is set is checked through a boot loader. As a result of the confirmation, if the new firmware flag is set, It includes the robot control device that updates firmware using the stored firmware packets, releases the new firmware flag, and then reboots.

본 발명의 다른 실시 예에 따른, 로봇에서 펌웨어를 업데이트하는 방법은, 무선 펌웨어 갱신 서버가, 로봇 제어 장치와 무선 통신을 연결하는 과정, 상기 무선 펌웨어 갱신 서버가, 자바스크립트 객체 표기법 형식을 이용하여 무선 펌웨어 갱신의 개시를 알리는 무선 펌웨어 갱신 시작 메시지를 생성하고, 상기 무선 펌웨어 갱신 시작 메시지를 상기 로봇 제어 장치로 전송하는 과정, 상기 로봇 제어 장치가, 상기 무선 펌웨어 갱신 시작 메시지가 수신되면, 무선 펌웨어의 수신을 대기하는 무선 펌웨어 갱신 대기 상태로 진입하는 과정, 상기 무선 펌웨어 갱신 서버가, 상기 자바스크립트 객체 표시법 형식을 이용하여 신규 펌웨어를 다수의 펌웨어 패킷들로 생성하고, 상기 펌웨어 패킷들을 상기 로봇 제어 장치로 전송하는 과정, 상기 로봇 제어 장치가, 상기 펌웨어 패킷들을 수신하여 메모리의 신규 펌웨어 임시 영역에 저장하는 과정, 상기 로봇 제어 장치가, 상기 펌웨어 패킷들 중에서 마지막 펌웨어 패킷이 수신되면, 상기 신규 펌웨어의 정상 전송 완료를 나타내는 신규 펌웨어 플래그를 설정하는 과정, 상기 로봇 제어 장치가, 부트 로더를 통해 상기 신규 펌웨어 플래그가 설정되어 있는지 여부를 확인하는 과정, 상기 로봇 제어 장치가, 상기 확인 결과, 상기 신규 펌웨어 플래그가 설정된 경우, 상기 저장된 펌웨어 패킷들을 이용하여 펌웨어를 업데이트하는 과정, 및 상기 로봇 제어 장치가, 상기 신규 펌웨어 플래그를 해제한 후, 재부팅하는 과정을 포함한다.According to another embodiment of the present invention, a method of updating firmware in a robot includes a wireless firmware update server connecting wireless communication with a robot control device, and the wireless firmware update server using a JavaScript object notation format. A process of generating a wireless firmware update start message indicating the start of a wireless firmware update and transmitting the wireless firmware update start message to the robot control device. When the robot control device receives the wireless firmware update start message, the wireless firmware update start message is transmitted. The process of entering a wireless firmware update waiting state waiting for reception, the wireless firmware update server generates new firmware as a plurality of firmware packets using the JavaScript object notation format, and controls the robot using the firmware packets. Process of transmitting to a device, the robot control device, receiving the firmware packets and storing them in a new firmware temporary area of the memory, the robot control device, when the last firmware packet among the firmware packets is received, the new firmware A process of setting a new firmware flag indicating completion of normal transmission, a process of the robot control device checking whether the new firmware flag is set through a boot loader, the robot control device, as a result of the confirmation, the new When the firmware flag is set, the process includes updating firmware using the stored firmware packets, and rebooting the robot control device after releasing the new firmware flag.

본 발명의 일 실시 예는 로봇에서 펌웨어를 업데이트하여 콘텐츠를 손쉽게 변경할 수 있다.In one embodiment of the present invention, content can be easily changed by updating the firmware in the robot.

그리고 본 발명의 일 실시 예는 무선 통신망을 통해 로봇에서 펌웨어를 업데이트하여 업데이트를 시간 및 공간적인 제약 없이 수행할 수 있다.And in one embodiment of the present invention, the firmware can be updated in the robot through a wireless communication network and the update can be performed without time and space constraints.

또한, 본 발명의 일 실시 예는 콘텐츠를 변경하거나 성능을 개선하기 위해 로봇에서 펌웨어를 업데이트하여 성능을 신속하게 개선할 수 있다.Additionally, an embodiment of the present invention can quickly improve performance by updating firmware in the robot to change content or improve performance.

도 1은 본 발명의 일 실시 예에 따른 통신 시스템의 간략한 블록 구성도이다.
도 2는 본 발명의 일 실시 예에 따른 FOTA 서버의 블록 구성도이다.
도 3은 본 발명의 일 실시 예에 따른 제1펌웨어 패킷의 구성도이다.
도 4는 본 발명의 일 실시 예에 다른 제N펌웨어 패킷의 구성도이다.
도 5는 본 발명의 일 실시 예에 따른 로봇 제어 장치의 블록 구성도이다.
도 6은 본 발명의 일 실시 예에 따른 로봇 제어 장치의 부트 로더와 메모리 맵을 도시한 도면이다.
도 7는 본 발명의 일 실시 예에 따른 통신 시스템에서 펌웨어를 송수신하는 흐름도이다.
도 8은 본 발명의 일 실시 예에 따른 로봇 제어 장치에서 펌웨어를 업데이트하는 흐름도이다.
1 is a simplified block diagram of a communication system according to an embodiment of the present invention.
Figure 2 is a block diagram of a FOTA server according to an embodiment of the present invention.
Figure 3 is a configuration diagram of a first firmware packet according to an embodiment of the present invention.
Figure 4 is a configuration diagram of an Nth firmware packet according to an embodiment of the present invention.
Figure 5 is a block diagram of a robot control device according to an embodiment of the present invention.
Figure 6 is a diagram illustrating a boot loader and a memory map of a robot control device according to an embodiment of the present invention.
Figure 7 is a flowchart of transmitting and receiving firmware in a communication system according to an embodiment of the present invention.
Figure 8 is a flowchart of updating firmware in a robot control device according to an embodiment of the present invention.

본 명세서에서 사용되는 용어에 대해 간략히 설명하고, 본 발명에 대해 구체적으로 설명하기로 한다.The terms used in this specification will be briefly explained, and the present invention will be described in detail.

본 발명의 실시 예에서 사용되는 용어는 본 발명에서의 기능을 고려하면서 가능한 현재 널리 사용되는 일반적인 용어들을 선택하였으나, 이는 당 분야에 종사하는 기술자의 의도 또는 판례, 새로운 기술의 출현 등에 따라 달라질 수 있다. 또한, 특정한 경우는 출원인이 임의로 선정한 용어도 있으며, 이 경우 해당하는 발명의 설명 부분에서 상세히 그 의미를 기재할 것이다. 따라서 본 발명에서 사용되는 용어는 단순한 용어의 명칭이 아닌, 그 용어가 가지는 의미와 본 발명의 전반에 걸친 내용을 토대로 정의되어야 한다.The terms used in the embodiments of the present invention are general terms that are currently widely used as much as possible while considering the function in the present invention, but this may vary depending on the intention or precedent of a person working in the art, the emergence of new technology, etc. . In addition, in certain cases, there are terms arbitrarily selected by the applicant, and in this case, the meaning will be described in detail in the description of the relevant invention. Therefore, the terms used in the present invention should be defined based on the meaning of the term and the overall content of the present invention, rather than simply the name of the term.

본 발명의 실시 예들은 다양한 변환을 가할 수 있고 여러 가지 실시 예를 가질 수 있는바, 특정 실시 예들을 도면에 예시하고 상세한 설명에 상세하게 설명하고자 한다. 그러나 이는 특정한 실시 형태에 대해 범위를 한정하려는 것이 아니며, 발명된 사상 및 기술 범위에 포함되는 모든 변환, 균등물 내지 대체물을 포함하는 것으로 이해되어야 한다. 실시 예들을 설명함에서 관련된 공지 기술에 대한 구체적인 설명이 요지를 흐릴 수 있다고 판단되는 경우 그 상세한 설명을 생략한다.Embodiments of the present invention can be modified in various ways and have various embodiments, and specific embodiments will be illustrated in the drawings and described in detail in the detailed description. However, this is not intended to limit the scope to specific embodiments, and should be understood to include all transformations, equivalents, and substitutes included in the spirit and technical scope of the invention. In describing the embodiments, if it is determined that a detailed description of related known technology may obscure the point, the detailed description will be omitted.

제1, 제2 등의 용어는 다양한 구성요소들을 설명하는데 사용될 수 있지만, 구성요소들은 용어들에 의해 한정되어서는 안 된다. 용어들은 하나의 구성요소를 다른 구성요소로부터 구별하는 목적으로만 사용된다.Terms such as first, second, etc. may be used to describe various components, but the components should not be limited by the terms. Terms are used only to distinguish one component from another.

단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한, 복수의 표현을 포함한다. 본 출원에서, "포함하다" 또는 "구성되다" 등의 용어는 명세서상에 기재된 특징, 숫자, 단계, 동작, 구성요소, 부품 또는 이들을 조합한 것이 존재함을 지정하려는 것이지, 하나 또는 그 이상의 다른 특징들이나 숫자, 단계, 동작, 구성요소, 부품 또는 이들을 조합한 것들의 존재 또는 부가 가능성을 미리 배제하지 않는 것으로 이해되어야 한다.Singular expressions include plural expressions unless the context clearly dictates otherwise. In this application, terms such as “comprise” or “consist of” are intended to designate the presence of features, numbers, steps, operations, components, parts, or combinations thereof described in the specification, but are intended to indicate the presence of one or more other It should be understood that this does not exclude in advance the presence or addition of features, numbers, steps, operations, components, parts, or combinations thereof.

본 발명의 실시 예에서 '모듈' 혹은 '부'는 적어도 하나의 기능이나 동작을 수행하며, 하드웨어 또는 소프트웨어로 구현되거나 하드웨어와 소프트웨어의 결합으로 구현될 수 있다. 또한, 복수의 '모듈' 혹은 복수의 '부'는 특정한 하드웨어로 구현될 필요가 있는 '모듈' 혹은 '부'를 제외하고는 적어도 하나의 모듈로 일체화되어 적어도 하나의 프로세서(미도시)로 구현될 수 있다.In an embodiment of the present invention, a 'module' or 'unit' performs at least one function or operation, and may be implemented as hardware or software, or as a combination of hardware and software. In addition, a plurality of 'modules' or a plurality of 'units' are integrated into at least one module and implemented with at least one processor (not shown), except for 'modules' or 'units' that need to be implemented with specific hardware. It can be.

본 발명의 실시 예에서, 어떤 부분이 다른 부분과 "연결"되어 있다고 할 때, 이는 "직접적으로 연결"되어 있는 경우뿐 아니라, 그 중간에 다른 소자를 사이에 두고 "전기적으로 연결"되어 있는 경우도 포함한다. 또한, 어떤 부분이 어떤 구성요소를 "포함"한다고 할 때, 이는 특별히 반대되는 기재가 없는 한 다른 구성요소를 제외하는 것이 아니라 다른 구성요소를 더 포함할 수 있는 것을 의미한다.In an embodiment of the present invention, when a part is said to be “connected” to another part, this means not only when it is “directly connected” but also when it is “electrically connected” with another element in between. Also includes. Additionally, when a part "includes" a certain component, this means that it may further include other components rather than excluding other components unless specifically stated to the contrary.

아래에서는 첨부한 도면을 참고하여 본 발명의 실시 예에 대하여 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자가 용이하게 실시할 수 있도록 상세히 설명한다. 그러나 본 발명은 여러 가지 상이한 형태로 구현될 수 있으며 여기에서 설명하는 실시 예에 한정되지 않는다. 그리고 도면에서 본 발명을 명확하게 설명하기 위해서 설명과 관계없는 부분은 생략하였으며, 명세서 전체를 통하여 유사한 부분에 대해서는 유사한 도면 부호를 붙였다. Below, with reference to the attached drawings, embodiments of the present invention will be described in detail so that those skilled in the art can easily implement the present invention. However, the present invention may be implemented in many different forms and is not limited to the embodiments described herein. In order to clearly explain the present invention in the drawings, parts unrelated to the description are omitted, and similar parts are given similar reference numerals throughout the specification.

도 1은 본 발명의 일 실시 예에 따른 통신 시스템의 간략한 블록 구성도이다.1 is a simplified block diagram of a communication system according to an embodiment of the present invention.

도 1을 참조하면, 통신 시스템은 무선 펌웨어 갱신(Firmware Over The Air, 이하 'FOTA'라 한다) 서버(101)와 로봇 제어 장치(103)를 포함한다.Referring to FIG. 1, the communication system includes a wireless firmware update (Firmware Over The Air, hereinafter referred to as 'FOTA') server 101 and a robot control device 103.

각 구성요소를 살펴보면, FOTA 서버(101)는 로봇 제어 장치(103)와 무선 네트워크를 연결한다. 그리고 FOTA 서버(101)는 자바스크립트 객체 표기법(JavaScript Object Notation, 이하 'JSON'이라 한다) 형식을 이용하여 FOTA 명령을 로봇 제어 장치(103)로 전송한다. 그리고 FOTA 서버(101)는 JSON 형식을 이용하여 업데이트할 펌웨어를 로봇 제어 장치(103)로 전송한다.Looking at each component, the FOTA server 101 connects the robot control device 103 and the wireless network. And the FOTA server 101 transmits the FOTA command to the robot control device 103 using the JavaScript Object Notation (JSON) format. And the FOTA server 101 transmits the firmware to be updated to the robot control device 103 using JSON format.

로봇 제어 장치(103)는 FOTA 서버(101)와 무선 네트워크로 연결한다. 그리고 로봇 제어 장치(103)는 FOTA 서버(101)로부터 업데이트할 펌웨어를 수신하여 메모리의 특정 영역에 저장한다. 만일, 업데이트할 펌웨어의 마지막 패킷이 수신되면, 로봇 제어 장치(103)는 메모리의 특정 영역에 신규 펌웨어 플래그를 설정한다. The robot control device 103 connects to the FOTA server 101 through a wireless network. And the robot control device 103 receives the firmware to be updated from the FOTA server 101 and stores it in a specific area of the memory. If the last packet of firmware to be updated is received, the robot control device 103 sets a new firmware flag in a specific area of the memory.

만일, 신규 펌웨어 플래그가 설정된 경우, 로봇 제어 장치(103)는 재부팅한다. 이때, 로봇 제어 장치(103)는 부트 로더(Boot Loader)를 통해 신규 펌웨어 플래그의 설정값을 확인한다. 확인 결과, 신규 펌웨어 플래그의 설정값이 1이면, 로봇 제어 장치(103)는 펌웨어를 업데이트한다. 펌웨어의 업데이트가 완료되면, 로봇 제어 장치(103)는 신규 펌웨어 플래그를 1에서 0으로 해제하고 다시 재부팅한다. 이후에, 로봇 제어 장치(103)는 업데이트된 신규 펌웨어를 이용하여 정상 부팅을 수행한다.If the new firmware flag is set, the robot control device 103 reboots. At this time, the robot control device 103 checks the setting value of the new firmware flag through the boot loader. As a result of confirmation, if the setting value of the new firmware flag is 1, the robot control device 103 updates the firmware. When the firmware update is completed, the robot control device 103 releases the new firmware flag from 1 to 0 and reboots again. Afterwards, the robot control device 103 performs normal booting using the updated new firmware.

도 2는 본 발명의 일 실시 예에 따른 FOTA 서버(101)의 블록 구성도이다.Figure 2 is a block diagram of the FOTA server 101 according to an embodiment of the present invention.

도 2를 참조하면, FOTA 서버(101)는 제1제어부(201)와 데이터베이스(203)와 제1무선 통신부(205)를 포함한다. Referring to FIG. 2, the FOTA server 101 includes a first control unit 201, a database 203, and a first wireless communication unit 205.

각 구성요소를 살펴보면, 데이터베이스(203)는 FOTA 서버(101)에서 제공하는 다양한 기능을 수행하기 위한 데이터 및 프로그램을 저장하며, 컴퓨터가 읽을 수 있는 기록매체(Computer Readable Media)를 포함한다. 예를 들면, 기록매체에는 플래시 메모리, 자기 기록매체, 광 기록매체, 캐리어 웨이브 매체 등을 포함할 수 있다. 예를 들면, 데이터베이스(203)는 최신 버전의 펌웨어를 저장할 수 있다.Looking at each component, the database 203 stores data and programs to perform various functions provided by the FOTA server 101, and includes computer readable media. For example, recording media may include flash memory, magnetic recording media, optical recording media, carrier wave media, etc. For example, the database 203 may store the latest version of firmware.

제1무선 통신부(205)는 FOTA 서버(101)의 송수신 기능을 제공하며, 다양한 유형의 무선 통신 방식에 따라 로봇 제어 장치(103)와 통신을 수행한다. 예를 들면, 제1무선 통신부(205)는 와이파이 모듈과 LTE(Long Term Evolution) 모듈을 포함할 수 있다. 예를 들면, 와이파이 모듈은 WiFi 방식으로 통신을 수행하며, LTE 모듈은 IEEE, LTE 등과 같은 다양한 통신 규격에 따라 통신을 수행할 수 있다. 예를 들면, 제1무선 통신부(205)는 로봇 제어 장치(101)로 제1 내지 N 번째 펌웨어 패킷들을 순차적으로 전송할 수 있다. 그리고 제1무선 통신부(205)는 그에 대한 응답으로, 긍정 확인 응답 문자(ACKnowledge character, 이하 'ACK'라 한다) 또는 부정 확인 응답 문자(Non-ACKnowledge character, 이하 'NACK'라 한다)을 순차적으로 수신할 수 있다.The first wireless communication unit 205 provides transmission and reception functions of the FOTA server 101 and communicates with the robot control device 103 according to various types of wireless communication methods. For example, the first wireless communication unit 205 may include a Wi-Fi module and a Long Term Evolution (LTE) module. For example, the Wi-Fi module performs communication using the WiFi method, and the LTE module can perform communication according to various communication standards such as IEEE, LTE, etc. For example, the first wireless communication unit 205 may sequentially transmit first to Nth firmware packets to the robot control device 101. And in response, the first wireless communication unit 205 sequentially sends a positive acknowledgment character (ACKnowledge character, hereinafter referred to as 'ACK') or a negative acknowledgment character (Non-ACKnowledge character, hereinafter referred to as 'NACK'). You can receive it.

제1제어부(201)는 데이터베이스(203)에 저장된 각종 프로그램을 이용하여 FOAT 서버(101)의 전반적인 동작을 제어한다.The first control unit 201 controls the overall operation of the FOAT server 101 using various programs stored in the database 203.

예를 들면, 제1제어부(201)는 로봇 제어 장치(103)와 무선 통신을 연결할 수 있다. 예를 들면, 무선 통신은 전송 제어 프로토콜(Transmission Control Protocol, 이하 'TCP'라 한다)/사용자 데이터그램 프로토콜(User Datagram Protocol, 이하 'UDP'라 한다)/직렬(Serial) 통신을 이용하여 수행될 수 있다.For example, the first control unit 201 may be connected to the robot control device 103 through wireless communication. For example, wireless communication may be performed using Transmission Control Protocol (hereinafter referred to as 'TCP')/User Datagram Protocol (hereinafter referred to as 'UDP')/Serial communication. You can.

그리고 제1제어부(201)는 시스템 상태 요청 메시지를 생성할 수 있다. 예를 들면, 시스템 상태 요청 메시지는 로봇 제어 장치(103)의 시스템 상태를 요청하는 메시지이며, 로봇 제어 장치(103)에서 현재 사용하는 펌웨어의 버전 정보를 요청할 수 있다. 예를 들면, 시스템 상태 요청 메시지는 {"CMD":{"COMMAND":"READ","DATA":"ALL"}}로 나타낼 수 있다.And the first control unit 201 may generate a system status request message. For example, the system status request message is a message requesting the system status of the robot control device 103, and may request version information of the firmware currently used by the robot control device 103. For example, a system status request message can be expressed as {"CMD":{"COMMAND":"READ","DATA":"ALL"}}.

그리고 제1제어부(201)는 제1무선 통신부(205)를 통해 시스템 상태 요청 메시지를 로봇 제어 장치(103)로 전송할 수 있다.And the first control unit 201 may transmit a system status request message to the robot control device 103 through the first wireless communication unit 205.

그리고 제1제어부(201)는 시스템 상태 요청 메시지에 대한 응답으로, 시스템 상태 응답 메시지를 로봇 제어 장치(103)로부터 수신할 수 있다. 예를 들면, 시스템 상태 응답 메시지는 시스템 상태 요청 메시지에 대한 응답 메시지이며, 로봇 제어 장치(103)에서 현재 사용하는 펌웨어의 버전 정보를 포함할 수 있다. 예를 들면, 시스템 상태 응답 메시지는 {"CMD":{"COMMAND":"WRITE","DATA":"ALL"}}로 나타낼 수 있다.And the first control unit 201 may receive a system status response message from the robot control device 103 in response to the system status request message. For example, the system status response message is a response message to the system status request message and may include version information of the firmware currently used by the robot control device 103. For example, a system status response message can be expressed as {"CMD":{"COMMAND":"WRITE","DATA":"ALL"}}.

그리고 제1제어부(201)는 수신된 시스템 상태 응답 메시지를 기반으로 펌웨어 업데이트를 시작하기 위한 FOTA 시작 절차를 수행한 후, FOTA 시작 메시지를 생성할 수 있다. 예를 들면, 제1제어부(201)는 시스템 상태 응답 메시지를 분석하여 펌웨어 버전 정보를 추출하고, 추출된 펌웨어 버전 정보와 최신 펌웨어 버전 정보를 비교할 수 있다. 만일, 추출된 펌웨어 버전 정보가 최신 펌웨어 버전 정보와 동일하면, 제1제어부(201)는 FOTA 시작 절차를 수행할 수 있다. 예를 들면, FOTA 시작 메시지는 로봇 제어 장치(103)에 FOTA 시작을 알리는 메시지일 수 있다. 예를 들면, FOTA 시작 메시지는 {"CMD":{"COMMAND":"FWUP","DATA":"ALL"}}로 나타낼 수 있다.Additionally, the first control unit 201 may perform a FOTA start procedure to start firmware update based on the received system status response message and then generate a FOTA start message. For example, the first control unit 201 may extract firmware version information by analyzing the system status response message and compare the extracted firmware version information with the latest firmware version information. If the extracted firmware version information is the same as the latest firmware version information, the first control unit 201 can perform the FOTA start procedure. For example, the FOTA start message may be a message notifying the robot control device 103 of the start of FOTA. For example, a FOTA startup message can be expressed as {"CMD":{"COMMAND":"FWUP","DATA":"ALL"}}.

그리고 제1제어부(201)는 제1무선 통신부(205)를 통해 FOTA 시작 메시지를 로봇 제어 장치(103)로 전송할 수 있다.And the first control unit 201 may transmit a FOTA start message to the robot control device 103 through the first wireless communication unit 205.

그리고 제1제어부(201)는 데이터베이스(203)에 미리 저장된 최신 버전의 펌웨어를 분할하여 N개의 펌웨어 패킷들을 생성할 수 있다. 예를 들면, N은 자연수이다. 예를 들면, 제1제어부(201)는 데이터베이스(203)에서 최신 버전의 펌웨어 바이너리를 검출하고, 통신 데이터 형식인 JSON 형식에 따라 검출된 펌웨어 바이너리를 문자열 형식인 베이스64(BASE64)로 변환할 수 있다. 예를 들면, 베이스64는 2진 데이터를 아스키 텍스트로 변환하거나 그 반대로 변환하는 인코딩 방법일 수 있다. 그리고 제1제어부(201)는 변환된 펌웨어 바이너리를 분할하여 N개의 펌웨어 패킷들을 생성할 수 있다.And the first control unit 201 may divide the latest version of firmware previously stored in the database 203 and generate N firmware packets. For example, N is a natural number. For example, the first control unit 201 can detect the latest version of the firmware binary in the database 203 and convert the detected firmware binary into BASE64, a string format, according to the JSON format, which is a communication data format. there is. For example, Base64 can be an encoding method that converts binary data to ASCII text and vice versa. And the first control unit 201 may divide the converted firmware binary to generate N firmware packets.

그리고 제1제어부(201)는 제1무선 통신부(205)를 통해 펌웨어 패킷들 중에서 제1펌웨어 패킷을 로봇 제어 장치(103)로 전송할 수 있다. 예를 들면, 제1펌웨어 패킷(301)은, 도 3에 도시된 바와 같이, 133바이트(Byte)일 수 있다. 제1펌웨어 패킷(301)의 0바이트(303)는 제1번째 패킷의 헤더(Header)를 포함하고, 1바이트(305)는 제1번째 패킷의 넘버(Number)를 포함할 수 있다. 그리고 2바이트(307)는 제1번째 패킷의 넘버 인버스(Number Inverse)를 포함하고, 3 내지 130 바이트(309)는 파일 이름과 파일 사이즈를 포함할 수 있다. 또한, 131 및 132 바이트(311)는 파일 이름과 파일 사이즈의 데이터에 대한 순환 중복 검사(Cyclic Redundancy Check, 이하 'CRC'라 한다)-16으로 계산된 검사 코드를 포함할 수 있다.And the first control unit 201 may transmit the first firmware packet among the firmware packets to the robot control device 103 through the first wireless communication unit 205. For example, the first firmware packet 301 may be 133 bytes, as shown in FIG. 3. The 0 byte 303 of the first firmware packet 301 may include the header of the first packet, and the 1 byte 305 may include the number of the first packet. And 2 bytes 307 may include the number inverse of the first packet, and 3 to 130 bytes 309 may include the file name and file size. Additionally, bytes 131 and 132 (311) may include a check code calculated by Cyclic Redundancy Check (CRC)-16 for data of the file name and file size.

예를 들면, 제1 또는 제N펌웨어 패킷은 {"CMD":{"COMMAND":"FWUG","DATA":packet}}로 나타낼 수 있다.For example, the first or Nth firmware packet can be represented as {"CMD":{"COMMAND":"FWUG","DATA":packet}}.

그리고 제1제어부(201)는 제1무선 통신부(205)를 통해 로봇 제어 장치(103)로부터 제1펌웨어 패킷에 대한 ACK 또는 NACK을 수신할 수 있다. 예를 들면, 제1 또는 제N펌웨어 패킷의 ACK는 {"CMD":{"COMMAND":"ACK","DATA":"ACK"}}로 나타낼 수 있다. 그리고 제1 또는 제N펌웨어 패킷의 NACK는 {"CMD":{"COMMAND":"NACK","DATA":"NACK"}}로 나타낼 수 있다.And the first control unit 201 may receive ACK or NACK for the first firmware packet from the robot control device 103 through the first wireless communication unit 205. For example, the ACK of the first or Nth firmware packet can be expressed as {"CMD":{"COMMAND":"ACK","DATA":"ACK"}}. And the NACK of the first or Nth firmware packet can be expressed as {"CMD":{"COMMAND":"NACK","DATA":"NACK"}}.

그리고 제1제어부(201)는 제1무선 통신부(205)를 통해 수신된 ACK 또는 NACK을 기반으로 제1펌웨어 패킷의 다음 펌웨어 패킷인 제N펌웨어 패킷을 로봇 제어 장치(103)로 전송할 수 있다. 예를 들면, NACK이 수신되면, 제1제어부(201)는 제1펌웨어 패킷을 전송하고, ACK이 수신되면, 제N펌웨어 패킷을 전송할 수 있다.And the first control unit 201 may transmit the Nth firmware packet, which is the next firmware packet of the first firmware packet, to the robot control device 103 based on the ACK or NACK received through the first wireless communication unit 205. For example, when a NACK is received, the first control unit 201 may transmit a first firmware packet, and when an ACK is received, the first control unit 201 may transmit an N-th firmware packet.

예를 들면, 제N펌웨어 패킷(401)은, 도 4에 도시된 바와 같이, 517바이트일 수 있다. 제N펌웨어 패킷(401)의 0바이트(403)는 제N펌웨어 패킷의 에스티엑스(Strat of TeXt, 이하 'STX'라 한다)를 포함하고, 1바이트(405)는 제N펌웨어 패킷의 넘버를 포함할 수 있다. 그리고 2바이트(407)는 제N펌웨어 패킷의 넘버 인버스를 포함하고, 3 내지 514 바이트(409)는 펌웨어 바이너리 데이터를 포함할 수 있다. 또한, 515 및 516 바이트(411)는 펌웨어 바이너리 데이터에 대한 CRC-16으로 계산된 검사 코드를 포함할 수 있다.For example, the Nth firmware packet 401 may be 517 bytes, as shown in FIG. 4. 0 byte (403) of the N-th firmware packet 401 contains the Strat of TeXt (hereinafter referred to as 'STX') of the N-th firmware packet, and 1 byte (405) contains the number of the N-th firmware packet. can do. Additionally, 2 bytes 407 may include the number inverse of the Nth firmware packet, and 3 to 514 bytes 409 may include firmware binary data. Additionally, bytes 515 and 516 411 may contain a CRC-16 calculated check code for the firmware binary data.

그리고 제1제어부(201)는 제1무선 통신부(205)를 통해 로봇 제어 장치(103)로부터 제N펌웨어 패킷에 대한 ACK 또는 NACK을 수신할 수 있다. 예를 들면, 마지막 펌웨어 패킷의 ACK은 {"CMD":{"COMMAND":"ACK","DATA":"EOT"}}라고 나타낼 수 있다. 그리고 마지막 펌웨어 패킷의 NACK은 {"CMD":{"COMMAND":"NACK","DATA":"NACK"}}라고 나타낼 수 있다.And the first control unit 201 may receive ACK or NACK for the Nth firmware packet from the robot control device 103 through the first wireless communication unit 205. For example, the ACK of the last firmware packet can be expressed as {"CMD":{"COMMAND":"ACK","DATA":"EOT"}}. And the NACK of the last firmware packet can be expressed as {"CMD":{"COMMAND":"NACK","DATA":"NACK"}}.

FOTA 서버(101)는 모든 펌웨어 패킷을 전부 전송할 때까지 로봇 제어 장치(103)로 펌웨어 패킷을 전송할 수 있다.The FOTA server 101 may transmit firmware packets to the robot control device 103 until all firmware packets are transmitted.

그리고 제1제어부(201)는 모든 펌웨어 패킷을 전송한 후, FOTA 종료 절차를 수행할 수 있다. 예를 들면, FOTA 종료 절차는 최신의 펌웨어를 송수신하는 절차를 종료하는 것을 나타낼 수 있다.And after transmitting all firmware packets, the first control unit 201 may perform a FOTA termination procedure. For example, the FOTA termination procedure may indicate terminating the procedure for transmitting and receiving the latest firmware.

도 5는 본 발명의 일 실시 예에 따른 로봇 제어 장치(103)의 블록 구성도이다.Figure 5 is a block diagram of the robot control device 103 according to an embodiment of the present invention.

도 5를 참조하면, 로봇 제어 장치(103)는 제2제어부(501)와 메모리(503)와 제2무선 통신부(505)를 포함한다.Referring to FIG. 5, the robot control device 103 includes a second control unit 501, a memory 503, and a second wireless communication unit 505.

각 구성요소를 살펴보면, 메모리(503)는 로봇 제어 장치(103)의 동작에 필요한 각종 프로그램 및 데이터를 저장한다. 예를 들면, 메모리(503)는 비휘발성 메모리, 휘발성 메모리, 플래시 메모리(flash-memory), 하드디스크 드라이브(HDD) 또는 솔리드 스테이트 드라이브(SSD) 등으로 구현될 수 있다. 예를 들면, 메모리(503)는 FOTA 서버(101)로부터 수신된 제1 내지 N번째 펌웨어 패킷들을 저장할 수 있다.Looking at each component, the memory 503 stores various programs and data necessary for the operation of the robot control device 103. For example, the memory 503 may be implemented as non-volatile memory, volatile memory, flash memory, hard disk drive (HDD), or solid state drive (SSD). For example, the memory 503 may store first to Nth firmware packets received from the FOTA server 101.

예를 들면, 메모리(503)는, 도 6에 도시된 바와 같이, 부트 로더(Boot Loader)를 저장하는 부트 로더 저장 영역(601)과 기존 펌웨어를 저장하는 정상 실행 펌웨어 영역(603)과 최신 펌웨어를 저장하는 신규 펌웨어 임시 영역(605)과 신규 펌웨어 플래그를 저장하는 신규 펌웨어 플래그 영역(607)을 포함할 수 있다.For example, as shown in FIG. 6, the memory 503 includes a boot loader storage area 601 for storing a boot loader, a normal execution firmware area 603 for storing existing firmware, and the latest firmware. It may include a new firmware temporary area 605 for storing and a new firmware flag area 607 for storing a new firmware flag.

제2무선 통신부(505)는 로봇 제어 장치(103)의 송수신 기능을 제공하며, 다양한 유형의 무선 통신 방식에 따라 FOTA 서버(101)와 통신을 수행한다. 예를 들면, 제2무선 통신부(505)는 와이파이 모듈과 LTE 모듈을 포함할 수 있다. 예를 들면, 제2무선 통신부(505)는 FOTA 서버(101)로부터 제1 내지 N번째 펌웨어 패킷들을 순차적으로 수신할 수 있다. 그리고 제2무선 통신부(505)는 그에 대한 응답으로, ACK 또는 NACK을 순차적으로 전송할 수 있다.The second wireless communication unit 505 provides transmission and reception functions of the robot control device 103 and communicates with the FOTA server 101 according to various types of wireless communication methods. For example, the second wireless communication unit 505 may include a Wi-Fi module and an LTE module. For example, the second wireless communication unit 505 may sequentially receive first to Nth firmware packets from the FOTA server 101. And the second wireless communication unit 505 may sequentially transmit ACK or NACK in response.

제2제어부(501)는 메모리(503)에 저장된 각종 프로그램을 이용하여 로봇 제어 장치(103)의 전반적인 동작을 제어한다.The second control unit 501 controls the overall operation of the robot control device 103 using various programs stored in the memory 503.

예를 들면, 제2제어부(501)는 FOTA 서버(101)와 무선 통신을 연결할 수 있다. 그리고 제2제어부(501)는 제2무선 통신부(505)를 통해 시스템 상태 요청 메시지를 FOTA 서버(101)로부터 수신하고, 수신된 시스템 상태 요청 메시지에 대한 응답으로, 시스템 상태 응답 메시지를 생성할 수 있다.For example, the second control unit 501 may establish wireless communication with the FOTA server 101. And the second control unit 501 may receive a system status request message from the FOTA server 101 through the second wireless communication unit 505, and generate a system status response message in response to the received system status request message. there is.

그리고 제2제어부(501)는 제2무선 통신부(505)를 통해 시스템 상태 응답 메시지를 FOTA 서버(101)로 전송할 수 있다.And the second control unit 501 may transmit a system status response message to the FOTA server 101 through the second wireless communication unit 505.

그리고 제2제어부(501)는 제2무선 통신부(505)를 통해 FOTA 시작 메시지를 수신한 후, FOTA 대기 상태로 진입할 수 있다. 예를 들면, FOTA 대기 상태는 최신 펌웨어를 수신하기 위한 대기 상태일 수 있다.And after receiving the FOTA start message through the second wireless communication unit 505, the second control unit 501 may enter the FOTA standby state. For example, the FOTA standby state may be a standby state for receiving the latest firmware.

그리고 제2제어부(501)는 제2무선 통신부(505)를 통해 제1펌웨어 패킷을 수신하며, 수신된 제1펌웨어 패킷에 대한 CRC를 검사하여 ACK 또는 NACK을 생성하고, 생성된 ACK 또는 NACK을 FOTA 서버(101)로 전송할 수 있다. 예를 들면, 제2제어부(501)는 제1펌웨어 패킷(301)의 검사 코드를 기반으로 CRC를 검사하여 제1펌웨어 패킷(301)의 오류 여부를 확인할 수 있다. 확인 결과, 오류가 발생하면, 제2제어부(501)는 NACK을 생성하여 FOTA 서버(101)로 전송하고, 그렇지 않으면, ACK을 생성하여 FOTA 서버(101)로 전송할 수 있다.And the second control unit 501 receives the first firmware packet through the second wireless communication unit 505, checks the CRC for the received first firmware packet, generates ACK or NACK, and receives the generated ACK or NACK. It can be transmitted to the FOTA server (101). For example, the second control unit 501 may check whether the first firmware packet 301 has an error by checking the CRC based on the check code of the first firmware packet 301. As a result of the confirmation, if an error occurs, the second control unit 501 may generate a NACK and transmit it to the FOTA server 101. Otherwise, an ACK may be generated and transmitted to the FOTA server 101.

그리고 제2제어부(501)는 제2무선 통신부(505)를 통해 제N펌웨어 패킷을 수신하며, 수신된 제N펌웨어 패킷에 대한 CRC를 검사하여 ACK 또는 NACK을 생성하고, 생성된 ACK 또는 NACK을 FOTA 서버(101)로 전송할 수 있다. 예를 들면, 제2제어부(501)는 제N펌웨어 패킷(401)의 검사 코드를 기반으로 CRC를 검사하여 제N펌웨어 패킷(401)의 오류 여부를 확인할 수 있다. 확인 결과, 오류가 발생하면, 제2제어부(501)는 NACK을 생성하여 FOTA 서버(101)로 전송하고, 그렇지 않으면, ACK을 생성하여 FOTA 서버(101)로 전송할 수 있다.And the second control unit 501 receives the N-th firmware packet through the second wireless communication unit 505, checks the CRC for the received N-th firmware packet, generates ACK or NACK, and receives the generated ACK or NACK. It can be transmitted to the FOTA server (101). For example, the second control unit 501 may check whether the N-th firmware packet 401 has an error by checking the CRC based on the check code of the N-th firmware packet 401. As a result of the confirmation, if an error occurs, the second control unit 501 may generate a NACK and transmit it to the FOTA server 101. Otherwise, an ACK may be generated and transmitted to the FOTA server 101.

로봇 제어 장치(103)는 모든 펌웨어 패킷을 전부 수신할 때까지 로봇 제어 장치(103)로 펌웨어 패킷을 수신할 수 있다.The robot control device 103 may receive firmware packets from the robot control device 103 until all firmware packets are received.

그리고 제2제어부(501)는 모든 펌웨어 패킷을 수신한 후, 메모리(503)에 제1 내지 제N펌웨어 패킷들을 저장할 수 있다. 그리고 제2제어부(501)는 신규 펌웨어 플래그를 1로 설정한 후, FOTA 종료 절차를 수행할 수 있다. 예를 들면, 신규 펌웨어 플래그는 새로운 펌웨어가 수신 완료되었음을 나타내는 플래그일 수 있다.And after receiving all firmware packets, the second control unit 501 may store the first to Nth firmware packets in the memory 503. And the second control unit 501 may set the new firmware flag to 1 and then perform the FOTA termination procedure. For example, the new firmware flag may be a flag indicating that new firmware has been received.

그리고 제2제어부(501)는 부트 로더를 실행할 수 있다. 예를 들면, 부트 로더는 운영 체제가 시동되기 이전에 미리 실행되면서 커널이 올바르게 시동되기 위해 필요한 모든 관련 작업을 마무리하고 최종적으로 운영 체제를 시동시키기 위한 목적을 가진 프로그램을 나타낼 수 있다.And the second control unit 501 can execute the boot loader. For example, a boot loader may represent a program that runs before the operating system is started, with the purpose of completing all related tasks necessary for the kernel to start properly and finally booting the operating system.

그리고 제2제어부(501)는 실행된 부트 로더를 통해 신규 펌웨어 플래그가 1로 설정되어 있는지 여부를 확인할 수 있다. And the second control unit 501 can check whether the new firmware flag is set to 1 through the executed boot loader.

확인 결과, 신규 펌웨어 플래그가 1로 설정되어 있지 않은 경우, 제2제어부(501)는 실행된 부트 로더를 통해 업데이트된 펌웨어를 이용하여 정상 부팅을 수행할 수 있다.As a result of confirmation, if the new firmware flag is not set to 1, the second control unit 501 can perform normal booting using the updated firmware through the executed boot loader.

이와 달리, 신규 펌웨어 플래그가 1로 설정되어 있는 경우, 제2제어부(501)는 실행된 부트 로더를 통해 기존의 펌웨어를 최신의 펌웨어로 업데이트한 후, 신규 펌웨어 플래그의 설정을 해제하여 신규 펌웨어 플래그를 1에서 0으로 변환할 수 있다. On the other hand, when the new firmware flag is set to 1, the second control unit 501 updates the existing firmware to the latest firmware through the executed boot loader and then unset the new firmware flag to replace the new firmware flag. can be converted from 1 to 0.

그리고 제2제어부(501)는 실행된 부트 로더를 통해 재부팅을 수행할 수 있다.And the second control unit 501 can perform rebooting through the executed boot loader.

이러한 동작을 통해, 본 발명의 일 실시 예는 로봇에서 펌웨어를 업데이트하여 콘텐츠를 손쉽게 변경할 수 있다. 그리고 본 발명의 일 실시 예는 무선 통신망을 통해 로봇에서 펌웨어를 업데이트하여 업데이트를 시간 및 공간적인 제약 없이 수행할 수 있다. 또한, 본 발명의 일 실시 예는 콘텐츠를 변경하거나 성능을 개선하기 위해 로봇에서 펌웨어를 업데이트하여 성능을 신속하게 개선할 수 있다.Through this operation, an embodiment of the present invention can easily change content by updating the firmware in the robot. And in one embodiment of the present invention, the firmware can be updated in the robot through a wireless communication network and the update can be performed without time and space constraints. Additionally, an embodiment of the present invention can quickly improve performance by updating firmware in the robot to change content or improve performance.

도 7는 본 발명의 일 실시 예에 따른 통신 시스템에서 펌웨어를 송수신하는 흐름도이다.Figure 7 is a flowchart of transmitting and receiving firmware in a communication system according to an embodiment of the present invention.

도7을 참조하면, FOTA 서버(101)의 제1제어부(201)는, 701 단계에서, FOTA 서버(101)와 로봇 제어 장치(103) 간에 무선 통신을 연결한다. Referring to Figure 7, the first control unit 201 of the FOTA server 101 connects wireless communication between the FOTA server 101 and the robot control device 103 in step 701.

703 단계에서, 제1제어부(201)는 시스템 상태 요청 메시지를 생성한다. 예를 들면, 시스템 상태 요청 메시지는 {"CMD":{"COMMAND":"READ","DATA":"ALL"}}로 나타낼 수 있다.In step 703, the first control unit 201 generates a system status request message. For example, a system status request message can be expressed as {"CMD":{"COMMAND":"READ","DATA":"ALL"}}.

705 단계에서, 제1제어부(201)는 제1무선 통신부(205)를 통해 시스템 상태 요청 메시지를 로봇 제어 장치(103)로 전송한다. In step 705, the first control unit 201 transmits a system status request message to the robot control device 103 through the first wireless communication unit 205.

707 단계에서, 로봇 제어 장치(103)의 제2제어부(501)는 제2무선 통신부(505)를 통해 시스템 상태 요청 메시지를 FOTA 서버(101)로부터 수신하고, 수신된 시스템 상태 요청 메시지에 대한 응답으로, 시스템 상태 응답 메시지를 생성한다. 예를 들면, 시스템 상태 응답 메시지는 {"CMD":{"COMMAND":"WRITE","DATA":"ALL"}}로 나타낼 수 있다.In step 707, the second control unit 501 of the robot control device 103 receives a system status request message from the FOTA server 101 through the second wireless communication unit 505, and responds to the received system status request message. This generates a system status response message. For example, a system status response message can be expressed as {"CMD":{"COMMAND":"WRITE","DATA":"ALL"}}.

709 단계에서, 제2제어부(501)는 제2무선 통신부(505)를 통해 시스템 상태 응답 메시지를 FOTA 서버(101)로 전송한다.In step 709, the second control unit 501 transmits a system status response message to the FOTA server 101 through the second wireless communication unit 505.

711 단계에서, FOTA 서버(101)의 제1제어부(201)는 제1무선 통신부(205)를 통해 수신된 시스템 상태 응답 메시지를 기반으로 펌웨어 업데이트를 시작하기 위한 FOTA 시작 절차를 수행한다. 그리고 제1제어부(201)는 FOTA 시작 메시지를 생성한다. 예를 들면, 제1제어부(201)는 시스템 상태 응답 메시지를 분석하여 펌웨어 버전 정보를 추출하고, 추출된 펌웨어 버전 정보와 최신 펌웨어 버전 정보를 비교할 수 있다. 만일, 추출된 펌웨어 버전 정보가 최신 펌웨어 버전 정보와 동일하면, 제1제어부(201)는 FOTA 시작 절차를 수행할 수 있다. 예를 들면, FOTA 시작 메시지는 {"CMD":{"COMMAND":"FWUP","DATA":"ALL"}}로 나타낼 수 있다.In step 711, the first control unit 201 of the FOTA server 101 performs a FOTA start procedure to start firmware update based on the system status response message received through the first wireless communication unit 205. And the first control unit 201 generates a FOTA start message. For example, the first control unit 201 may extract firmware version information by analyzing the system status response message and compare the extracted firmware version information with the latest firmware version information. If the extracted firmware version information is the same as the latest firmware version information, the first control unit 201 can perform the FOTA start procedure. For example, a FOTA startup message can be expressed as {"CMD":{"COMMAND":"FWUP","DATA":"ALL"}}.

713 단계에서, 제1제어부(201)는 제1무선 통신부(205)를 통해 FOTA 시작 메시지를 로봇 제어 장치(103)로 전송한다.In step 713, the first control unit 201 transmits a FOTA start message to the robot control device 103 through the first wireless communication unit 205.

715 단계에서, 로봇 제어 장치(103)의 제2제어부(501)는 제2무선 통신부(505)를 통해 FOTA 시작 메시지를 수신한 후, FOTA 대기 상태로 진입한다. In step 715, the second control unit 501 of the robot control device 103 receives the FOTA start message through the second wireless communication unit 505 and enters the FOTA standby state.

717 단계에서, FOTA 서버(101)의 제1제어부(201)는 데이터베이스(203)에 미리 저장된 최신 버전의 펌웨어를 분할하여 N개의 펌웨어 패킷들을 생성한다. 예를 들면, 제1제어부(201)는 데이터베이스(203)에서 최신 버전의 펌웨어 바이너리를 검출하고, 통신 데이터 형식인 JSON에 따라 검출된 펌웨어 바이너리를 문자열 형식인 베이스64(BASE64)로 변환할 수 있다. 그리고 제1제어부(201)는 변환된 펌웨어 바이너리를 분할하여 N개의 펌웨어 패킷들을 생성할 수 있다.In step 717, the first control unit 201 of the FOTA server 101 divides the latest version of firmware previously stored in the database 203 and generates N firmware packets. For example, the first control unit 201 may detect the latest version of the firmware binary in the database 203 and convert the detected firmware binary into BASE64, a string format, according to JSON, a communication data format. . And the first control unit 201 may divide the converted firmware binary to generate N firmware packets.

719 단계에서, 제1제어부(201)는 제1무선 통신부(205)를 통해 펌웨어 패킷들 중에서 제1펌웨어 패킷을 로봇 제어 장치(103)로 전송한다. 예를 들면, 제1 또는 제N펌웨어 패킷은 {"CMD":{"COMMAND":“FWUG","DATA":packet}}로 나타낼 수 있다.In step 719, the first control unit 201 transmits a first firmware packet among the firmware packets to the robot control device 103 through the first wireless communication unit 205. For example, the first or Nth firmware packet can be represented as {"CMD":{"COMMAND":“FWUG","DATA":packet}}.

721 단계에서, 제2제어부(501)는 제2무선 통신부(505)를 통해 수신된 제1펌웨어 패킷의 CRC를 검사하여 ACK 또는 NACK을 생성하고, 생성된 ACK 또는 NACK을 FOTA 서버(101)로 전송한다. In step 721, the second control unit 501 checks the CRC of the first firmware packet received through the second wireless communication unit 505, generates ACK or NACK, and sends the generated ACK or NACK to the FOTA server 101. send.

예를 들면, 제2제어부(501)는 제1펌웨어 패킷(301)의 검사 코드를 기반으로 CRC를 검사하여 제1펌웨어 패킷(301)의 오류 여부를 확인할 수 있다. 확인 결과, 오류가 발생하면, 제2제어부(501)는 NACK을 생성하여 FOTA 서버(101)로 전송하고, 그렇지 않으면, ACK을 생성하여 FOTA 서버(101)로 전송할 수 있다.For example, the second control unit 501 may check whether the first firmware packet 301 has an error by checking the CRC based on the check code of the first firmware packet 301. As a result of the confirmation, if an error occurs, the second control unit 501 may generate a NACK and transmit it to the FOTA server 101. Otherwise, an ACK may be generated and transmitted to the FOTA server 101.

예를 들면, 제1 또는 제N펌웨어 패킷의 ACK는 {"CMD":{"COMMAND":“ACK","DATA":“ACK"}}로 나타낼 수 있다. 그리고 제1 또는 제N펌웨어 패킷의 NACK는 {"CMD":{"COMMAND":“NACK","DATA":“NACK"}}로 나타낼 수 있다.For example, the ACK of the first or Nth firmware packet can be expressed as {"CMD":{"COMMAND":“ACK","DATA":“ACK"}}. And the NACK of the first or Nth firmware packet can be expressed as {"CMD":{"COMMAND":“NACK","DATA":“NACK"}}.

723 단계에서, FOTA 서버(101)의 제1제어부(201)는 제1무선 통신부(205)를 통해 수신된 ACK 또는 NACK을 기반으로 제1펌웨어 패킷의 다음 펌웨어 패킷인 제N펌웨어 패킷을 로봇 제어 장치(103)로 전송한다. 예를 들면, NACK이 수신되면, 제1제어부(201)는 제1펌웨어 패킷을 전송하고, ACK이 수신되면, 제N펌웨어 패킷을 전송할 수 있다.In step 723, the first control unit 201 of the FOTA server 101 controls the robot with the Nth firmware packet, which is the next firmware packet of the first firmware packet, based on the ACK or NACK received through the first wireless communication unit 205. Transmit to device 103. For example, when a NACK is received, the first control unit 201 may transmit a first firmware packet, and when an ACK is received, the first control unit 201 may transmit an N-th firmware packet.

725 단계에서, 로봇 제어 장치(103)의 제2제어부(501)는 제2무선 통신부(505)를 통해 수신된 제N펌웨어 패킷의 CRC를 검사하여 ACK 또는 NACK을 생성하고, 생성된 ACK 또는 NACK을 FOTA 서버(101)로 전송한다. In step 725, the second control unit 501 of the robot control device 103 checks the CRC of the Nth firmware packet received through the second wireless communication unit 505, generates ACK or NACK, and generates ACK or NACK. is transmitted to the FOTA server 101.

예를 들면, 제2제어부(501)는 제N펌웨어 패킷(401)의 검사 코드를 기반으로 CRC를 검사하여 제N펌웨어 패킷(401)의 오류 여부를 확인할 수 있다. 확인 결과, 오류가 발생하면, 제2제어부(501)는 NACK을 생성하여 FOTA 서버(101)로 전송하고, 그렇지 않으면, ACK을 생성하여 FOTA 서버(101)로 전송할 수 있다.For example, the second control unit 501 may check whether the N-th firmware packet 401 has an error by checking the CRC based on the check code of the N-th firmware packet 401. As a result of the confirmation, if an error occurs, the second control unit 501 may generate a NACK and transmit it to the FOTA server 101. Otherwise, an ACK may be generated and transmitted to the FOTA server 101.

예를 들면, 마지막 펌웨어 패킷의 ACK은 {"CMD":{"COMMAND":“ACK","DATA":“EOT"}}라고 나타낼 수 있다. 그리고 마지막 펌웨어 패킷의 NACK은 {"CMD":{"COMMAND":“NACK","DATA":“NACK"}}라고 나타낼 수 있다.For example, the ACK of the last firmware packet can be expressed as {"CMD":{"COMMAND":“ACK","DATA":“EOT"}}. And the NACK of the last firmware packet can be expressed as {"CMD":{"COMMAND":“NACK","DATA":“NACK"}}.

이와 같이, FOTA 서버(101)는 모든 펌웨어 패킷을 전부 전송할 때까지 로봇 제어 장치(103)로 펌웨어 패킷을 전송한다.In this way, the FOTA server 101 transmits firmware packets to the robot control device 103 until all firmware packets are transmitted.

727 단계에서, FOTA 서버(101)의 제1제어부(201)는 모든 펌웨어 패킷을 전송한 후, FOTA 종료 절차를 수행한다. In step 727, the first control unit 201 of the FOTA server 101 transmits all firmware packets and then performs a FOTA termination procedure.

729 단계에서, 로봇 제어 장치(103)의 제2제어부(501)는 모든 펌웨어 패킷을 수신한 후, 메모리(503)에 제1 내지 제N펌웨어 패킷들을 저장한다. 그리고 제2제어부(501)는 신규 펌웨어 플래그를 1로 설정한 후, FOTA 종료 절차를 수행한다. In step 729, the second control unit 501 of the robot control device 103 receives all firmware packets and stores the first to Nth firmware packets in the memory 503. Then, the second control unit 501 sets the new firmware flag to 1 and then performs the FOTA termination procedure.

예를 들면, 제1 내지 제N펌웨어 패킷들은, 도 6에 도시된 바와 같이, 메모리(503)의 신규 펌웨어 임시 영역(605)에 저장될 수 있다. 예를 들면, 신규 펌웨어 플래그는 메모리(503)의 신규 펌웨어 플래그 영역(607)에 저장될 수 있다.For example, the first to Nth firmware packets may be stored in the new firmware temporary area 605 of the memory 503, as shown in FIG. 6. For example, the new firmware flag may be stored in the new firmware flag area 607 of the memory 503.

도 8은 본 발명의 일 실시 예에 따른 로봇 제어 장치(103)에서 펌웨어를 업데이트하는 흐름도이다.Figure 8 is a flowchart of updating firmware in the robot control device 103 according to an embodiment of the present invention.

도 8을 참조하면, 제2제어부(501)는, 801 단계에서, 부트 로더를 실행한다.Referring to FIG. 8, the second control unit 501 executes the boot loader in step 801.

803 단계에서, 제2제어부(501)는 실행된 부트 로더를 통해 신규 펌웨어 플래그가 1로 설정되어 있는지 여부를 확인한다. In step 803, the second control unit 501 checks whether the new firmware flag is set to 1 through the executed boot loader.

확인 결과, 신규 펌웨어 플래그가 1로 설정되어 있는 경우, 제2제어부(501)는 805 단계로 진행하고, 그렇지 않으면, 809 단계로 진행한다.As a result of the confirmation, if the new firmware flag is set to 1, the second control unit 501 proceeds to step 805. Otherwise, it proceeds to step 809.

805 단계에서, 제2제어부(501)는 실행된 부트 로더를 통해 기존의 펌웨어를 최신의 펌웨어로 업데이트한 후, 신규 펌웨어 플래그의 설정을 해제하여 신규 펌웨어 플래그를 1에서 0으로 변환한다. In step 805, the second control unit 501 updates the existing firmware to the latest firmware through the executed boot loader, then de-sets the new firmware flag and converts the new firmware flag from 1 to 0.

807 단계에서, 제2제어부(501)는 실행된 부트 로더를 통해 재부팅을 수행한 후, 801 단계로 진행한다.In step 807, the second control unit 501 performs a reboot through the executed boot loader and then proceeds to step 801.

809 단계에서, 제2제어부(501)는 실행된 부트 로더를 통해 업데이트된 펌웨어를 이용하여 정상 부팅을 수행한다. In step 809, the second control unit 501 performs normal booting using firmware updated through the executed boot loader.

이러한 과정을 통해, 본 발명의 일 실시 예는 로봇에서 펌웨어를 업데이트하여 콘텐츠를 손쉽게 변경할 수 있다. 그리고 본 발명의 일 실시 예는 무선 통신망을 통해 로봇에서 펌웨어를 업데이트하여 업데이트를 시간 및 공간적인 제약 없이 수행할 수 있다. 또한, 본 발명의 일 실시 예는 콘텐츠를 변경하거나 성능을 개선하기 위해 로봇에서 펌웨어를 업데이트하여 성능을 신속하게 개선할 수 있다.Through this process, an embodiment of the present invention can easily change content by updating the firmware in the robot. And, in one embodiment of the present invention, the firmware can be updated in the robot through a wireless communication network, allowing the update to be performed without time and space constraints. Additionally, an embodiment of the present invention can quickly improve performance by updating firmware in the robot to change content or improve performance.

이상에서는 본 발명의 바람직한 실시 예에 대하여 도시하고 설명하였지만, 본 발명은 상술한 특정의 실시 예에 한정되지 아니하며, 청구범위에서 청구하는 본 발명의 요지를 벗어남이 없이 당해 발명이 속하는 기술분야에서 통상의 지식을 가진 자에 의해 다양한 변형실시가 가능한 것은 물론이고, 이러한 변형실시들은 본 발명의 기술적 사상이나 전망으로부터 개별적으로 이해되어서는 안 될 것이다.In the above, preferred embodiments of the present invention have been shown and described, but the present invention is not limited to the specific embodiments described above, and may be used in the technical field to which the invention pertains without departing from the gist of the invention as claimed in the claims. Of course, various modifications can be made by those skilled in the art, and these modifications should not be understood individually from the technical idea or perspective of the present invention.

101: FOTA 서버
103: 로봇 제어 장치
201: 제1제어부
203: 데이터베이스
205: 제1무선 통신부
501: 제2제어부
503: 메모리
505: 제2무선 통신부
101: FOTA server
103: Robot control device
201: first control unit
203: database
205: First Wireless Communication Department
501: second control unit
503: Memory
505: Second wireless communication department

Claims (10)

로봇 제어 장치와 무선 통신을 연결하며, 자바스크립트 객체 표기법 형식을 이용하여 무선 펌웨어 갱신의 개시를 알리는 무선 펌웨어 갱신 시작 메시지를 생성하고, 상기 무선 펌웨어 갱신 시작 메시지를 상기 로봇 제어 장치로 전송하며, 상기 자바스크립트 객체 표시법 형식을 이용하여 신규 펌웨어를 다수의 펌웨어 패킷들로 생성하고, 상기 펌웨어 패킷들을 상기 로봇 제어 장치로 전송하는 무선 펌웨어 갱신 서버; 및
상기 무선 펌웨어 갱신 시작 메시지가 수신되면, 무선 펌웨어의 수신을 대기하는 무선 펌웨어 갱신 대기 상태로 진입하며, 상기 펌웨어 패킷들을 수신하여 메모리의 신규 펌웨어 임시 영역에 저장하고, 상기 펌웨어 패킷들 중에서 마지막 펌웨어 패킷이 수신되면, 상기 신규 펌웨어의 정상 전송 완료를 나타내는 신규 펌웨어 플래그를 설정하며, 부트 로더를 통해 상기 신규 펌웨어 플래그가 설정되어 있는지 여부를 확인하고, 상기 확인 결과, 상기 신규 펌웨어 플래그가 설정된 경우, 상기 저장된 펌웨어 패킷들을 이용하여 펌웨어를 업데이트하며, 상기 신규 펌웨어 플래그를 해제한 후, 재부팅하는 상기 로봇 제어 장치를 포함하는 로봇에서 펌웨어를 업데이트하는 시스템.
Connects wireless communication with the robot control device, generates a wireless firmware update start message notifying the start of wireless firmware update using JavaScript object notation format, and transmits the wireless firmware update start message to the robot control device, a wireless firmware update server that generates new firmware as a plurality of firmware packets using a JavaScript object notation format and transmits the firmware packets to the robot control device; and
When the wireless firmware update start message is received, the device enters a wireless firmware update standby state waiting to receive wireless firmware, receives the firmware packets and stores them in a new firmware temporary area of the memory, and selects the last firmware packet among the firmware packets. When received, a new firmware flag is set indicating completion of normal transmission of the new firmware, and whether the new firmware flag is set is checked through a boot loader. If the new firmware flag is set as a result of the check, the A system for updating firmware in a robot, including the robot control device that updates firmware using stored firmware packets, releases the new firmware flag, and then reboots.
제1항에 있어서,
상기 로봇 제어 장치는, 상기 확인 결과, 상기 신규 펌웨어 플래그가 설정되어 있지 않은 경우, 정상 부팅하는 것을 특징으로 하는 로봇에서 펌웨어를 업데이트하는 시스템.
According to paragraph 1,
A system for updating firmware in a robot, wherein the robot control device boots normally when the new firmware flag is not set as a result of the confirmation.
제1항에 있어서,
상기 신규 펌웨어 플래그는, 1이면, 상기 신규 펌웨어 플래그가 설정된 것으로 나타내고, 0이면, 상기 신규 펌웨어 플래그가 해제된 것으로 나타내는 것을 특징으로 하는 로봇에서 펌웨어를 업데이트하는 시스템.
According to paragraph 1,
When the new firmware flag is 1, it indicates that the new firmware flag is set, and when it is 0, it indicates that the new firmware flag is released. A system for updating firmware in a robot.
제1항에 있어서,
상기 펌웨어 패킷들 중 제1펌웨어 패킷의 0바이트는 상기 제1펌웨어 패킷의 헤더를 포함하며, 1바이트는 상기 제1펌웨어 패킷의 넘버를 포함하고, 2바이트는 상기 제1펌웨어 패킷의 넘버 인버스를 포함하며, 3 내지 130 바이트는 파일 이름과 파일 사이즈를 포함하고, 131 및 132 바이트들은 상기 파일 이름과 파일 사이즈의 데이터에 대한 순환 중복 검사-16으로 계산된 검사 코드를 포함하는 것을 특징으로 하는 로봇에서 펌웨어를 업데이트하는 시스템.
According to paragraph 1,
Among the firmware packets, byte 0 of the first firmware packet includes the header of the first firmware packet, 1 byte includes the number of the first firmware packet, and 2 bytes include the number inverse of the first firmware packet. 3 to 130 bytes include a file name and file size, and 131 and 132 bytes include a check code calculated by cyclic redundancy check-16 for data of the file name and file size. system to update firmware.
제1항에 있어서,
상기 펌웨어 패킷들 중 제N펌웨어 패킷의 0바이트는 상기 제N펌웨어 패킷의 에스티엑스를 포함하며, 1바이트는 상기 제N펌웨어 패킷의 넘버를 포함하고, 2바이트는 상기 제N펌웨어 패킷의 넘버 인버스를 포함하며, 3 내지 514 바이트는 펌웨어 바이너리 데이터를 포함하고, 515 및 516 바이트는 상기 펌웨어 바이너리 데이터에 대한 순환 중복 검사-16으로 계산된 검사 코드를 포함하는 것을 특징으로 하는 로봇에서 펌웨어를 업데이트하는 시스템.
According to paragraph 1,
Among the firmware packets, byte 0 of the N-th firmware packet includes the STX of the N-th firmware packet, 1 byte includes the number of the N-th firmware packet, and 2 bytes include the number inverse of the N-th firmware packet. A system for updating firmware in a robot, wherein 3 to 514 bytes include firmware binary data, and 515 and 516 bytes include a check code calculated by cyclic redundancy check-16 for the firmware binary data. .
무선 펌웨어 갱신 서버가, 로봇 제어 장치와 무선 통신을 연결하는 과정,
상기 무선 펌웨어 갱신 서버가, 자바스크립트 객체 표기법 형식을 이용하여 무선 펌웨어 갱신의 개시를 알리는 무선 펌웨어 갱신 시작 메시지를 생성하고, 상기 무선 펌웨어 갱신 시작 메시지를 상기 로봇 제어 장치로 전송하는 과정,
상기 로봇 제어 장치가, 상기 무선 펌웨어 갱신 시작 메시지가 수신되면, 무선 펌웨어의 수신을 대기하는 무선 펌웨어 갱신 대기 상태로 진입하는 과정,
상기 무선 펌웨어 갱신 서버가, 상기 자바스크립트 객체 표시법 형식을 이용하여 신규 펌웨어를 다수의 펌웨어 패킷들로 생성하고, 상기 펌웨어 패킷들을 상기 로봇 제어 장치로 전송하는 과정,
상기 로봇 제어 장치가, 상기 펌웨어 패킷들을 수신하여 메모리의 신규 펌웨어 임시 영역에 저장하는 과정,
상기 로봇 제어 장치가, 상기 펌웨어 패킷들 중에서 마지막 펌웨어 패킷이 수신되면, 상기 신규 펌웨어의 정상 전송 완료를 나타내는 신규 펌웨어 플래그를 설정하는 과정,
상기 로봇 제어 장치가, 부트 로더를 통해 상기 신규 펌웨어 플래그가 설정되어 있는지 여부를 확인하는 과정,
상기 로봇 제어 장치가, 상기 확인 결과, 상기 신규 펌웨어 플래그가 설정된 경우, 상기 저장된 펌웨어 패킷들을 이용하여 펌웨어를 업데이트하는 과정, 및
상기 로봇 제어 장치가, 상기 신규 펌웨어 플래그를 해제한 후, 재부팅하는 과정을 포함하는 로봇에서 펌웨어를 업데이트하는 방법.
The process of connecting a wireless firmware update server to a robot control device and wireless communication,
A process in which the wireless firmware update server generates a wireless firmware update start message notifying the start of wireless firmware update using JavaScript object notation format, and transmits the wireless firmware update start message to the robot control device,
When the robot control device receives the wireless firmware update start message, entering a wireless firmware update standby state waiting to receive wireless firmware,
A process in which the wireless firmware update server generates new firmware as a plurality of firmware packets using the JavaScript object notation format and transmits the firmware packets to the robot control device,
A process of the robot control device receiving the firmware packets and storing them in a new firmware temporary area of the memory,
The robot control device, when the last firmware packet among the firmware packets is received, setting a new firmware flag indicating completion of normal transmission of the new firmware,
A process of the robot control device checking whether the new firmware flag is set through a boot loader,
When the new firmware flag is set as a result of the confirmation, the robot control device updates firmware using the stored firmware packets, and
A method of updating firmware in a robot, including a process in which the robot control device releases the new firmware flag and then reboots.
제6항에 있어서,
상기 로봇 제어 장치가, 상기 확인 결과, 상기 신규 펌웨어 플래그가 설정되어 있지 않은 경우, 정상 부팅하는 과정을 더 포함하는 로봇에서 펌웨어를 업데이트하는 방법.
According to clause 6,
A method of updating firmware in a robot, further comprising a normal booting process by the robot control device when, as a result of the confirmation, the new firmware flag is not set.
제6항에 있어서,
상기 신규 펌웨어 플래그는, 1이면, 상기 신규 펌웨어 플래그가 설정된 것으로 나타내고, 0이면, 상기 신규 펌웨어 플래그가 해제된 것으로 나타내는 것을 특징으로 하는 로봇에서 펌웨어를 업데이트하는 방법.
According to clause 6,
When the new firmware flag is 1, it indicates that the new firmware flag is set, and when it is 0, it indicates that the new firmware flag is released.
제6항에 있어서,
상기 펌웨어 패킷들 중 제1펌웨어 패킷의 0바이트는 상기 제1펌웨어 패킷의 헤더를 포함하며, 1바이트는 상기 제1펌웨어 패킷의 넘버를 포함하고, 2바이트는 상기 제1펌웨어 패킷의 넘버 인버스를 포함하며, 3 내지 130 바이트는 파일 이름과 파일 사이즈를 포함하고, 131 및 132 바이트들은 상기 파일 이름과 파일 사이즈의 데이터에 대한 순환 중복 검사-16으로 계산된 검사 코드를 포함하는 것을 특징으로 하는 로봇에서 펌웨어를 업데이트하는 방법.
According to clause 6,
Among the firmware packets, byte 0 of the first firmware packet includes the header of the first firmware packet, 1 byte includes the number of the first firmware packet, and 2 bytes include the number inverse of the first firmware packet. 3 to 130 bytes include a file name and file size, and 131 and 132 bytes include a check code calculated by cyclic redundancy check-16 for data of the file name and file size. How to update firmware in .
제6항에 있어서,
상기 펌웨어 패킷들 중 제N펌웨어 패킷의 0바이트는 상기 제N펌웨어 패킷의 에스티엑스를 포함하며, 1바이트는 상기 제N펌웨어 패킷의 넘버를 포함하고, 2바이트는 상기 제N펌웨어 패킷의 넘버 인버스를 포함하며, 3 내지 514 바이트는 펌웨어 바이너리 데이터를 포함하고, 515 및 516 바이트는 상기 펌웨어 바이너리 데이터에 대한 순환 중복 검사-16으로 계산된 검사 코드를 포함하는 것을 특징으로 하는 로봇에서 펌웨어를 업데이트하는 방법.
According to clause 6,
Among the firmware packets, byte 0 of the N-th firmware packet includes the STX of the N-th firmware packet, 1 byte includes the number of the N-th firmware packet, and 2 bytes include the number inverse of the N-th firmware packet. 3 to 514 bytes include firmware binary data, and 515 and 516 bytes include a check code calculated by cyclic redundancy check-16 for the firmware binary data. A method of updating firmware in a robot. .
KR1020220161105A 2022-11-28 2022-11-28 Method and system for updating firmware in the robot KR20240079226A (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020220161105A KR20240079226A (en) 2022-11-28 2022-11-28 Method and system for updating firmware in the robot

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020220161105A KR20240079226A (en) 2022-11-28 2022-11-28 Method and system for updating firmware in the robot

Publications (1)

Publication Number Publication Date
KR20240079226A true KR20240079226A (en) 2024-06-05

Family

ID=91470293

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020220161105A KR20240079226A (en) 2022-11-28 2022-11-28 Method and system for updating firmware in the robot

Country Status (1)

Country Link
KR (1) KR20240079226A (en)

Similar Documents

Publication Publication Date Title
CN106843942B (en) Wearable device and firmware upgrading method thereof
CN106250192B (en) Software upgrading method and system of upper computer
WO2017063577A1 (en) Firmware upgrade method and apparatus for optical module
US20100241838A1 (en) Method and system for firmware updates
CN109964215B (en) Flow control in remote direct memory access data communications with ring buffer mirroring
EP2456257A1 (en) Method and system for upgrading wireless data card
CN107066300B (en) Firmware upgrading method of storage device and storage device
CN111813428A (en) Method and device for upgrading terminal firmware, electronic equipment and storage medium
CN109976767B (en) Software burning method and device
CN107908417B (en) Firmware upgrading method and electronic equipment
US10338911B2 (en) Method and device for downloading software version, and storage medium
CN110597542A (en) Automatic OTA (over the air) software upgrading method and device and electronic equipment
CN114281394A (en) Method, system, equipment and medium for fast on-line upgrading program
CN111158751A (en) Windows environment deployment method, electronic equipment and storage medium
CN117687664A (en) Online upgrade configuration method and device for DSP
CN113760332A (en) Software upgrading method and electronic equipment
CN102711095A (en) Method for updating nodes of wireless sensor network in wireless mode
CN111897560A (en) NB-IoT module-based program upgrading system, method, device and storage medium
CN102740279A (en) Wireless network access terminal and run method thereof
CN108572847B (en) Method for upgrading single chip microcomputer software version through USB port
CN114138295A (en) Method, device and system for upgrading application program firmware of electronic equipment
CN110134423B (en) Firmware updating method and device and computer readable storage medium
KR20240079226A (en) Method and system for updating firmware in the robot
CN117908910A (en) MCU upgrading method and device, electronic equipment and storage medium
CN114968301A (en) Program updating method and system based on serial port communication