KR20240079226A - Method and system for updating firmware in the robot - Google Patents
Method and system for updating firmware in the robot Download PDFInfo
- 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
Links
- 238000000034 method Methods 0.000 title claims abstract description 42
- 238000004891 communication Methods 0.000 claims abstract description 64
- 238000012790 confirmation Methods 0.000 claims abstract description 13
- 230000005540 biological transmission Effects 0.000 claims abstract description 8
- 230000008569 process Effects 0.000 claims description 16
- 125000004122 cyclic group Chemical group 0.000 claims description 5
- 101000741965 Homo sapiens Inactive tyrosine-protein kinase PRAG1 Proteins 0.000 description 32
- 102100038659 Inactive tyrosine-protein kinase PRAG1 Human genes 0.000 description 32
- 230000004044 response Effects 0.000 description 17
- 238000010586 diagram Methods 0.000 description 9
- 230000008859 change Effects 0.000 description 6
- 230000006870 function Effects 0.000 description 5
- 238000005516 engineering process Methods 0.000 description 2
- 230000014509 gene expression Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 101100346656 Drosophila melanogaster strat gene Proteins 0.000 description 1
- 230000009471 action Effects 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 230000007774 longterm Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 230000001502 supplementing effect Effects 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
- 230000009466 transformation Effects 0.000 description 1
- 238000000844 transformation Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
- G06F8/65—Updates
- G06F8/654—Updates using techniques specially adapted for alterable solid state memories, e.g. for EEPROM or flash memories
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1004—Adding 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/14—Error detection or correction of the data by redundancy in operation
- G06F11/1402—Saving, restoring, recovering or retrying
- G06F11/1415—Saving, restoring, recovering or retrying at system level
- G06F11/1417—Boot up procedures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/4401—Bootstrapping
- G06F9/4406—Loading of operating system
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/4401—Bootstrapping
- G06F9/4411—Configuring for operating with peripheral devices; Loading of device drivers
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/546—Message passing systems or structures, e.g. queues
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L1/00—Arrangements for detecting or preventing errors in the information received
- H04L1/004—Arrangements 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
본 발명은 로봇에 관한 것으로, 특히, 로봇에서 펌웨어를 업데이트하는 방법 및 시스템에 관한 것이다.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')
각 구성요소를 살펴보면, FOTA 서버(101)는 로봇 제어 장치(103)와 무선 네트워크를 연결한다. 그리고 FOTA 서버(101)는 자바스크립트 객체 표기법(JavaScript Object Notation, 이하 'JSON'이라 한다) 형식을 이용하여 FOTA 명령을 로봇 제어 장치(103)로 전송한다. 그리고 FOTA 서버(101)는 JSON 형식을 이용하여 업데이트할 펌웨어를 로봇 제어 장치(103)로 전송한다.Looking at each component, the FOTA
로봇 제어 장치(103)는 FOTA 서버(101)와 무선 네트워크로 연결한다. 그리고 로봇 제어 장치(103)는 FOTA 서버(101)로부터 업데이트할 펌웨어를 수신하여 메모리의 특정 영역에 저장한다. 만일, 업데이트할 펌웨어의 마지막 패킷이 수신되면, 로봇 제어 장치(103)는 메모리의 특정 영역에 신규 펌웨어 플래그를 설정한다. The
만일, 신규 펌웨어 플래그가 설정된 경우, 로봇 제어 장치(103)는 재부팅한다. 이때, 로봇 제어 장치(103)는 부트 로더(Boot Loader)를 통해 신규 펌웨어 플래그의 설정값을 확인한다. 확인 결과, 신규 펌웨어 플래그의 설정값이 1이면, 로봇 제어 장치(103)는 펌웨어를 업데이트한다. 펌웨어의 업데이트가 완료되면, 로봇 제어 장치(103)는 신규 펌웨어 플래그를 1에서 0으로 해제하고 다시 재부팅한다. 이후에, 로봇 제어 장치(103)는 업데이트된 신규 펌웨어를 이용하여 정상 부팅을 수행한다.If the new firmware flag is set, the
도 2는 본 발명의 일 실시 예에 따른 FOTA 서버(101)의 블록 구성도이다.Figure 2 is a block diagram of the
도 2를 참조하면, FOTA 서버(101)는 제1제어부(201)와 데이터베이스(203)와 제1무선 통신부(205)를 포함한다. Referring to FIG. 2, the
각 구성요소를 살펴보면, 데이터베이스(203)는 FOTA 서버(101)에서 제공하는 다양한 기능을 수행하기 위한 데이터 및 프로그램을 저장하며, 컴퓨터가 읽을 수 있는 기록매체(Computer Readable Media)를 포함한다. 예를 들면, 기록매체에는 플래시 메모리, 자기 기록매체, 광 기록매체, 캐리어 웨이브 매체 등을 포함할 수 있다. 예를 들면, 데이터베이스(203)는 최신 버전의 펌웨어를 저장할 수 있다.Looking at each component, the
제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
제1제어부(201)는 데이터베이스(203)에 저장된 각종 프로그램을 이용하여 FOAT 서버(101)의 전반적인 동작을 제어한다.The
예를 들면, 제1제어부(201)는 로봇 제어 장치(103)와 무선 통신을 연결할 수 있다. 예를 들면, 무선 통신은 전송 제어 프로토콜(Transmission Control Protocol, 이하 'TCP'라 한다)/사용자 데이터그램 프로토콜(User Datagram Protocol, 이하 'UDP'라 한다)/직렬(Serial) 통신을 이용하여 수행될 수 있다.For example, the
그리고 제1제어부(201)는 시스템 상태 요청 메시지를 생성할 수 있다. 예를 들면, 시스템 상태 요청 메시지는 로봇 제어 장치(103)의 시스템 상태를 요청하는 메시지이며, 로봇 제어 장치(103)에서 현재 사용하는 펌웨어의 버전 정보를 요청할 수 있다. 예를 들면, 시스템 상태 요청 메시지는 {"CMD":{"COMMAND":"READ","DATA":"ALL"}}로 나타낼 수 있다.And the
그리고 제1제어부(201)는 제1무선 통신부(205)를 통해 시스템 상태 요청 메시지를 로봇 제어 장치(103)로 전송할 수 있다.And the
그리고 제1제어부(201)는 시스템 상태 요청 메시지에 대한 응답으로, 시스템 상태 응답 메시지를 로봇 제어 장치(103)로부터 수신할 수 있다. 예를 들면, 시스템 상태 응답 메시지는 시스템 상태 요청 메시지에 대한 응답 메시지이며, 로봇 제어 장치(103)에서 현재 사용하는 펌웨어의 버전 정보를 포함할 수 있다. 예를 들면, 시스템 상태 응답 메시지는 {"CMD":{"COMMAND":"WRITE","DATA":"ALL"}}로 나타낼 수 있다.And the
그리고 제1제어부(201)는 수신된 시스템 상태 응답 메시지를 기반으로 펌웨어 업데이트를 시작하기 위한 FOTA 시작 절차를 수행한 후, FOTA 시작 메시지를 생성할 수 있다. 예를 들면, 제1제어부(201)는 시스템 상태 응답 메시지를 분석하여 펌웨어 버전 정보를 추출하고, 추출된 펌웨어 버전 정보와 최신 펌웨어 버전 정보를 비교할 수 있다. 만일, 추출된 펌웨어 버전 정보가 최신 펌웨어 버전 정보와 동일하면, 제1제어부(201)는 FOTA 시작 절차를 수행할 수 있다. 예를 들면, FOTA 시작 메시지는 로봇 제어 장치(103)에 FOTA 시작을 알리는 메시지일 수 있다. 예를 들면, FOTA 시작 메시지는 {"CMD":{"COMMAND":"FWUP","DATA":"ALL"}}로 나타낼 수 있다.Additionally, the
그리고 제1제어부(201)는 제1무선 통신부(205)를 통해 FOTA 시작 메시지를 로봇 제어 장치(103)로 전송할 수 있다.And the
그리고 제1제어부(201)는 데이터베이스(203)에 미리 저장된 최신 버전의 펌웨어를 분할하여 N개의 펌웨어 패킷들을 생성할 수 있다. 예를 들면, N은 자연수이다. 예를 들면, 제1제어부(201)는 데이터베이스(203)에서 최신 버전의 펌웨어 바이너리를 검출하고, 통신 데이터 형식인 JSON 형식에 따라 검출된 펌웨어 바이너리를 문자열 형식인 베이스64(BASE64)로 변환할 수 있다. 예를 들면, 베이스64는 2진 데이터를 아스키 텍스트로 변환하거나 그 반대로 변환하는 인코딩 방법일 수 있다. 그리고 제1제어부(201)는 변환된 펌웨어 바이너리를 분할하여 N개의 펌웨어 패킷들을 생성할 수 있다.And the
그리고 제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
예를 들면, 제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
그리고 제1제어부(201)는 제1무선 통신부(205)를 통해 수신된 ACK 또는 NACK을 기반으로 제1펌웨어 패킷의 다음 펌웨어 패킷인 제N펌웨어 패킷을 로봇 제어 장치(103)로 전송할 수 있다. 예를 들면, NACK이 수신되면, 제1제어부(201)는 제1펌웨어 패킷을 전송하고, ACK이 수신되면, 제N펌웨어 패킷을 전송할 수 있다.And the
예를 들면, 제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
FOTA 서버(101)는 모든 펌웨어 패킷을 전부 전송할 때까지 로봇 제어 장치(103)로 펌웨어 패킷을 전송할 수 있다.The
그리고 제1제어부(201)는 모든 펌웨어 패킷을 전송한 후, FOTA 종료 절차를 수행할 수 있다. 예를 들면, FOTA 종료 절차는 최신의 펌웨어를 송수신하는 절차를 종료하는 것을 나타낼 수 있다.And after transmitting all firmware packets, the
도 5는 본 발명의 일 실시 예에 따른 로봇 제어 장치(103)의 블록 구성도이다.Figure 5 is a block diagram of the
도 5를 참조하면, 로봇 제어 장치(103)는 제2제어부(501)와 메모리(503)와 제2무선 통신부(505)를 포함한다.Referring to FIG. 5, the
각 구성요소를 살펴보면, 메모리(503)는 로봇 제어 장치(103)의 동작에 필요한 각종 프로그램 및 데이터를 저장한다. 예를 들면, 메모리(503)는 비휘발성 메모리, 휘발성 메모리, 플래시 메모리(flash-memory), 하드디스크 드라이브(HDD) 또는 솔리드 스테이트 드라이브(SSD) 등으로 구현될 수 있다. 예를 들면, 메모리(503)는 FOTA 서버(101)로부터 수신된 제1 내지 N번째 펌웨어 패킷들을 저장할 수 있다.Looking at each component, the
예를 들면, 메모리(503)는, 도 6에 도시된 바와 같이, 부트 로더(Boot Loader)를 저장하는 부트 로더 저장 영역(601)과 기존 펌웨어를 저장하는 정상 실행 펌웨어 영역(603)과 최신 펌웨어를 저장하는 신규 펌웨어 임시 영역(605)과 신규 펌웨어 플래그를 저장하는 신규 펌웨어 플래그 영역(607)을 포함할 수 있다.For example, as shown in FIG. 6, the
제2무선 통신부(505)는 로봇 제어 장치(103)의 송수신 기능을 제공하며, 다양한 유형의 무선 통신 방식에 따라 FOTA 서버(101)와 통신을 수행한다. 예를 들면, 제2무선 통신부(505)는 와이파이 모듈과 LTE 모듈을 포함할 수 있다. 예를 들면, 제2무선 통신부(505)는 FOTA 서버(101)로부터 제1 내지 N번째 펌웨어 패킷들을 순차적으로 수신할 수 있다. 그리고 제2무선 통신부(505)는 그에 대한 응답으로, ACK 또는 NACK을 순차적으로 전송할 수 있다.The second
제2제어부(501)는 메모리(503)에 저장된 각종 프로그램을 이용하여 로봇 제어 장치(103)의 전반적인 동작을 제어한다.The
예를 들면, 제2제어부(501)는 FOTA 서버(101)와 무선 통신을 연결할 수 있다. 그리고 제2제어부(501)는 제2무선 통신부(505)를 통해 시스템 상태 요청 메시지를 FOTA 서버(101)로부터 수신하고, 수신된 시스템 상태 요청 메시지에 대한 응답으로, 시스템 상태 응답 메시지를 생성할 수 있다.For example, the
그리고 제2제어부(501)는 제2무선 통신부(505)를 통해 시스템 상태 응답 메시지를 FOTA 서버(101)로 전송할 수 있다.And the
그리고 제2제어부(501)는 제2무선 통신부(505)를 통해 FOTA 시작 메시지를 수신한 후, FOTA 대기 상태로 진입할 수 있다. 예를 들면, FOTA 대기 상태는 최신 펌웨어를 수신하기 위한 대기 상태일 수 있다.And after receiving the FOTA start message through the second
그리고 제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
그리고 제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
로봇 제어 장치(103)는 모든 펌웨어 패킷을 전부 수신할 때까지 로봇 제어 장치(103)로 펌웨어 패킷을 수신할 수 있다.The
그리고 제2제어부(501)는 모든 펌웨어 패킷을 수신한 후, 메모리(503)에 제1 내지 제N펌웨어 패킷들을 저장할 수 있다. 그리고 제2제어부(501)는 신규 펌웨어 플래그를 1로 설정한 후, FOTA 종료 절차를 수행할 수 있다. 예를 들면, 신규 펌웨어 플래그는 새로운 펌웨어가 수신 완료되었음을 나타내는 플래그일 수 있다.And after receiving all firmware packets, the
그리고 제2제어부(501)는 부트 로더를 실행할 수 있다. 예를 들면, 부트 로더는 운영 체제가 시동되기 이전에 미리 실행되면서 커널이 올바르게 시동되기 위해 필요한 모든 관련 작업을 마무리하고 최종적으로 운영 체제를 시동시키기 위한 목적을 가진 프로그램을 나타낼 수 있다.And the
그리고 제2제어부(501)는 실행된 부트 로더를 통해 신규 펌웨어 플래그가 1로 설정되어 있는지 여부를 확인할 수 있다. And the
확인 결과, 신규 펌웨어 플래그가 1로 설정되어 있지 않은 경우, 제2제어부(501)는 실행된 부트 로더를 통해 업데이트된 펌웨어를 이용하여 정상 부팅을 수행할 수 있다.As a result of confirmation, if the new firmware flag is not set to 1, the
이와 달리, 신규 펌웨어 플래그가 1로 설정되어 있는 경우, 제2제어부(501)는 실행된 부트 로더를 통해 기존의 펌웨어를 최신의 펌웨어로 업데이트한 후, 신규 펌웨어 플래그의 설정을 해제하여 신규 펌웨어 플래그를 1에서 0으로 변환할 수 있다. On the other hand, when the new firmware flag is set to 1, the
그리고 제2제어부(501)는 실행된 부트 로더를 통해 재부팅을 수행할 수 있다.And the
이러한 동작을 통해, 본 발명의 일 실시 예는 로봇에서 펌웨어를 업데이트하여 콘텐츠를 손쉽게 변경할 수 있다. 그리고 본 발명의 일 실시 예는 무선 통신망을 통해 로봇에서 펌웨어를 업데이트하여 업데이트를 시간 및 공간적인 제약 없이 수행할 수 있다. 또한, 본 발명의 일 실시 예는 콘텐츠를 변경하거나 성능을 개선하기 위해 로봇에서 펌웨어를 업데이트하여 성능을 신속하게 개선할 수 있다.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
703 단계에서, 제1제어부(201)는 시스템 상태 요청 메시지를 생성한다. 예를 들면, 시스템 상태 요청 메시지는 {"CMD":{"COMMAND":"READ","DATA":"ALL"}}로 나타낼 수 있다.In step 703, the
705 단계에서, 제1제어부(201)는 제1무선 통신부(205)를 통해 시스템 상태 요청 메시지를 로봇 제어 장치(103)로 전송한다. In step 705, the
707 단계에서, 로봇 제어 장치(103)의 제2제어부(501)는 제2무선 통신부(505)를 통해 시스템 상태 요청 메시지를 FOTA 서버(101)로부터 수신하고, 수신된 시스템 상태 요청 메시지에 대한 응답으로, 시스템 상태 응답 메시지를 생성한다. 예를 들면, 시스템 상태 응답 메시지는 {"CMD":{"COMMAND":"WRITE","DATA":"ALL"}}로 나타낼 수 있다.In step 707, the
709 단계에서, 제2제어부(501)는 제2무선 통신부(505)를 통해 시스템 상태 응답 메시지를 FOTA 서버(101)로 전송한다.In step 709, the
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
713 단계에서, 제1제어부(201)는 제1무선 통신부(205)를 통해 FOTA 시작 메시지를 로봇 제어 장치(103)로 전송한다.In step 713, the
715 단계에서, 로봇 제어 장치(103)의 제2제어부(501)는 제2무선 통신부(505)를 통해 FOTA 시작 메시지를 수신한 후, FOTA 대기 상태로 진입한다. In step 715, the
717 단계에서, FOTA 서버(101)의 제1제어부(201)는 데이터베이스(203)에 미리 저장된 최신 버전의 펌웨어를 분할하여 N개의 펌웨어 패킷들을 생성한다. 예를 들면, 제1제어부(201)는 데이터베이스(203)에서 최신 버전의 펌웨어 바이너리를 검출하고, 통신 데이터 형식인 JSON에 따라 검출된 펌웨어 바이너리를 문자열 형식인 베이스64(BASE64)로 변환할 수 있다. 그리고 제1제어부(201)는 변환된 펌웨어 바이너리를 분할하여 N개의 펌웨어 패킷들을 생성할 수 있다.In step 717, the
719 단계에서, 제1제어부(201)는 제1무선 통신부(205)를 통해 펌웨어 패킷들 중에서 제1펌웨어 패킷을 로봇 제어 장치(103)로 전송한다. 예를 들면, 제1 또는 제N펌웨어 패킷은 {"CMD":{"COMMAND":“FWUG","DATA":packet}}로 나타낼 수 있다.In step 719, the
721 단계에서, 제2제어부(501)는 제2무선 통신부(505)를 통해 수신된 제1펌웨어 패킷의 CRC를 검사하여 ACK 또는 NACK을 생성하고, 생성된 ACK 또는 NACK을 FOTA 서버(101)로 전송한다. In step 721, the
예를 들면, 제2제어부(501)는 제1펌웨어 패킷(301)의 검사 코드를 기반으로 CRC를 검사하여 제1펌웨어 패킷(301)의 오류 여부를 확인할 수 있다. 확인 결과, 오류가 발생하면, 제2제어부(501)는 NACK을 생성하여 FOTA 서버(101)로 전송하고, 그렇지 않으면, ACK을 생성하여 FOTA 서버(101)로 전송할 수 있다.For example, the
예를 들면, 제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
725 단계에서, 로봇 제어 장치(103)의 제2제어부(501)는 제2무선 통신부(505)를 통해 수신된 제N펌웨어 패킷의 CRC를 검사하여 ACK 또는 NACK을 생성하고, 생성된 ACK 또는 NACK을 FOTA 서버(101)로 전송한다. In step 725, the
예를 들면, 제2제어부(501)는 제N펌웨어 패킷(401)의 검사 코드를 기반으로 CRC를 검사하여 제N펌웨어 패킷(401)의 오류 여부를 확인할 수 있다. 확인 결과, 오류가 발생하면, 제2제어부(501)는 NACK을 생성하여 FOTA 서버(101)로 전송하고, 그렇지 않으면, ACK을 생성하여 FOTA 서버(101)로 전송할 수 있다.For example, the
예를 들면, 마지막 펌웨어 패킷의 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
727 단계에서, FOTA 서버(101)의 제1제어부(201)는 모든 펌웨어 패킷을 전송한 후, FOTA 종료 절차를 수행한다. In step 727, the
729 단계에서, 로봇 제어 장치(103)의 제2제어부(501)는 모든 펌웨어 패킷을 수신한 후, 메모리(503)에 제1 내지 제N펌웨어 패킷들을 저장한다. 그리고 제2제어부(501)는 신규 펌웨어 플래그를 1로 설정한 후, FOTA 종료 절차를 수행한다. In step 729, the
예를 들면, 제1 내지 제N펌웨어 패킷들은, 도 6에 도시된 바와 같이, 메모리(503)의 신규 펌웨어 임시 영역(605)에 저장될 수 있다. 예를 들면, 신규 펌웨어 플래그는 메모리(503)의 신규 펌웨어 플래그 영역(607)에 저장될 수 있다.For example, the first to Nth firmware packets may be stored in the new firmware
도 8은 본 발명의 일 실시 예에 따른 로봇 제어 장치(103)에서 펌웨어를 업데이트하는 흐름도이다.Figure 8 is a flowchart of updating firmware in the
도 8을 참조하면, 제2제어부(501)는, 801 단계에서, 부트 로더를 실행한다.Referring to FIG. 8, the
803 단계에서, 제2제어부(501)는 실행된 부트 로더를 통해 신규 펌웨어 플래그가 1로 설정되어 있는지 여부를 확인한다. In
확인 결과, 신규 펌웨어 플래그가 1로 설정되어 있는 경우, 제2제어부(501)는 805 단계로 진행하고, 그렇지 않으면, 809 단계로 진행한다.As a result of the confirmation, if the new firmware flag is set to 1, the
805 단계에서, 제2제어부(501)는 실행된 부트 로더를 통해 기존의 펌웨어를 최신의 펌웨어로 업데이트한 후, 신규 펌웨어 플래그의 설정을 해제하여 신규 펌웨어 플래그를 1에서 0으로 변환한다. In
807 단계에서, 제2제어부(501)는 실행된 부트 로더를 통해 재부팅을 수행한 후, 801 단계로 진행한다.In
809 단계에서, 제2제어부(501)는 실행된 부트 로더를 통해 업데이트된 펌웨어를 이용하여 정상 부팅을 수행한다. In
이러한 과정을 통해, 본 발명의 일 실시 예는 로봇에서 펌웨어를 업데이트하여 콘텐츠를 손쉽게 변경할 수 있다. 그리고 본 발명의 일 실시 예는 무선 통신망을 통해 로봇에서 펌웨어를 업데이트하여 업데이트를 시간 및 공간적인 제약 없이 수행할 수 있다. 또한, 본 발명의 일 실시 예는 콘텐츠를 변경하거나 성능을 개선하기 위해 로봇에서 펌웨어를 업데이트하여 성능을 신속하게 개선할 수 있다.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.
상기 로봇 제어 장치는, 상기 확인 결과, 상기 신규 펌웨어 플래그가 설정되어 있지 않은 경우, 정상 부팅하는 것을 특징으로 하는 로봇에서 펌웨어를 업데이트하는 시스템.
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이면, 상기 신규 펌웨어 플래그가 설정된 것으로 나타내고, 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펌웨어 패킷의 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.
상기 펌웨어 패킷들 중 제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.
상기 로봇 제어 장치가, 상기 확인 결과, 상기 신규 펌웨어 플래그가 설정되어 있지 않은 경우, 정상 부팅하는 과정을 더 포함하는 로봇에서 펌웨어를 업데이트하는 방법.
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.
상기 신규 펌웨어 플래그는, 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.
상기 펌웨어 패킷들 중 제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 .
상기 펌웨어 패킷들 중 제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. .
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) |
-
2022
- 2022-11-28 KR KR1020220161105A patent/KR20240079226A/en not_active Application Discontinuation
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 | |
US20100241838A1 (en) | Method and system for firmware updates | |
CN109964215B (en) | Flow control in remote direct memory access data communications with ring buffer mirroring | |
CN101815988A (en) | Firmware image update and management | |
EP2456257A1 (en) | Method and system for upgrading wireless data card | |
CN108021410A (en) | A kind of firmware upgrade method and system of intelligent appliance equipment | |
CN111813428A (en) | Method and device for upgrading terminal firmware, electronic equipment and storage medium | |
CN107908417B (en) | Firmware upgrading method and electronic equipment | |
CN112947977A (en) | Software online upgrading method and system | |
CN110597542A (en) | Automatic OTA (over the air) software upgrading method and device and electronic equipment | |
US20180136923A1 (en) | Method and device for downloading software version, and storage medium | |
CN107425943A (en) | Message data transmission method and device, electronic equipment and computer 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 | |
CN109697077B (en) | Method, device and equipment for starting hard disk firmware | |
CN117908910A (en) | MCU upgrading method and device, electronic equipment and storage medium | |
CN114968301A (en) | Program updating method and system based on serial port communication |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
E902 | Notification of reason for refusal |