KR20140139807A - 펌웨어 업그레이드 및 이를 위한 서버 및 클라이언트 - Google Patents
펌웨어 업그레이드 및 이를 위한 서버 및 클라이언트 Download PDFInfo
- Publication number
- KR20140139807A KR20140139807A KR20130060369A KR20130060369A KR20140139807A KR 20140139807 A KR20140139807 A KR 20140139807A KR 20130060369 A KR20130060369 A KR 20130060369A KR 20130060369 A KR20130060369 A KR 20130060369A KR 20140139807 A KR20140139807 A KR 20140139807A
- Authority
- KR
- South Korea
- Prior art keywords
- data
- firmware
- transmitting
- firmware upgrade
- image
- Prior art date
Links
Images
Classifications
-
- 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/445—Program loading or initiating
- G06F9/44505—Configuring for program initiating, e.g. using registry, configuration files
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
Abstract
펌웨어 업그레이드에 대한 다양한 실시예들이 개시된다. 일실시예에 있어서, 펌웨어 업그레이드용 데이터를 생성하는 방법은 원본 펌웨어의 이미지를 전송하기 위한 데이터 블록들을 생성하는 단계; 및 부트로더 파라미터 값을 전송하기 위한 데이터 블록을 생성하는 단계를 포함한다. 원본 펌웨어의 이미지는 펌웨어 업그레이드 클라이언트에 있는 제1 메모리의 실행 영역에 기록될 데이터일 수 있다. 이 방법은 원본 펌웨어와 관련된 데이터(이하, 펌웨어 관련 데이터) - 펌웨어 업그레이드 클라이언트에 있는 제2 메모리의 실행 영역에 기록될 데이터 - 를 전송하기 위한 적어도 하나의 데이터 블록을 생성하는 단계를 더 포함할 수 있다.
Description
본 발명은 펌웨어 업그레이드에 관한 것으로, 보다 상세하게는 가로등 관제 시스템 등 다양한 응용 시스템에 적용될 수 있는, 펌웨어 업그레이드용 데이터 생성 방법, 펌웨어 업그레이드 서버의 동작 방법, 펌웨어 업그레이드 클라이언트의 동작 방법, 펌웨어 업그레이드용 데이터의 구조에 관한 것이다.
최근, 유선 장비를 통한 펌웨어 업그레이드 대신에 무선 방식(Over The Air : OTA)으로 펌웨어 업그레이드를 수행하는 기술이 많이 이용되고 있다.
한편, 펌웨어 업그레이드용 데이터는, 전송 효율성, 기존 프로세서(또는 시스템)에서 처리 가능한 데이터 구조와의 호환성, 전송 오류 강인성, 펌웨어 업그레이드 클라이언트에서의 업그레이드 속도, 펌웨어 업그레이드 클라이언트에서의 메모리 활용 방식 등 다양한 관점에서 최적화할 필요가 있다.
따라서, 효율적인 펌웨어 업그레이드 기술이 필요할 수 있다.
본 개시의 일 측면은 원본 펌웨어의 이미지를 전송하기 위한 데이터 블록들을 생성하는 단계; 및 부트로더 파라미터 값을 전송하기 위한 데이터 블록을 생성하는 단계를 포함하는 펌웨어 업그레이드용 데이터를 생성하는 방법을 제공한다.
원본 펌웨어의 이미지는 펌웨어 업그레이드 클라이언트에 있는 제1 메모리의 실행 영역에 기록될 데이터이며, 이 방법은 원본 펌웨어와 관련된 데이터(이하, 펌웨어 관련 데이터) - 펌웨어 업그레이드 클라이언트에 있는 제2 메모리의 실행 영역에 기록될 데이터 - 를 전송하기 위한 적어도 하나의 데이터 블록을 생성하는 단계를 더 포함할 수 있다.
원본 펌웨어의 이미지를 전송하기 위한 데이터 블록들을 생성하는 단계는 원본 펌웨어의 이미지로부터 미리 설정된 량의 데이터(이하, 라인 데이터)를 미리 설정된 개수만큼 순차적으로 추출하여, 추출된 라인 데이터 각각을 포함하는 데이터 블록을 생성하는 단계; 및 미리 설정된 개수만큼 추출된 라인 데이터들이 구성하는 데이터(이하, 페이지 데이터)에 대한 오류 검출용 코드 값을 포함하는 데이터 블록을 생성하는 단계를 포함할 수 있다.
펌웨어 관련 데이터를 전송하기 위한 적어도 하나의 데이터 블록을 생성하는 단계는 펌웨어 관련 데이터로부터 미리 설정된 량의 데이터(이하, 라인 데이터)를 미리 설정된 개수만큼 순차적으로 추출하여, 추출된 라인 데이터 각각을 포함하는 데이터 블록을 생성하는 단계; 및 미리 설정된 개수만큼 추출된 라인 데이터들이 구성하는 데이터(이하, 페이지 데이터)에 대한 오류 검출용 코드 값을 포함하는 데이터 블록을 생성하는 단계를 포함할 수 있다.
제1 메모리는 플래시(Flash) 메모리이고, 제2 메모리는 이이피롬(Eletronically Erasable Programmable Read Only Memory, 이하 EEPROM)일 수 있다.
데이터 블록들은 인텔 헥스 형식을 따르고, 부트로더 파라미터 값을 전송하기 위한 적어도 하나의 데이터 블록 각각은 제2 메모리의 제어 영역에 부트로더 파라미터 값을 기록하도록 펌웨어 업그레이드 클라이언트에게 알리기 위한 전용 레코드 타입 값을 포함할 수 있다.
부트로더 파라미터 값을 전송하기 위한 적어도 하나의 데이터 블록 각각은 제2 메모리의 제어 영역 중 부트로더 파라미터 값이 기록되는 위치를 나타내는 주소 값을 포함할 수 있다.
부트로더 파라미터 값은 원본 펌웨어의 이미지 및 펌웨어 관련 데이터 전체에 대한 오류 검출용 코드 값을 포함할 수 있다.
본 개시의 다른 측면은 펌웨어 업그레이드용 데이터 - 원본 펌웨어의 이미지를 전송하기 위한 데이터 블록들 및 부트로더 파라미터 값을 전송하기 위한 데이터 블록을 포함함 - 를 획득하는 단계; 및 펌웨어 업그레이드용 데이터에 포함된 데이터 블록들을 순차적으로 펌웨어 업그레이드 클라이언트에게 송신하는 단계를 포함하는 펌웨어 업그레이드 서버의 동작 방법을 제공한다.
원본 펌웨어의 이미지는 펌웨어 업그레이드 클라이언트에 있는 제1 메모리의 실행 영역에 기록될 데이터이며, 펌웨어 업그레이드용 데이터는 원본 펌웨어와 관련된 데이터(이하, 펌웨어 관련 데이터) - 펌웨어 업그레이드 클라이언트에 있는 제2 메모리의 실행 영역에 기록될 데이터 - 을 전송하기 위한 적어도 하나의 데이터 블록을 더 포함할 수 있다.
본 개시의 또 다른 측면은 펌웨어 업그레이드용 데이터 - 원본 펌웨어의 이미지를 전송하기 위한 데이터 블록들 및 부트로더 파라미터 값을 전송하기 위한 데이터 블록을 포함함 - 에 포함된 데이터 블록들을 펌웨어 업그레이드 서버로부터 수신하는 단계; 및 수신된 데이터 블록들을 기초로, 펌웨어 업그레이드를 수행하는 단계를 포함하는 펌웨어 업그레이드 클라이언트의 동작 방법을 제공한다.
펌웨어 업그레이드용 데이터는 원본 펌웨어와 관련된 데이터(이하, 펌웨어 관련 데이터)를 전송하기 위한 적어도 하나의 데이터 블록을 포함하고, 펌웨어 업그레이드를 수행하는 단계는, 수신된 원본 펌웨어의 이미지를 제1 메모리의 실행 영역에 기록하고, 수신된 펌웨어 관련 데이터를 제2 메모리의 실행 영역에 기록하는 단계를 포함할 수 있다.
원본 펌웨어의 이미지는 적어도 하나의 페이지 데이터로 구성되고, 적어도 하나의 페이지 데이터 각각은 복수의 라인 데이터 - 미리 설정된 량의 데이터 - 로 구성되고, 원본 펌웨어의 이미지를 전송하기 위한 데이터 블록들은 라인 데이터를 포함하는 데이터 블록 및 페이지 데이터에 대한 오류 검출용 코드 값을 포함하는 데이터 블록을 포함할 수 있다. 수신하는 단계는 수신된 오류 검출용 코드 값을 기초로 검출되는 페이지 데이터 오류를 펌웨어 업그레이드 서버에 통지하여, 해당 페이지 데이터를 전송하기 위한 데이터 블록들을 재수신하는 단계를 포함할 수 있다.
부트로더 파라미터 값은 원본 펌웨어의 이미지 및 펌웨어 관련 데이터 전체에 대한 오류 검출용 코드 값을 포함할 수 있다. 수신하는 단계는 오류 검출용 코드 값을 기초로 검출되는 오류를 펌웨어 업그레이드 서버에 통지하여, 펌웨어 업그레이드용 데이터에 포함된 데이터 블록들을 재수신하는 단계를 포함할 수 있다.
부트로더 파라미터 값은 원본 펌웨어의 이미지 및 펌웨어 관련 데이터 전체에 대한 오류 검출용 코드 값을 포함할 수 있다. 이 경우, 수신하는 단계는 수신된 부트로더 파라미터 값을 제2 메모리의 제어 영역에 저장하고, 수신된 원본 펌웨어의 이미지 및 펌웨어 관련 데이터를 제1 메모리의 다운로드 영역에 저장하는 단계를 포함할 수 있으며, 펌웨어 업그레이드를 수행하는 단계는 오류 검출용 코드 값을 기초로 오류가 검출되지 않는 경우, 제1 메모리의 다운로드 영역으로부터 원본 펌웨어의 이미지 및 펌웨어 관련 데이터를 독출하여 각각 제1 및 제2 메모리의 실행 영역에 저장한 후, 하드웨어 재시작을 수행하는 단계를 포함할 수 있다.
본 개시의 또 다른 측면은 원본 펌웨어의 이미지를 전송하기 위한 데이터 블록들; 및 부트로더 파라미터 값을 전송하기 위한 데이터 블록을 포함하는 펌웨어 업그레이드용 데이터를 수록한 컴퓨터로 읽을 수 있는 기록 매체를 제공한다.
원본 펌웨어의 이미지는 펌웨어 업그레이드 클라이언트에 있는 제1 메모리의 실행 영역에 기록될 데이터이며, 펌웨어 업그레이드용 데이터는 원본 펌웨어와 관련된 데이터(이하, 펌웨어 관련 데이터) - 펌웨어 업그레이드 클라이언트에 있는 제2 메모리의 실행 영역에 기록될 데이터 - 을 전송하기 위한 적어도 하나의 데이터 블록을 더 포함할 수 있다.
본 개시의 또 다른 측면은 인스트럭션들을 포함하는 유형의 컴퓨터 인식 가능 매체(tangible computer-readable medium containing instructions)를 제공한다. 이 인스트럭션들은 적어도 하나의 프로세서를 구비한 각종 무선 네트워크 장비(예컨대, LCU, MCU)에 의해 실행(execute)될 때, 본 개시의 방법이 수행(perform)될 수 있다.
본 개요는 이하의 상세한 설명에서 더 설명되는 개념들 중 선택된 것들을 단순한 형태로 소개하기 위해 제공된 것이다. 본 개요는 청구되는 발명의 주제의 핵심적인 특징 또는 본질적인 특징을 식별하도록 의도된 것이 아니며, 청구되는 발명의 주제의 범위를 제한하기 위해 사용되도록 의도된 것도 아니다. 또한, 청구되는 발명의 주제는 본 명세서의 임의의 부분에서 언급된 문제점들 중 일부 또는 전부를 해결하는 구현들로만 한정되지 않는다. 전술한 예시적인 양태들, 실시예들 및 특징들에 더하여, 추가적인 양태들, 실시예들, 및 특징들이 이하의 상세한 설명 및 도면을 참조로 명확해질 것이다.
본 개시의 몇몇 실시예들은 다음의 장점들을 포함하는 효과를 가질 수 있다. 다만, 모든 실시예들이 이를 전부 포함하여야 한다는 의미는 아니므로, 본 발명의 권리범위는 이에 의하여 제한되는 것으로 이해되어서는 아니 될 것이다.
몇몇 실시예에 따르면, 펌웨어 업그레이드용 데이터가 효율적으로 전송될 수 있다.
몇몇 실시예에 따르면, 전송 오류에 강인한 펌웨어 업그레이드용 데이터가 제공된다.
몇몇 실시예에 따르면, 기존 프로세서(또는 시스템)가 처리 가능한 데이터 구조와의 호환성을 유지할 수 있어, 다양한 응용에 적용될 수 있다.
몇몇 실시예에 따르면, 펌웨어 업그레이드 클라이언트에서 효율적인 펌웨어 업그레이드가 가능하다.
도 1은 몇몇 실시예가 적용될 수 있는 가로등 관제 시스템을 예시한다.
도 2는 일실시예에 따른 펌웨어 업그레이드 시스템을 예시한다.
도 3은 인텔 헥스 형식을 예시한다.
도 4는 펌웨어 업그레이드용 데이터를 생성하는 몇몇 실시예를 설명하기 위한 흐름도이다.
도 5는 일실시예에 따른 펌웨어 업그레이드용 데이터를 구성하는 데이터 블록의 구조를 나타낸다.
도 6은 제2 메모리(230)의 제어 영역에 저장되는 값들을 예시한다.
도 7은 몇몇 실시예에 따른 펌웨어 업그레이드 서버 및 펌웨어 업그레이드 클라이언트의 동작 방법을 설명하기 위한 도면이다.
도 8a는 데이터 블록을 전송하는 메시지(이하 제1 메시지) 형식을 예시하며, 도 8b는 데이터 블록의 수신에 응답하는 메시지(이하 제2 메시지)의 형식을 예시한다.
도 9는 일실시예에 따라 검증을 수행하여 오류 코드 값을 생성하는 방법을 예시하는 흐름도이다.
도 10은 일실시예에 따라 오류 코드 처리를 수행하는 방법을 설명하기 위한 도면이다.
도 2는 일실시예에 따른 펌웨어 업그레이드 시스템을 예시한다.
도 3은 인텔 헥스 형식을 예시한다.
도 4는 펌웨어 업그레이드용 데이터를 생성하는 몇몇 실시예를 설명하기 위한 흐름도이다.
도 5는 일실시예에 따른 펌웨어 업그레이드용 데이터를 구성하는 데이터 블록의 구조를 나타낸다.
도 6은 제2 메모리(230)의 제어 영역에 저장되는 값들을 예시한다.
도 7은 몇몇 실시예에 따른 펌웨어 업그레이드 서버 및 펌웨어 업그레이드 클라이언트의 동작 방법을 설명하기 위한 도면이다.
도 8a는 데이터 블록을 전송하는 메시지(이하 제1 메시지) 형식을 예시하며, 도 8b는 데이터 블록의 수신에 응답하는 메시지(이하 제2 메시지)의 형식을 예시한다.
도 9는 일실시예에 따라 검증을 수행하여 오류 코드 값을 생성하는 방법을 예시하는 흐름도이다.
도 10은 일실시예에 따라 오류 코드 처리를 수행하는 방법을 설명하기 위한 도면이다.
이하의 상세한 설명에서, 본 개시의 일부를 구성하는 첨부 도면에 대해 참조가 이루어진다. 도면에서, 유사한 기호는, 문맥 상 다른 의미를 갖지 않는 한, 일반적으로 유사한 구성요소를 나타낸다. 상세한 설명, 도면 및 청구범위에 기재된 예시적 실시예는 제한적으로 의도된 것이 아니다. 본 개시에 제시된 대상의 범위 및 사상을 벗어나지 않으면서, 다른 실시예가 사용될 수 있으며, 다른 변경들이 가해질 수 있다. 본 개시에서 일반적으로 기재되고 도면에 도시된 것과 같은 본 개시의 양상들은, 매우 다양한 서로 다른 구성에서 배열, 대체, 조합, 분리 및 설계될 수 있으며, 이 모두가 본 개시에서 명시적으로 고려되었음이 명백히 이해될 것이다.
도 1은 몇몇 실시예가 적용될 수 있는 가로등 관제 시스템을 예시한다.
도 1을 참조하면, 가로등 관제 시스템(100)은 가로등 관제 서버(130), 주 제어 유닛(Main Control Unit, 이하 MCU)(120) 및 가로등에 장착되는 로컬 제어 유닛(Local Control Unit, 이하 LCU)(110_1, 110_2, ..., 110_6)을 포함할 수 있다.
MCU(120)와 LCU(110_1, 110_2, ..., 110_6)는 제1 타입 네트워크로 연결되며, 가로등 관제 서버(130)와 MCU(120)는 제2 타입 네트워크로 연결될 수 있다. MCU(120)는 제1 타입 네트워크와 제2 타입 네트워크 간의 통신이 가능하도록 게이트웨이 기능을 구비할 수 있다. 일실시예에 있어서, 제1 타입 네트워크는 셀룰러 네트워크이고, 제2 타입 네트워크는 지그비(Zigbee) 네트워크이다.
일실시예에 있어서, 가로등 관제 서버(130)는 가로등을 제어하기 위한 신호(예컨대, 가로등을 점등 또는 소등하기 위한 신호)를 제1 타입 네트워크를 통하여 MCU(120)에 송신하고, MCU(120)는 수신된 제어 신호를 기초로, 개별 가로등을 제어하기 위한 신호 또는 가로등 전체를 제어하기 위한 신호를 제2 타입 네트워크를 통하여 해당 LCU(110_1, 110_2, ..., 및/또는 110_6)에게 송신한다. 일례로, 제2 타입 네트워크가 지그비 네트워크이고, MCU(120)가 제1 LCU(110_1)를 제어하기 위한 신호를 송신하는 경우, 그 경로 사이에 있는 LCU(예컨대, 110_3, 110_2)의 멀티 홉 중계를 통하여, 해당 제어 신호는 제1 LCU(110_1)에 도달될 수 있다.
일실시예에 있어서, LCU(110_1, 110_2, ..., 110_6)는 MCU(120)로부터 펌웨어 업그레이드용 데이터를 수신하여 펌웨어 업그레이드를 수행할 수 있다.
일실시예에 있어서, 펌웨어 업그레이드용 데이터는 MCU(120)에 의해 생성될 수 있다. 다른 일실시예에 있어서, 펌웨어 업그레이드용 데이터는 가로등 관제 서버(130)에 의해 생성되어, 제2 네트워크를 통하여 MCU(120)에 의해 수신 및 저장될 수 있다.
본 개시에서는 펌웨어 업그레이드용 데이터를 송신하는 측을 펌웨어 업그레이드 서버로, 펌웨어 업그레이드용 데이터를 수신하여 펌웨어 업그레이드를 수행하는 측을 펌웨어 업그레이드 클라이언트로 칭하여 개시된 기술을 설명하고자 한다.
도 2는 일실시예에 따른 펌웨어 업그레이드 시스템을 예시한다.
도 2를 참조하면, 펌웨어 업그레이드 시스템(200)은 펌웨어 업그레이드 서버(210) 및 펌웨어 업그레이드 클라이언트(220)를 포함한다.
펌웨어 업그레이드 서버(210)는, 도 2에 도시된 바와 같이, 획득부(212) 및 통신부(214)를 포함할 수 있다.
획득부(212)는 펌웨어 업그레이드용 데이터(LCU_Image.hex)를 획득하여 통신부(214)에 제공한다. 펌웨어 업그레이드용 데이터를 획득하는 방법의 예로는, 타 장비(예컨대, 도 1의 가로등 관제 서버)로부터 펌웨어 업그레이드용 데이터를 수신하는 방법, 펌웨어 업그레이드용 데이터을 직접 생성하는 방법을 들 수 있다.
일실시예에 있어서, 펌웨어 업그레이드용 데이터는 원본 펌웨어의 이미지(LCU.hex)를 전송하기 위한 데이터 블록들 및 부트로더 파라미터 값을 전송하기 위한 데이터 블록을 포함한다. 다른 일실시예에 있어서, 펌웨어 업그레이드용 데이터는 원본 펌웨어와 관련된 데이터(이하, 펌웨어 관련 데이터)(EEPROM.hex)를 더 포함한다.
부트로더 파라미터 값은 펌웨어 업그레이드 클라이언트(220)에 있는 제2 메모리(230)의 제어 영역에 저장되며, 원본 펌웨어의 이미지 및 펌웨어 관련 데이터는 펌웨어 업그레이드 클라이언트(220)에 있는 제1 메모리(228)의 다운로드 영역(ADP_0 또는 ADP_1)에 임시 저장되었다가 펌웨어 업그레이드에 따라 최종적으로 각각 제1 및 제2 메모리(228, 230)의 실행 영역에 기록된다.
통신부(214)는 펌웨어 업그레이드용 데이터를 구성하는 데이터 블록들을 펌웨어 업그레이드 클라이언트(220)에게 송신한다. 송수신에 사용되는 통신 타입의 일례로는, FOTA(Firmware Over The Air)을 달성하기 위한 무선 통신을, 다른 일례로는 유선 통신을 들 수 있다. 무선 통신의 일례로, 지그비 통신을 들 수 있으나, 반드시 이에 한정되는 것은 아니다.
일례로, 통신부(214)는 하위 계층(예컨대, 물리, MAC 계층)을 담당하는 통신 인터페이스 하드웨어, 상위 계층(예컨대, 응용 계층)을 담당하는 CPU, 및 기타 메모리를 통하여 구현될 수 있다.
일례로, 획득부(212)는 타 장비로부터 펌웨어 업그레이드용 데이터를 수신하는 통신 인터페이스 하드웨어, 수신된 펌웨어 업그레이드용 데이터를 상위 계층 처리하는 CPU, 및 기타 메모리를 통하여 구현될 수 있으며, 다른 일례로, 획득부(212)는 펌웨어 업그레이드용 데이터를 생성하는 CPU 및 기타 메모리를 통하여 구현될 수 있다.
펌웨어 업그레이드 클라이언트(220)는, 도 2에 도시된 바와 같이, 통신부(222), 디코더(224), 부트로더(226), 제1 메모리(228) 및 제2 메모리(230)를 포함할 수 있다.
일실시예에 있어서, 제1 메모리(228)는 제1 메모리는 플래시(Flash) 메모리이고, 제2 메모리(230)는 이이피롬(Eletronically Erasable Programmable Read Only Memory, 이하 EEPROM)이다.
제1 메모리(228)은 응용 섹션과 부트 섹션으로 영역 구획될 수 있다. 응용 섹션의 첫 주소에 해당하는 인스트럭션부터 순차적으로 수행함으로서 응용 프로그램이 실행되며, Fuse bit 설정에 의해서 부트 섹션의 인스트럭션들이 수행될 수 있다.
일실시예에 있어서, 펌웨어 업그레이드를 위해, 응용 섹션은 프로그램 실행 영역(ARP), 프로그램 다운로딩용 제1 영역(ADP_0), 프로그램 다운로딩용 제2 영역(ADP_1)로 영역 구획되어 사용된다.
통신부(222)는 펌웨어 업그레이드용 데이터에 포함된 데이터 블록들을 펌웨어 업그레이드 서버로부터 수신한다. 일례로, 통신부(222)는 하위 계층(예컨대, 물리, MAC 계층)을 담당하는 통신 인터페이스 하드웨어, 상위 계층(예컨대, 응용 계층)을 담당하는 CPU, 및 기타 메모리를 통하여 구현될 수 있다.
디코더(224) 및 부트로더(226)는 수신된 데이터 블록들을 기초로, 펌웨어 업그레이드를 수행한다.
디코더(224)는 수신된 데이터 블록들로부터 오류가 검출되는 경우 해당 오류를 펌웨어 업그레이드 서버(210)에 통지하여, 해당 데이터 블록들을 재수신한다. 또한, 디코더(224)는 오류 없는 것으로 판정한 원본 펌웨어의 이미지 및 펌웨어 관련 데이터를 제1 메모리(228)의 프로그램 다운로딩용 영역(ADP_0 또는 ADP_1)에 저장하고, 오류 없는 것으로 판정한 부트로더 파라미터 값을 제2 메모리(230)의 제어 영역에 저장한다. 일례로, 디코더(224)는 제1 메모리(228)의 프로그램 실행 영역(ARP)의 인스트럭션들을 실행하는 CPU 및 기타 메모리를 통하여 구현될 수 있다.
부트로더(226)은, 리셋을 하게 되면, 제1 메모리(228)의 프로그램 다운로딩용 영역(ADP_0 또는 ADP_1)으로부터 원본 펌웨어의 이미지 및 펌웨어 관련 데이터를 독출하여 각각 제1 메모리(228)의 실행 영역 및 제2 메모리의 실행 영역(230)에 기록함으로써, 펌웨어 업그레이드를 완료한다. 일례로, 부트로더(226)는 제1 메모리(230)의 부트섹션의 인스트럭션들을 실행하는 CPU 및 기타 메모리를 통하여 구현될 수 있다.
몇몇 실시예에 있어서, 데이터 블록들은 호환성 또는 구현 용이성을 위해, 도 3에 도시된 인텔 헥스 형식을 따르되, 펌웨어 업그레이드의 효율성을 극대화하기 위해 수정된 형식, 추가된 형식을 더 포함할 수 있다.
각 데이터 블록은 도 3에 예시된 바와 같이, 1 캐릭터 크기의 "시작" 코드 필드(field)(310), 1바이트 크기의 바이트 카운트 필드(320), 2바이트 크기의 주소 필드(330), 1바이트 크기의 레코드 타입 필드(340), 자연수 배의 바이트 크기를 가진 데이터 필드(350), 1바이트 크기의 체크섬(Checksum) 필드(360)를 포함할 수 있다.
"시작" 코드 필드(310)에는 한 라인의 시작을 나타내는 "시작" 코드(일례로, 인텔 헥스 코드에 따라 ":"인 ASCII 코드)가 기록될 수 있다.
바이트 카운트 필드(320)에는 데이터 필드(350)에 기록되는 데이터의 바이트 수가 기록될 수 있다.
주소 필드(330)에는 전송될 데이터가 수신단에 저장될 주소가 기록될 수 있다. 레코드 타입 필드(340)에는 데이터 필드의 종류를 나타내는 레코드 타입이 기록될 수 있다.
데이터 필드(350)에는 전송될 데이터가 기록될 수 있다. 일례로, 원본 펌웨어 데이터로부터 독출되는 소정 크기(예컨대, 16바이트)의 데이터(이하, 라인 데이터) 각각이 데이터 필드(350)에 기록될 수 있다. 일례로, 라인 데이터의 크기가 16 바이트로 고정되는 경우, 바이트 카운트 필드(320)는 0x10 값을 갖는다.
체크섬 필드(360)에는 해당 데이터 블록에 해당하는 값들 전부 또는 일부를 기초로 생성되는 체크섬 값이 기록된다. 일례로, 바이트 카운트 필드(320), 주소 필드(330), 레코드 타입 필드(340), 데이터 필드(350)에 기록되는 값들을 기초로, 체크섬 값이 생성될 수 있다.
일실시예에 있어서, 데이터 블록의 바이트 카운트 필드(320)에는 항상 0x10값이 기록되어, 데이터 필드(350)의 크기가 16 바이트로 고정되도록 한다. 일례로, 16 바이트 크기의 실제 데이터가 데이터 필드(350)에 기록되거나, 다른 일례로, 16 바이트 미만의 크기의 실제 데이터와 더미 데이터가 16 바이트 크기를 이루어 데이터 필드(350)에 기록될 수 있다.
몇몇 실시예에 있어서, 데이터 블록의 레코드 타입 필드(340)에 기록되는 값들은, 인텔 헥스 포멧에서 가질 수 있는 레코드 타입 값들 중 일부를 사용하지 않으며, 또한, 몇몇 실시예에 있어서, 데이터 블록의 레코드 타입 필드(340)에 기록되는 값들은, 인텔 헥스 포멧에는 없는 새로운 값이 사용될 수 있다. 일례로, 데이터 블록의 레코드 타입 필드(340)에 기록되는 값들로는, 인텔 헥스 포멧에서 가질 수 있는 레코드 타입 값들인 0x00, 0x01, 0x02, 0x03, 0x04, 0x05 중에서 Start Segment Address, Extended Linear Address, Start Linear Address를 각각 나타내는 0x03, 0x04, 0x05를 사용하지 않고, Data, End of file, Extended Segment Address를 각각 나타내는 0x00, 0x01, 0x02 및 새로이 추가된 값인 0x06이 사용될 수 있다.
도 4는 펌웨어 업그레이드용 데이터를 생성하는 몇몇 실시예를 설명하기 위한 흐름도이다.
도 5는 일실시예에 따른 펌웨어 업그레이드용 데이터를 구성하는 데이터 블록의 구조를 나타낸다.
이해를 돕기 위해, 도 2의 획득부(212)가 직접 펌웨어 업그레이드용 데이터를 생성하는 것을 전제하여, 펌웨어 업그레이드용 데이터를 생성하는 몇몇 실시예 및 데이터 블록의 구조에 대한 실시예를, 도 4 및 도 5를 참조하여, 설명하고자 한다.
먼저, 획득부(212)는 부호화를 위한 초기화를 수행한다(S410). 일례로, 초기화 과정에서 페이지 카운터(p)의 값이 1로 초기 설정될 수 있다.
다음, 획득부(212)는 헤더에 해당하는 데이터 블록(501)을 생성한다(S420).
헤더에 해당하는 데이터 블록(501)에는, 도 5에 예시된 바와 같이, 데이터 블록의 시작을 알리는 ":"인 시작 코드가 시작 코드 필드(310-1)에 기록될 수 있으며, 데이터 사이즈가 16 바이트 고정이므로 바이트 카운트 0x10가 바이트 카운트 필드(320-1)에 기록될 수 있으며, 응용 프로그램의 시작을 알리기 위한 값들인 0x000202가 주소 필드(330-1) 및 레코드 타입 필드(340-1)에 기록될 수 있으며, 펌웨어 데이터가 임시 저장될 위치 정보(예컨대, 도 2의 ADP_0 또는 ADP_1)를 지시하는 FMRI(Flash Memory Range Indicator) 및 기타 더미 값들(예컨대, 0x0 또는 0xF)이 데이터 필드(350-1)에 기록될 수 있으며, 체크섬 값이 체크섬 필드(360-1)에 기록될 수 있다.
다음, 획득부(212)는 원본 펌웨어의 이미지로부터 소정 크기(예컨대, 512 바이트)의 데이터(이하, 페이지 데이터)를 순차적으로 추출하여, 각 페이지 데이터를 전송하기 위한 데이터 블록들을 생성한다(S420).
일례로, 획득부(212)는 라인 카운터(l)를 초기화하고(S432), p번째 페이지 데이터로부터 추출되는 소정 크기(예컨대, 16 바이트)의 라인 데이터를 전송하기 위한 데이터 블록(502)을 생성한다(S434).
라인 데이터를 전송하기 위한 데이터 블록(502)에는, 도 5에 예시된 바와 같이, 데이터 블록의 시작을 알리는 ":"인 시작 코드가 시작 코드 필드(310-2)에 기록될 수 있으며, 데이터 사이즈가 16 비트 고정이므로 바이트 카운트 0x10가 바이트 카운트 필드(320-2)에 기록될 수 있으며, 데이터가 저장될 상대적 위치를 나타내는 주소 값이 주소 필드(330-2)에 기록될 수 있으며, 데이터를 전송하기 위한 데이터 블록이므로 0x00가 레코드 타입 필드(340-2)에 기록될 수 있으며, 라인데이터가 데이터 필드(350-2)에 기록될 수 있으며, 체크섬 값이 체크섬 필드(360-2)에 기록될 수 있다.
데이터 필드(350-2)의 라인 데이터는 펌웨어 업그레이드 클라이언트(220)의 제1 메모리(228)의 프로그램 다운로드용 영역(예컨대, 도 2의 ADP_0 또는 ADP_1)의 시작 주소에 주소 필드(330-2)의 주소 값만큼 더하여 얻어지는 주소에 디코더(224)에 의해 임시 저장되며, 펌웨어 업그레이드 클라이언트(220)의 제1 메모리(228)의 실행 영역(예컨대, 도 2의 ARP)의 시작 주소에 주소 필드(330-2)의 주소 값만큼 더하여 얻어지는 주소에 부트로더(226)에 의해 최종 저장된다.
한편, 획득부(212)는 원본 펌웨어의 이미지를 구성하는 페이지 데이터들 중에서 마지막 페이지 데이터에 포함된 데이터 량이 미리 설정된 페이지 데이터 량보다 작으면, 부족량의 데이터를 미리 설정된 더미 값(예컨대, 0xF 또는 0x0)으로 패딩하여, 마지막 페이지 데이터를 생성한다.
본 실시예에서, 원본 펌웨어의 이미지를 구성하는 페이지 데이터의 개수를 A로 전제하여 설명하고자 한다.
라인 카운터(l)의 값이 소정 크기(예컨대, 정상적인 페이지 데이터를 구성하는 라인 데이터의 개수)보다 작으면(S436), 획득부(212)는 라인 카운터 값을 증가시켜(S438), 다음 라인 데이터를 전송하기 위한 데이터 블록을 생성할 수 있도록 S434로 복귀하고, 라인 카운터 값이 소정 값보다 작지 않으면(S436), 해당 페이지 데이터를 구성하는 모든 라인데이터를 전송하기 위한 데이터 블록들이 생성 완료되었으므로, 획득부(212)는 해당 페이지 데이터에 대한 오류 검출용 코드(이하, PCRC) 값을 생성하여, PCRC 값을 전송하기 위한 데이터 블록(503)을 생성하고(S440), S450으로 진행한다. 오류 검출용 코드의 예로는 순환 잉여 검사(Cyclic Redundancy Check, 이하 CRC) 코드를 들 수 있으나, 반드시 이에 한정되는 것은 아니다.
PCRC 값을 전송하기 위한 데이터 블록(503)에는, 도 5에 예시된 바와 같이, PCRC를 포함하고 있음을 알리기 위한 0x000002가 주소 필드(330-3) 및 레코드 타입 필드(340-3)에 기록될 수 있으며, 더미 값 0x0000, 다음에 전송될 페이지 데이터의 시작 주소를 나타내는 NADDR, 해당 페이지 데이터에 대한 오류 검출용 코드 값인 PCRC 값, 및 더미 값이 데이터 필드(350-3)에 기록될 수 있다.
페이지 카운터(p)의 값이 원본 펌웨어의 이미지를 구성하는 페이지 데이터의 개수(A)보다 작을 경우(S450), 다음 페이지 데이터를 전송하기 위한 데이터 블록들을 생성하기 위해 S432로 복귀하고, 그렇지 않을 경우(S450), 펌웨어 관련 데이터를 전송하기 위한 데이터 블록들을 생성하기 위해 S460으로 진행한다.
획득부(212)는 페이지 카운터 p의 값을 1로 초기화하고(S460), 펌웨어 관련 데이터로부터 소정 크기(예컨대, 512 바이트)의 데이터(이하, 페이지 데이터)를 순차적으로 추출하여, 각 페이지 데이터를 전송하기 위한 데이터 블록들을 생성한다(S470).
일례로, 획득부(212)는 라인 카운터(l)를 초기화하고(S472), p번째 페이지 데이터로부터 추출되는 소정 크기(예컨대, 8 바이트)의 데이터(이하, 라인 데이터)를 전송하기 위한 데이터 블록(504)을 생성한다(S474).
라인 데이터를 전송하기 위한 데이터 블록(504)에는, 도 5에 예시된 바와 같이, 데이터 블록의 시작을 알리는 ":"인 시작 코드가 시작 코드 필드(310-4)에 기록될 수 있으며, 데이터 사이즈가 16 비트 고정이므로 바이트 카운트 0x10가 바이트 카운트 필드(320-4)에 기록될 수 있으며, 0x08, 펌웨어 관련 데이터의 라인 데이터가 저장될 제2 메모리(230)의 실행 영역의 주소 값을 나타내는 EADDR, 0x00, 펌웨어 관련 데이터의 8 바이트 라인 데이터, 미사용 값들이 데이터 필드(350-4)에 기록될 수 있으며, 체크섬 값이 체크섬 필드에 기록될 수 있다.
한편, 획득부(212)는 펌웨어 관련 데이터를 구성하는 페이지 데이터들 중에서 마지막 페이지 데이터에 포함된 데이터 량이 미리 설정된 페이지 데이터 량보다 작으면, 부족량의 데이터를 미리 설정된 더미 값(예컨대, 0xF 또는 0x0)으로 패딩하여, 마지막 페이지 데이터를 생성한다.
본 실시예에서, 펌웨어 관련 데이터를 구성하는 페이지 데이터의 개수를 B로 전제하여 설명하고자 한다.
라인 카운터(l)의 값이 소정 값(예컨대, 정상적인 페이지 데이터를 구성하는 라인 데이터의 개수)보다 작으면(S476), 획득부(212)는 라인 카운터 값을 증가시켜(S478), 다음 라인 데이터를 전송하기 위한 데이터 블록을 생성할 수 있도록 S474로 복귀하고, 라인 카운터 값이 소정 값보다 작지 않으면(S476), 해당 페이지 데이터를 구성하는 모든 라인 데이터를 전송하기 위한 데이터 블록들이 생성 완료되었으므로, 획득부(212)는 해당 페이지 데이터에 대한 오류 검출용 코드(이하, PCRC) 값을 생성하여, PCRC 값을 전송하기 위한 데이터 블록(505)을 생성하고(S480), S485로 진행한다.
PCRC를 전송하기 위한 데이터 블록(505)에는, 도 5에 예시된 바와 같이, PCRC를 포함하고 있음을 알리기 위한 0x000002가 주소 필드(330-5) 및 레코드 타입 필드(340-5)에 기록될 수 있으며, 사용되지 않는 값인 0x0000, 다음에 전송될 페이지 데이터의 시작 주소를 나타내는 NADDR, 해당 페이지 데이터에 대한 오류 검출용 코드 값인 PCRC 값, 및 더미 값이 데이터 필드(350-5)에 기록될 수 있다.
페이지 카운터(p)의 값이 펌웨어 관련 데이터를 구성하는 페이지 데이터의 개수(B)보다 작을 경우(S485), 다음 페이지 데이터를 전송하기 위한 데이터 블록들을 생성하기 위해 S472로 복귀하고, 그렇지 않을 경우(S485), 획득부(212)는 응용 프로그램의 끝을 알리는 데이터 블록(506)을 생성한다(S487).
응용 프로그램의 끝을 알리는 데이터 블록(506)에는, 도 5에 예시된 바와 같이, 응용 프로그램의 끝을 알리기 위한 값들인 0x000102가 주소 필드(330-6) 및 레코드 타입 필드(340-6)에 기록될 수 있다.
획득부(212)는 원본 펌웨어의 이미지 및 펌웨어 관련 데이터 전체에 대한 오류 검출용 코드 값(이하, ACRC)을 산출한다(S490).
획득부(212)는 제2 메모리(230)의 제어 영역에 저장될 부트로더 파라미터 값를 전송하기 위한 적어도 하나의 데이터 블록(507)을 생성한다(S492). 부트로더 파라미터 값을 전송하기 위한 데이터 블록(506)에는, 도 5에 예시된 바와 같이, 데이터 블록의 시작을 알리는 ":"인 시작 코드가 시작 코드 필드(310-7)에 기록될 수 있으며, 데이터 사이즈가 16 비트 고정이므로 바이트 카운트 0x10가 바이트 카운트 필드(320-7)에 기록될 수 있으며, 부트로더 파라미터 값이 저장될 제2 메모리(230)의 제어 영역 내의 주소 값이 주소 필드(330-7)에 기록될 수 있으며, 데이터를 전송하기 위한 데이터 블록이므로 0x00가 레코드 타입 필드(340-7)에 기록될 수 있으며, 부트로더 파라미터 값들이 데이터 필드(350-7)에 기록될 수 있으며, 체크섬 값이 체크섬 필드(360-7)에 기록될 수 있다.
도 6은 제2 메모리(230)의 제어 영역에 저장되는 값들을 예시한다.
그 다음, 파일 끝(End of File)을 나타내기 위한 데이터 블록(508)을 생성하여, 펌웨어 업그레이드용 데이터(LCU_Image.hex)를 생성 완료한다(S495).
파일 끝(End of File)을 나타내기 위한 데이터 블록(508)에는, 도 5에 예시된 바와 같이, 데이터 블록의 시작을 알리는 ":"인 시작 코드가 시작 코드 필드(310-8)에 기록될 수 있으며, 데이터 사이즈가 16 비트 고정이므로 바이트 카운트 0x10가 바이트 카운트 필드(320-8)에 기록될 수 있으며, 파일 끝을 알리기 위한 값들인 0x000001가 주소 필드(330-8) 및 레코드 필드(340-8)에 기록될 수 있으며, 더미 값들(예컨대, 0x0 또는 0xF)이 데이터 필드(350-8)에 기록될 수 있으며, 체크섬 값이 체크섬 필드(360-8)에 기록될 수 있다.
도 7은 몇몇 실시예에 따른 펌웨어 업그레이드 서버 및 펌웨어 업그레이드 클라이언트의 동작 방법을 설명하기 위한 도면이다.
이해의 편의를 위해, 도 2 및 5를 참조하여 펌웨어 업그레이드 서버 및 펌웨어 업그레이드 클라이언트의 동작 방법에 대한 몇몇 실시예를 설명하고자 한다.
펌웨어 업그레이드 서버(210)는 통신부(214)를 통하여 응용 프로그램의 시작을 알리는 데이터 블록(501)을 펌웨어 클라이언트(220)에게 송신한다(S702).
도 8a는 데이터 블록을 전송하는 메시지(이하 제1 메시지) 형식을 예시하며, 도 8b는 데이터 블록의 수신에 응답하는 메시지(이하 제2 메시지)의 형식을 예시한다.
제1 메시지는 펌웨어 업그레이드 서버(210)에 의해 송신되고, 제2 메시지는 펌웨어 업그레이드 클라이언트(210)에 의해 송신될 수 있다.
제1 메시지는 펌웨어 업그레이드용 데이터를 구성하는 데이터 블록 및 펌웨어 업그레이드용 데이터를 구성하는 데이터 블록들의 순서를 나타내는 시퀀스 번호(도 8에서 7번째 필드에 해당)를 패이로드(도 8a에서 각각 8번째 필드 및 7번째 필드에 해당)로 포함할 수 있다.
제2 메시지는 수신된 데이터 블록의 시퀀스 번호 및 수신된 데이터 블록에 대한 검증 결과에 해당하는 오류 코드 값을 패이로드(도 8b에서 각각 7번째 필드 및 8번째 필드에 해당)로 포함할 수 있다.
도 9는 일실시예에 따라 검증을 수행하여 오류 코드 값을 생성하는 방법을 예시하는 흐름도이다. 도 9의 실시예는 펌웨어 업그레이트 클라이언트(220)의 디코더(224)에 의해 수행될 수 있다.
도 10은 일실시예에 따라 오류 코드 처리를 수행하는 방법을 설명하기 위한 도면이다.
도 10의 실시예는 펌웨어 업그레이드 서버(210)에 의해 수행될 수 있다. 펌웨어 업그레이드 서버(210)는 응답(예컨대, 제2 메시지)을 수신한 경우, 응답에 포함된 오류 코드 값에 따라 다음에 전송할 데이터 블록을 결정 및 전송하며, 미리 설정된 시간 동안 응답을 수신하지 못한 경우, 이전에 전송한 데이터 블록을 재송신할 수 있다.
펌웨어 업그레이드 클라이언트(220)는 응용 프로그램의 시작을 알리는 데이터 블록(501)를 통신부(222)를 통하여 수신하고, 디코더(224)를 통하여 수신된 데이터 블록(501)에 대한 검증을 수행하고(S704), 검증 결과를 나타내는 오류 코드 값을 통신부(222)를 통하여 송신한다(S706).
펌웨어 업그레이드 서버(220)는 수신된 오류 코드 값을 기초로 오류 코드 처리를 수행한다(S708).
펌웨어 업그레이드 서버(220)는 원본 펌웨어의 이미지의 첫 페이지 데이터의 첫 라인 데이터를 전송하기 위한 데이터 블록(502)을 송신한다(S710).
펌웨어 업그레이드 클라이언트(220)는 수신되는 데이터 블록을 검증하고(S712), 검증 결과를 나타내는 오류 코드 값을 송신한다(S714). 오류 검출되지 않은 데이터 블록의 라인 데이터는 펌웨어 업그레이드 클라이언트(220)의 로컬 페이지 버퍼에 저장될 수 있다(S712).
펌웨어 업그레이드 서버(220)는 수신된 오류 코드 값을 기초로 오류 코드 처리를 수행한다(S716).
상술한 과정(S710, S712, ..., S716)과 마찬가지 원리로 S722, S724, ..., S736이 수행되어, 원본 펌웨어의 이미지의 첫 페이지 데이터의 첫 라인 데이터를 전송하기 위한 데이터 블록(502)이 전송 완료될 수 있다.
펌웨어 업그레이드 서버(220)는 원본 펌웨어의 이미지의 첫 페이지 데이터에 대한 오류 검출용 코드 값(PCRC)를 전송하기 위한 데이터 블록(503)을 송신한다(S738).
펌웨어 업그레이드 클라이언트(220)는 수신되는 데이터 블록 및 PCRC를 검증하고(S740), 검증 결과를 나타내는 오류 코드 값을 송신한다(S742). PCRC 오류가 발생되지 않은 경우, 펌웨어 업그레이드 클라이언트(220)의 디코더(224)는 로컬 페이지 버퍼에 저장된 해당 페이지 데이터를 제1 메모리의 다운로드용 영역(ADP_0 또는 ADP_1)에 기록한다(S740).
S740에서의 PCRC 검증은 로컬 페이지 버퍼에 저장된 해당 페이지 데이터에 대한 CRC 값을 산출하고, 산출된 CRC 값과 수신된 PCRC 값을 비교하여 수행될 수 있다.
펌웨어 업그레이드 서버(220)는 수신된 오류 코드 값을 기초로 오류 코드 처리를 수행한다(S744). 일례로, 펌웨어 업그레이드 서버(220)는, 수신된 오류 코드 값이 PCRC 오류를 나타내는 코드 값 6인 경우, 해당 페이지 데이터를 전송하기 위한 데이터 블록들을 순차적으로 재전송할 수 있다.
상술한 과정(S710, S712, ..., S744)과 마찬가지 원리로 S746 S750, ..., S754가 수행되어, 원본 펌웨어의 이미지 및 펌웨어 관련 데이터를 전송하기 위한 데이터 블록들이 전송 완료될 수 있다.
펌웨어 업그레이드 서버(220)는 부트로더 파라미터 값을 전송하기 위한 첫번째 데이터 블록(507)을 송신한다(S762).
펌웨어 업그레이드 클라이언트(220)는 수신되는 데이터 블록을 검증하고(S764), 검증 결과를 나타내는 오류 코드 값을 송신한다(S766). 오류 검출되지 않은 데이터 블록의 부트로더 파라미터 값은 펌웨어 업그레이드 클라이언트(220)의 제2 메모리(230)의 제어 영역에 저장될 수 있다(S764).
펌웨어 업그레이드 서버(220)는 수신된 오류 코드 값을 기초로 오류 코드 처리를 수행한다(S768).
상술한 과정(S762, S764, ..., S768)과 마찬가지 원리로 S770, S772, ..., S776이 수행되어, 부트로더 파라미터 값을 전송하기 위한 데이터 블록들이 전송 완료될 수 있다.
펌웨어 업그레이드 서버(210)는 파일 끝(EOF)를 나타내는 데이터 블록(508)을 펌웨어 클라이언트(220)에게 송신한다(S778).
펌웨어 업그레이드 클라이언트(220)는 수신되는 데이터 블록을 검증하고(S780), 검증 결과를 나타내는 오류 코드 값을 송신한다(S782). 오류 검출되지 않은 경우, 파일 다운로딩이 완료되며, 펌웨어 업그레이드 클라이언트(210)는 리셋 커맨드의 수신을 대기한다.
펌웨어 업그레이드 서버(220)는 수신된 오류 코드 값을 기초로 오류 코드 처리를 수행하되(S784), 수신된 응답이 오류 없음을 나타내는 경우, 리셋 커맨드를 송신한다(S786).
펌웨어 업그레이드 클라이언트(220)는 리셋 커맨드를 수신하여 응답을 송신하고(S788), 제2 메모리(230)의 제어 영역에 기록된 값들(예컨대, 도 6에 예시된 값들)을 독출하여, 후속 작업을 수행한다.
일례로, 펌웨어 업그레이드 클라이언트(220)는 제2 메모리(230)의 제어 영역에 기록된 값들로부터 원본 펌웨어의 이미지 및 펌웨어 관련 데이터가 저장된 제1 메모리(228)의 다운로드용 영역(ADP_0 또는 ADP_1)을 파악하고, 해당 다운로드용 영역(ADP_0 또는 ADP_1)으로부터 독출되는 원본 펌웨어의 이미지 및 펌웨어 관련 데이터에 대한 CRC 값을 생성하고, 생성된 CRC 값과 제2 메모리(230)의 제어 영역에 기록된 ACRC 값을 비교하여 ACRC 검증을 수행한다(S790).
펌웨어 업그레이드 클라이언트(220)는 검증 결과를 나타내는 오류 코드 값을 송신한다(S792).
오류 검출되지 않은 경우(S792), 펌웨어 업그레이드 클라이언트(220)는, 해당 다운로드용 영역(ADP_0 또는 ADP_1)으로부터 독출되는 원본 펌웨어의 이미지 및 펌웨어 관련 데이터를 각각 제1 메모리(228)의 실행 영역(ARP) 및 제2 메모리(230)의 실행 영역에 기록하고(S794), 하드웨어 재시작을 통하여(S596), 해당 응용 프로그램을 실행한다(S796).
당업자는 여기서 개시된 본 프로세스 및 방법 및 다른 프로세스 및 방법에 있어서, 그 프로세스 및 방법에서 실행되는 기능이 다른 순서에 따라 구현될 수 있음을 이해할 것이다. 또한, 개략 설명된 단계 및 동작은 예로서만 제공된 것이며, 여기서 개시된 실시예의 본질로부터 벗어나지 않으면서, 일부 단계 및 동작은 선택적이며, 더 적은 수의 단계 및 동작으로 조합될 수 있거나 추가적인 단계 및 동작으로 확장될 수 있다.
예시적 실시예에서, 본 개시에 기재된 동작, 프로세스 등의 어떤 것도 컴퓨터 판독가능 매체에 저장된 컴퓨터 판독가능 명령어로 구현될 수 있다. 컴퓨터 판독가능 명령어는, 모바일 장치의 프로세서, 네트워크 구성요소 및/또는 다른 어떤 컴퓨팅 장치에 의해 실행될 수 있다.
이러한 본원 발명인 방법 및 장치는 이해를 돕기 위하여 도면에 도시된 실시예를 참고로 설명되었으나, 이는 예시적인 것에 불과하며, 당해 분야에서 통상적 지식을 가진 자라면 이로부터 다양한 변형 및 균등한 타 실시예가 가능하다는 점을 이해할 것이다. 따라서, 본 발명의 진정한 기술적 보호 범위는 첨부된 특허청구범위에 의해 정해져야 할 것이다.
Claims (33)
- 원본 펌웨어의 이미지를 전송하기 위한 데이터 블록들을 생성하는 단계; 및
부트로더 파라미터 값을 전송하기 위한 데이터 블록을 생성하는 단계를 포함하는 펌웨어 업그레이드용 데이터를 생성하는 방법. - 제1항에 있어서,
상기 원본 펌웨어의 이미지는 펌웨어 업그레이드 클라이언트에 있는 제1 메모리의 실행 영역에 기록될 데이터이며,
상기 원본 펌웨어와 관련된 데이터(이하, 펌웨어 관련 데이터) - 상기 펌웨어 업그레이드 클라이언트에 있는 제2 메모리의 실행 영역에 기록될 데이터 - 를 전송하기 위한 적어도 하나의 데이터 블록을 생성하는 단계를 더 포함하는 펌웨어 업그레이드용 데이터를 생성하는 방법. - 제1항 또는 제2항에 있어서, 상기 원본 펌웨어의 이미지를 전송하기 위한 데이터 블록들을 생성하는 단계는
(a1) 상기 원본 펌웨어의 이미지로부터 미리 설정된 량의 데이터(이하, 라인 데이터)를 미리 설정된 개수만큼 순차적으로 추출하여, 추출된 라인 데이터 각각을 포함하는 데이터 블록을 생성하는 단계; 및
(a2) 상기 미리 설정된 개수만큼 추출된 라인 데이터들이 구성하는 데이터(이하, 페이지 데이터)에 대한 오류 검출용 코드 값을 포함하는 데이터 블록을 생성하는 단계를 포함하는 펌웨어 업그레이드용 데이터를 생성하는 방법. - 제3항에 있어서, 상기 원본 펌웨어의 이미지를 전송하기 위한 데이터 블록들을 생성하는 단계는,
상기 원본 펌웨어의 이미지를 구성하는 페이지가 복수인 경우, 상기 (a1) 단계 및 상기 (a2) 단계를 페이지 수만큼 반복 수행하여 복수의 페이지 데이터를 전송하기 위한 데이터 블록들을 생성하는 단계를 포함하는 펌웨어 업그레이드용 데이터를 생성하는 방법. - 제3항에 있어서,
상기 (a1) 단계는, 상기 원본 펌웨어의 이미지로부터 추출되는 데이터가 라인 데이터의 량보다 작거나, 상기 원본 펌웨어의 이미지로부터 추출되는 라인 데이터의 개수가 미리 설정된 페이지 데이터 량보다 작은 경우, 부족량의 데이터를 더미 데이터로 채워 페이지 데이터를 생성하고, 상기 생성된 페이지 데이터를 전송하기 위한 데이터 블록들을 생성하는 단계를 포함하고,
상기 (a2) 단계는, 상기 생성된 페이지 데이터에 대한 오류 검출용 코드 값을 포함하는 데이터 블록을 생성하는 단계를 포함하는 펌웨어 업그레이드용 데이터를 생성하는 방법. - 제2항에 있어서, 상기 펌웨어 관련 데이터를 전송하기 위한 적어도 하나의 데이터 블록을 생성하는 단계는
(b1) 상기 펌웨어 관련 데이터로부터 미리 설정된 량의 데이터(이하, 라인 데이터)를 미리 설정된 개수만큼 순차적으로 추출하여, 추출된 라인 데이터 각각을 포함하는 데이터 블록을 생성하는 단계; 및
(b2) 상기 미리 설정된 개수만큼 추출된 라인 데이터들이 구성하는 데이터(이하, 페이지 데이터)에 대한 오류 검출용 코드 값을 포함하는 데이터 블록을 생성하는 단계를 포함하는 펌웨어 업그레이드용 데이터를 생성하는 방법. - 제2항에 있어서,
상기 제1 메모리는 플래시(Flash) 메모리이고, 상기 제2 메모리는 이이피롬(Eletronically Erasable Programmable Read Only Memory, 이하 EEPROM)인 펌웨어 업그레이드용 데이터를 생성하는 방법. - 제1항에 있어서,
상기 생성되는 데이터 블록들은 인텔 헥스 형식을 따르는 펌웨어 업그레이드용 데이터를 생성하는 방법. - 제8항에 있어서,
상기 생성되는 데이터 블록들은 동일한 크기를 가지는 펌웨어 업그레이드용 데이터를 생성하는 방법. - 제2항에 있어서,
상기 생성되는 데이터 블록들은 인텔 헥스 형식을 따르고,
상기 부트로더 파라미터 값을 전송하기 위한 적어도 하나의 데이터 블록 각각은 상기 제2 메모리의 제어 영역에 상기 부트로더 파라미터 값을 기록하도록 상기 펌웨어 업그레이드 클라이언트에게 알리기 위한 전용 레코드 타입 값을 포함하는 펌웨어 업그레이드용 데이터를 생성하는 방법. - 제10항에 있어서,
상기 부트로더 파라미터 값을 전송하기 위한 적어도 하나의 데이터 블록 각각은 상기 제2 메모리의 제어 영역 중 상기 부트로더 파라미터 값이 기록되는 위치를 나타내는 주소 값을 포함하는 펌웨어 업그레이드용 데이터를 생성하는 방법. - 제2항에 있어서,
상기 부트로더 파라미터 값은 상기 원본 펌웨어의 이미지 및 상기 펌웨어 관련 데이터 전체에 대한 오류 검출용 코드 값을 포함하는 펌웨어 업그레이드용 데이터를 생성하는 방법. - 제2항에 있어서,
응용 프로그램 데이터의 시작을 알리기 위한 데이터 블록 - 상기 원본 펌웨어의 이미지 및 상기 펌웨어 관련 데이터를 전송하기 위한 데이터 블록들 보다 먼저 전송됨 - 을 생성하는 단계를 더 포함하는 펌웨어 업그레이드용 데이터를 생성하는 방법. - 제13항에 있어서,
상기 생성되는 데이터 블록들은 인텔 헥스 형식을 따르고,
상기 응용 프로그램 데이터의 시작을 알리기 위한 데이터 블록은 전송 시작을 알리기 위한 주소 값 및 레코드 타입 값을 포함하는 펌웨어 업그레이드용 데이터를 생성하는 방법. - 제13항에 있어서,
상기 생성되는 데이터 블록들은 인텔 헥스 형식을 따르고,
상기 응용 프로그램 데이터의 시작을 알리기 위한 데이터 블록은 상기 원본 펌웨어의 이미지 및 상기 펌웨어 관련 데이터가 임시 저장될 제1 메모리의 영역의 시작 주소 값을 포함하는 펌웨어 업그레이드용 데이터를 생성하는 방법. - 제2항에 있어서,
응용 프로그램 데이터의 끝을 알리기 위한 데이터 블록 - 상기 원본 펌웨어의 이미지 및 상기 펌웨어 관련 데이터를 전송하기 위한 데이터 블록들 보다 이후에 전송됨 - 을 생성하는 단계를 더 포함하고,
상기 생성되는 데이터 블록들은 인텔 헥스 형식을 따르고,
상기 응용 프로그램 데이터의 끝을 알리기 위한 데이터 블록은 응용 프로그램 데이터의 끝을 알리기 위한 주소 값 및 레코드 타입 값을 포함하는 펌웨어 업그레이드용 데이터를 생성하는 방법. - 펌웨어 업그레이드용 데이터 - 원본 펌웨어의 이미지를 전송하기 위한 데이터 블록들 및 부트로더 파라미터 값을 전송하기 위한 데이터 블록을 포함함 - 를 획득하는 단계; 및
상기 펌웨어 업그레이드용 데이터에 포함된 데이터 블록들을 순차적으로 펌웨어 업그레이드 클라이언트에게 송신하는 단계를 포함하는 펌웨어 업그레이드 서버의 동작 방법. - 제17항에 있어서,
상기 원본 펌웨어의 이미지는 상기 펌웨어 업그레이드 클라이언트에 있는 제1 메모리의 실행 영역에 기록될 데이터이며,
상기 펌웨어 업그레이드용 데이터는 상기 원본 펌웨어와 관련된 데이터(이하, 펌웨어 관련 데이터) - 상기 펌웨어 업그레이드 클라이언트에 있는 제2 메모리의 실행 영역에 기록될 데이터 - 을 전송하기 위한 적어도 하나의 데이터 블록을 더 포함하는 펌웨어 업그레이드 서버의 동작 방법. - 제17항 또는 제18항에 있어서,
상기 원본 펌웨어의 이미지는 적어도 하나의 페이지 데이터로 구성되고,
상기 적어도 하나의 페이지 데이터 각각은 복수의 라인 데이터 - 미리 설정된 량의 데이터 - 로 구성되고,
상기 원본 펌웨어의 이미지를 전송하기 위한 데이터 블록들은 라인 데이터를 포함하는 데이터 블록 및 페이지 데이터에 대한 오류 검출용 코드 값을 포함하는 데이터 블록을 포함하고,
상기 송신하는 단계는 상기 펌웨어 업그레이드 클라이언트로부터 페이지 데이터 오류를 통지 받는 것에 응답하여, 해당 페이지 데이터를 전송하기 위한 데이터 블록들을 순차적으로 재송신하는 단계를 포함하는 펌웨어 업그레이드 서버의 동작 방법. - 제19항에 있어서,
상기 라인 데이터를 포함하는 데이터 블록은 해당 라인 데이터가 저장될 메모리의 주소 값을 더 포함하고,
상기 송신하는 단계는 상기 펌웨어 업그레이드 클라이언트로부터 주소 오류를 통지 받는 것에 응답하여, 해당 라인 데이터를 전송하기 위한 데이터 블록을 재송신하는 단계를 포함하는 펌웨어 업그레이드 서버의 동작 방법. - 제18항에 있어서,
상기 펌웨어 관련 데이터는 적어도 하나의 페이지 데이터로 구성되고,
상기 적어도 하나의 페이지 데이터 각각은 복수의 라인 데이터 - 미리 설정된 량의 데이터 - 로 구성되고,
상기 펌웨어 관련 데이터를 전송하기 위한 데이터 블록들은 각 라인 데이터를 포함하는 데이터 블록 및 각 페이지 데이터에 대한 오류 검출용 코드 값을 포함하는 데이터 블록을 포함하고,
상기 송신하는 단계는 상기 펌웨어 업그레이드 클라이언트로부터 페이지 데이터 오류를 통지 받는 것에 응답하여, 해당 페이지 데이터를 전송하기 위한 데이터 블록들을 순차적으로 재송신하는 단계를 포함하는 펌웨어 업그레이드 서버의 동작 방법. - 제17항에 있어서,
상기 송신하는 단계는 파일 끝을 알리기 위한 데이터 블록을 송신하는 단계를 포함하고,
상기 파일 끝을 알리기 위한 데이터 블록을 송신한 후에 상기 펌웨어 업그레이드 클라이언트로부터 오류를 통지 받지 못한 경우, 상기 펌웨어 업그레이드 클라이언트에게 리셋 커맨드를 송신하는 단계를 더 포함하는 펌웨어 업그레이드 서버의 동작 방법. - 제18항에 있어서,
상기 부트로더 파라미터 값은 상기 원본 펌웨어의 이미지 및 상기 펌웨어 관련 데이터 전체에 대한 오류 검출용 코드 값을 포함하고,
상기 송신하는 단계는 상기 펌웨어 업그레이드 클라이언트로부터 오류 검출용 코드 값에 따른 오류를 통지 받는 것에 응답하여, 상기 펌웨어 업그레이드용 데이터에 포함된 데이터 블록들을 순차적으로 펌웨어 업그레이드 클라이언트에게 재송신하는 단계를 포함하는 펌웨어 업그레이드 서버의 동작 방법. - 펌웨어 업그레이드용 데이터 - 원본 펌웨어의 이미지를 전송하기 위한 데이터 블록들 및 부트로더 파라미터 값을 전송하기 위한 데이터 블록을 포함함 - 에 포함된 데이터 블록들을 펌웨어 업그레이드 서버로부터 수신하는 단계; 및
수신된 데이터 블록들을 기초로, 펌웨어 업그레이드를 수행하는 단계를 포함하는 펌웨어 업그레이드 클라이언트의 동작 방법. - 제24항에 있어서,
상기 펌웨어 업그레이드용 데이터는 상기 원본 펌웨어와 관련된 데이터(이하, 펌웨어 관련 데이터)를 전송하기 위한 적어도 하나의 데이터 블록을 포함하고,
상기 펌웨어 업그레이드를 수행하는 단계는, 수신된 원본 펌웨어의 이미지를 제1 메모리의 실행 영역에 기록하고, 수신된 펌웨어 관련 데이터를 제2 메모리의 실행 영역에 기록하는 단계를 포함하는 펌웨어 업그레이드 클라이언트의 동작 방법. - 제24항에 있어서,
상기 원본 펌웨어의 이미지는 적어도 하나의 페이지 데이터로 구성되고,
상기 적어도 하나의 페이지 데이터 각각은 복수의 라인 데이터 - 미리 설정된 량의 데이터 - 로 구성되고,
상기 원본 펌웨어의 이미지를 전송하기 위한 데이터 블록들은 라인 데이터를 포함하는 데이터 블록 및 페이지 데이터에 대한 오류 검출용 코드 값을 포함하는 데이터 블록을 포함하고,
상기 수신하는 단계는 수신된 오류 검출용 코드 값을 기초로 검출되는 페이지 데이터 오류를 상기 펌웨어 업그레이드 서버에 통지하여, 해당 페이지 데이터를 전송하기 위한 데이터 블록들을 재수신하는 단계를 포함하는 펌웨어 업그레이드 클라이언트의 동작 방법. - 제26항에 있어서,
상기 수신하는 단계는 수신된 라인데이터를 로컬 버퍼에 임시 저장하고, 오류 검출되지 않은 페이지 데이터를 상기 로컬 버퍼로부터 독출하여 상기 제1 메모리의 다운로드 영역에 기록하는 단계를 포함하는 펌웨어 업그레이드 클라이언트의 동작 방법. - 제25항에 있어서,
상기 펌웨어 관련 데이터는 적어도 하나의 페이지 데이터로 구성되고,
상기 적어도 하나의 페이지 데이터 각각은 복수의 라인 데이터 - 미리 설정된 량의 데이터 - 로 구성되고,
상기 펌웨어 관련 데이터를 전송하기 위한 데이터 블록들은 각 라인 데이터를 포함하는 데이터 블록 및 각 페이지 데이터에 대한 오류 검출용 코드 값을 포함하는 데이터 블록을 포함하고,
상기 수신하는 단계는 수신된 오류 검출용 코드 값을 기초로 검출되는 페이지 데이터 오류를 상기 펌웨어 업그레이드 서버에 통지하여, 해당 페이지 데이터를 전송하기 위한 데이터 블록들을 재수신하는 단계를 포함하는 펌웨어 업그레이드 클라이언트의 동작 방법. - 제24항에 있어서,
상기 펌웨어 업그레이드를 수행하는 단계는, 상기 펌웨어 업그레이트 서버로부터 리셋 커맨드를 수신하는 것에 응답하여 펌웨어 업그레이드를 수행하는 단계를 포함하는 펌웨어 업그레이드 클라이언트의 동작 방법. - 제25항에 있어서,
상기 부트로더 파라미터 값은 상기 원본 펌웨어의 이미지 및 상기 펌웨어 관련 데이터 전체에 대한 오류 검출용 코드 값을 포함하고,
상기 수신하는 단계는 상기 오류 검출용 코드 값을 기초로 검출되는 오류를 상기 펌웨어 업그레이드 서버에 통지하여, 상기 펌웨어 업그레이드용 데이터에 포함된 데이터 블록들을 재수신하는 단계를 포함하는 펌웨어 업그레이드 클라이언트의 동작 방법. - 제30항에 있어서,
상기 부트로더 파라미터 값은 상기 원본 펌웨어의 이미지 및 상기 펌웨어 관련 데이터 전체에 대한 오류 검출용 코드 값을 포함하고,
상기 수신하는 단계는 수신된 부트로더 파라미터 값을 상기 제2 메모리의 제어 영역에 저장하고, 수신된 원본 펌웨어의 이미지 및 펌웨어 관련 데이터를 상기 제1 메모리의 다운로드 영역에 저장하는 단계를 포함하고,
상기 펌웨어 업그레이드를 수행하는 단계는 상기 오류 검출용 코드 값을 기초로 오류가 검출되지 않는 경우, 상기 제1 메모리의 다운로드 영역으로부터 상기 원본 펌웨어의 이미지 및 상기 펌웨어 관련 데이터를 독출하여 각각 제1 및 제2 메모리의 실행 영역에 저장한 후, 하드웨어 재시작을 수행하는 단계를 포함하는 펌웨어 업그레이드 클라이언트의 동작 방법. - 원본 펌웨어의 이미지를 전송하기 위한 데이터 블록들; 및
부트로더 파라미터 값을 전송하기 위한 데이터 블록을 포함하는 펌웨어 업그레이드용 데이터를 수록한 컴퓨터로 읽을 수 있는 기록 매체. - 제32항에 있어서,
상기 원본 펌웨어의 이미지는 상기 펌웨어 업그레이드 클라이언트에 있는 제1 메모리의 실행 영역에 기록될 데이터이며,
상기 펌웨어 업그레이드용 데이터는 상기 원본 펌웨어와 관련된 데이터(이하, 펌웨어 관련 데이터) - 상기 펌웨어 업그레이드 클라이언트에 있는 제2 메모리의 실행 영역에 기록될 데이터 - 을 전송하기 위한 적어도 하나의 데이터 블록을 더 포함하는 컴퓨터로 읽을 수 있는 기록 매체.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR20130060369A KR20140139807A (ko) | 2013-05-28 | 2013-05-28 | 펌웨어 업그레이드 및 이를 위한 서버 및 클라이언트 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR20130060369A KR20140139807A (ko) | 2013-05-28 | 2013-05-28 | 펌웨어 업그레이드 및 이를 위한 서버 및 클라이언트 |
Publications (1)
Publication Number | Publication Date |
---|---|
KR20140139807A true KR20140139807A (ko) | 2014-12-08 |
Family
ID=52457938
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR20130060369A KR20140139807A (ko) | 2013-05-28 | 2013-05-28 | 펌웨어 업그레이드 및 이를 위한 서버 및 클라이언트 |
Country Status (1)
Country | Link |
---|---|
KR (1) | KR20140139807A (ko) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114466260A (zh) * | 2020-11-10 | 2022-05-10 | 青岛海信宽带多媒体技术有限公司 | 一种光模块升级方法及光模块 |
KR20230123859A (ko) | 2022-02-17 | 2023-08-24 | 고려대학교 산학협력단 | 정상 펌웨어의 설치를 위한 방법 |
CN118245092A (zh) * | 2024-05-28 | 2024-06-25 | 浙江正泰中自控制工程有限公司 | 一种安全控制平台多模块在线升级的方法 |
-
2013
- 2013-05-28 KR KR20130060369A patent/KR20140139807A/ko not_active Application Discontinuation
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114466260A (zh) * | 2020-11-10 | 2022-05-10 | 青岛海信宽带多媒体技术有限公司 | 一种光模块升级方法及光模块 |
CN114466260B (zh) * | 2020-11-10 | 2023-11-03 | 青岛海信宽带多媒体技术有限公司 | 一种光模块升级方法及光模块 |
KR20230123859A (ko) | 2022-02-17 | 2023-08-24 | 고려대학교 산학협력단 | 정상 펌웨어의 설치를 위한 방법 |
CN118245092A (zh) * | 2024-05-28 | 2024-06-25 | 浙江正泰中自控制工程有限公司 | 一种安全控制平台多模块在线升级的方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8996828B2 (en) | Systems and methods for migrating data | |
US11191049B1 (en) | Systems and methods for improving wireless performance | |
US10013166B2 (en) | Virtual tape library system | |
US9916199B2 (en) | Method and apparatus for an error tolerance aware data retention scheme in a storage device for multi-scale error tolerant data | |
CN111240722B (zh) | 空中升级固件的方法及其所应用的终端、服务器及系统 | |
WO2017028494A1 (zh) | 一种数据恢复的方法、存储的方法相应的装置及系统 | |
US9298592B2 (en) | Testing a software interface for a streaming hardware device | |
WO2017097106A1 (zh) | 一种文件差量的传输方法以及装置 | |
KR101983208B1 (ko) | 데이터 관리 방법, 노드, 그리고 데이터베이스 클러스터를 위한 시스템 | |
CN104021069A (zh) | 基于分布式虚拟机系统的软件性能测试的管理方法和系统 | |
JP2018521411A (ja) | ネットワークにおけるノードの設定管理 | |
WO2015067073A1 (zh) | 一种数据操作的方法和设备 | |
CN104750428A (zh) | 块储存存取和网关模块、储存系统和方法与内容递送装置 | |
KR20140139807A (ko) | 펌웨어 업그레이드 및 이를 위한 서버 및 클라이언트 | |
CN115016979A (zh) | 纠删码数据处理方法、装置及系统、存储介质、处理器 | |
TW201639339A (zh) | 嵌入式系統及其方法 | |
US9876644B2 (en) | Authenticating data packet based on hash image of the data packet in erasure coding-based data transmission | |
CN117573181A (zh) | 配电终端升级方法、装置、存储介质及电子设备 | |
CN117009147A (zh) | 一种云平台虚拟机的数据备份方法、装置和电子设备 | |
US9923669B2 (en) | Distributed Reed-Solomon codes for simple multiple access networks | |
US20230138713A1 (en) | Multi-stride packet payload mapping for robust transmission of data | |
CN106998355B (zh) | 电子设备间的数据传输方法、电子设备及数据传输系统 | |
CN115454711A (zh) | 一种分布式存储系统中纠删数据恢复的方法、装置及介质 | |
JP2016059012A (ja) | 受信装置、送信装置およびデータ転送システム | |
CN109491620B (zh) | 存储数据重写方法、装置、服务器及存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A201 | Request for examination | ||
E902 | Notification of reason for refusal | ||
AMND | Amendment | ||
E601 | Decision to refuse application | ||
AMND | Amendment | ||
E902 | Notification of reason for refusal |