KR20200057845A - 자율 주행 제어기에 소프트웨어 업데이트 위한 방법 - Google Patents

자율 주행 제어기에 소프트웨어 업데이트 위한 방법 Download PDF

Info

Publication number
KR20200057845A
KR20200057845A KR1020180140862A KR20180140862A KR20200057845A KR 20200057845 A KR20200057845 A KR 20200057845A KR 1020180140862 A KR1020180140862 A KR 1020180140862A KR 20180140862 A KR20180140862 A KR 20180140862A KR 20200057845 A KR20200057845 A KR 20200057845A
Authority
KR
South Korea
Prior art keywords
reprogramming
target host
handler
error
host
Prior art date
Application number
KR1020180140862A
Other languages
English (en)
Other versions
KR102119767B1 (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 KR1020180140862A priority Critical patent/KR102119767B1/ko
Publication of KR20200057845A publication Critical patent/KR20200057845A/ko
Application granted granted Critical
Publication of KR102119767B1 publication Critical patent/KR102119767B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/65Updates
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/64Protecting data integrity, e.g. using checksums, certificates or signatures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • G06F8/71Version control; Configuration management

Abstract

본 발명에 따른 자율 주행 제어기의 동작 방법은, 복수의 호스트들 중에서 타겟 호스트로 리프로그래밍 요청을 수신하는 단계, 상기 리프로그래밍 요청에 응답하여 리프로그래밍 데이터의 무결성을 검증하는 단계, 및 상기 검증된 리프로그래밍 데이터를 상기 타겟 호스트로 업데이트 하는 단계를 포함할 수 있다.

Description

자율 주행 제어기에 소프트웨어 업데이트 위한 방법{METHOD FOR UPDATING SOFTWARE IN AUTONOMOUS DRIVE CONTROLLER}
본 발명은 자율 주행 제어기의 소프트웨어 업데이트를 위한 방법에 관한 것이다.
자율 주행 제어기는 종합적인 주행 판단을 위해서 수많은 센서와 차량 내의 신호를 수집한다. 이러한 다양한 신호들이 실시간으로 처리되어야 차량 주행에서 문제없이 동작할 수 있고, 개발 중 혹은 실제 출시 이후에도 에러와 버그가 발생할 수 있는 가능성은 항시 존재하다. 이 때문에, 내부 응용프로그램의 지속적인 업데이트는 매우 중요하다.
공개특허: 10-2007-0093974, 공개일: 2007년 9월 19일, 제목: 모바일 터미널에 존재하는 소프트웨어 애플리케이션을 차량에 제공하기 위한 시스템. 일본 등록특허: JP 5108041, 등록일: 2012년 10월 12일, 제목: 통합 전원 부착 테레마틱 제어 시스템 및 제어 방법.
본 발명의 목적은 프로그램 업데이트의 신뢰성을 향상시키는 자율 주행 제어기의 소프트웨어 업데이트를 위한 방법을 제공하는데 있다.
본 발명의 실시 예에 따른 자율 주행 제어기의 소프트웨어 업데이트를 위한 방법은: 다중 호스트들 중에서 타겟 호스트로 리프로그래밍 요청을 수신하는 단계; 상기 리프로그래밍 요청에 응답하여 리프로그래밍 데이터의 무결성을 검증하는 단계; 및 상기 검증된 리프로그래밍 데이터를 상기 타겟 호스트로 업데이트 하는 단계를 포함할 수 있다.
실시 예에 있어서, 통신 핸들러에서 상기 리프로그래밍 요청 혹은 상기 리프로그래밍 데이터가 차량 내의 통신망, 무선 통신망, 혹은 보안이 적용된 전용 USB(universal serial bus) 장치를 통해 수신되는 것을 특징으로 한다.
실시 예에 있어서, 상기 리프로그래밍 요청이 수신될 때, 리프로그래밍 핸들러에서 상기 타겟 호스트에 대응하는 부트로더의 정상 동작을 멈추고, 상기 타겟 호스트를 리프로그래밍 상태로 진입시키는 것을 특징으로 한다.
실시 예에 있어서, 상기 타겟 호스트의 HSM(hardware security module)에서 상기 리프로그래밍 데이터의 무결성이 검증되는 것을 특징으로 한다.
실시 예에 있어서, 상기 타겟 호스트의 업데이트 에이전트에서 리프로그래밍 매니저 소프트웨어와 통신하며 리프로그래밍 프로세서를 진행하는 단계를 더 포함할 수 있다.
실시 예에 있어서, 상기 타겟 호스트의 펌웨어 인스톨러에서 상기 리프로그래밍 데이터가 상기 타겟 호스트에 적합하고, 버전이 정확한 지를 판별하는 단계를 더 포함할 수 있다.
실시 예에 있어서, 상기 리프로그래밍 데이터의 업데이트가 종료된 후에, 상기 펌웨어 인스톨러에서 리프로그래밍 매니저 소프트웨어로 리프로그래밍 프로세서의 완료를 전송하는 단계를 더 포함할 수 있다.
실시 예에 있어서, 상기 타겟 호스트로 업데이트 하는 단계는, 통신 핸들러에서 상기 리프로그래밍 요청을 수신한 후에, 리프로그래밍 핸들러에서 리프로그래밍 순서에 따라 상기 리프로그래밍 요청을 전송한 주체와 통신을 수행함으로써 상기 타겟 호스트에 대한 리프로그래밍을 진행하는 단계를 포함할 수 있다.
실시 예에 있어서, 상기 타겟 호스트로 업데이트 하는 단계는, 상기 리프로그래밍 핸들러에서 상기 리프로그래밍 데이터를 상기 타겟 호스트로 전송하는 단계를 더 포함할 수 있다.
실시 예에 있어서, 상기 리프로그래밍 핸들러의 에러 핸들러는 상기 리프로그래밍 데이터에 에러가 존재하거나, 인지되지 않는 불법적인 접근이 존재하거나, 전체 시스템의 전원이 불안정할 때 에러를 발생시키고, 전체 프로세서를 재시작 하거나 상기 불법적인 접근을 차단시키는 것을 특징으로 한다.
실시 예에 있어서, 상기 타겟 호스트의 업데이트 에이전트는 리프로그래밍 명령을 수신하면, 보안을 확인하고, 버전을 체크하고, 데이터 정합성을 확인하는 것을 특징으로 한다.
실시 예에 있어서, 상기 리프로그래밍 핸들러의 에러 핸들러는 통신 에러, 버전 에러, 정합성 에러, 타겟 에러, 펌웨어 인스톨러 에러, 보안 에러를 체크하고, 재시도의 경우에도 동일한 문제가 발생할 때 동작을 차단시키는 것을 특징으로 한다.
실시 예에 있어서, 상기 타겟 호스트의 종류에 따라 리프로그래밍 방식이 다른 것을 특징으로 한다.
실시 예에 있어서, 타겟 호스트의 인터럽트 핸들러에서 리프로그래밍 모드가 실행되고, 상기 타겟 호스트는 리셋 되지 않는 것을 특징으로 한다.
실시 예에 있어서, 타겟 호스트의 인터럽트 핸들러에서 대기하고, 메인 호스트에서 리프로그래밍 모드가 실행되고, 상기 타겟 호스트는 리셋 되지 않는 것을 특징으로 한다.
실시 예에 있어서, 상기 타겟 호스트가 FPGA(field programmable gate array)일 때, CPU(central processing unit)의 존재 여부에 따라 리프로그래밍 방식이 다른 것을 특징으로 한다.
본 발명의 실시 예에 따른 자율 주행 제어기의 소프트웨어 업데이트를 위한 방법은, 복수의 센서들 및 복수의 호스트들로 구성된 시스템에서 통합적으로 내부 에러를 발견 및 처리하여 실시간 소프트웨어 업데이트를 가능하게 할 수 있다.
이하에 첨부되는 도면들은 본 실시 예에 관한 이해를 돕기 위한 것으로, 상세한 설명과 함께 실시 예들을 제공한다. 다만, 본 실시예의 기술적 특징이 특정 도면에 한정되는 것은 아니며, 각 도면에서 개시하는 특징들은 서로 조합되어 새로운 실시 예로 구성될 수 있다.
도 1은 본 발명의 실시 예에 따른 자율 주행 제어기(100)를 예시적으로 보여주는 도면이다.
도 2는 본 발명의 실시 예에 따른 다중 호스트 리프로그래밍 제어 블록(110)을 예시적으로 보여주는 도면이다.
도 3는 본 발명의 실시 예에 따른 호스트(120)를 예시적으로 보여주는 도면이다.
도 4는 본 발명의 실시 예에 따른 자율 주행 제어기의 동작 방법을 예시적으로 보여주는 흐름도이다.
도 5는 본 발명의 실시 예에 다른 자율 주행 제어기의 동작을 좀 더 자세하게 보여주는 흐름도이다.
도 6은 본 발명의 호스트에 대한 실시 예들을 예시적으로 보여주는 도면이다.
아래에서는 도면들을 이용하여 본 발명의 기술 분야에서 통상의 지식을 가진 자가 용이하게 실시할 수 있을 정도로 본 발명의 내용을 명확하고 상세하게 기재할 것이다.
본 발명은 다양한 변경을 가할 수 있고 여러 가지 형태를 가질 수 있는바, 특정 실시 예들을 도면에 예시하고 본문에 상세하게 설명하고자 한다. 그러나 이는 본 발명을 특정한 개시 형태에 대해 한정하려는 것이 아니며, 본 발명의 사상 및 기술 범위에 포함되는 모든 변경, 균등물 내지 대체물을 포함하는 것으로 이해되어야 한다. 제 1, 제 2 등의 용어는 다양한 구성요소들을 설명하는데 사용될 수 있지만, 상기 구성요소들은 상기 용어들에 의해 한정되어서는 안 된다.
상기 용어들은 하나의 구성요소를 다른 구성요소로부터 구별하는 목적으로 사용될 수 있다. 예를 들어, 본 발명의 권리 범위로부터 이탈되지 않은 채 제 1 구성요소는 제 2 구성요소로 명명될 수 있고, 유사하게 제 2 구성요소도 제 1 구성요소로 명명될 수 있다. 어떤 구성요소가 다른 구성요소에 "연결되어" 있다거나 "접속되어" 있다고 언급된 때에는, 그 다른 구성요소에 직접적으로 연결되어 있거나 혹은 접속되어 있을 수도 있지만, 중간에 다른 구성요소가 존재할 수도 있다고 이해되어야 할 것이다. 반면에, 어떤 구성요소가 다른 구성요소에 "직접 연결되어" 있다거나 "직접 접속되어" 있다고 언급된 때에는, 중간에 다른 구성요소가 존재하지 않는 것으로 이해되어야 할 것이다.
구성요소들 간의 관계를 설명하는 다른 표현들, 즉 "~사이에"와 "바로 ~사이에" 혹은 "~에 이웃하는"과 "~에 직접 이웃하는" 등도 마찬가지로 해석되어야 한다. 본 출원에서 사용한 용어는 단지 특정한 실시 예를 설명하기 위해 사용된 것으로, 본 발명을 한정하려는 의도가 아니다. 단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한, 복수의 표현을 포함한다.
본 출원에서, "포함하다" 혹은 "가지다" 등의 용어는 실시된 특징, 숫자, 단계, 동작, 구성요소, 부분품 혹은 이들을 조합한 것이 존재함을 지정하려는 것이지, 하나 혹은 그 이상의 다른 특징들이나 숫자, 단계, 동작, 구성요소, 부분품 혹은 이들을 조합한 것들의 존재 혹은 부가 가능성을 미리 배제하지 않는 것으로 이해되어야 한다. 다르게 정의되지 않는 한, 기술적이거나 과학적인 용어를 포함해서 여기서 사용되는 모든 용어들은 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자에 의해 일반적으로 이해되는 것과 동일한 의미이다. 일반적으로 사용되는 사전에 정의되어 있는 것과 같은 용어들은 관련 기술의 문맥상 가지는 의미와 일치하는 의미인 것으로 해석되어야 하며, 본 출원에서 명백하게 정의하지 않는 한, 이상적이거나 과도하게 형식적인 의미로 해석되지 않는다.
본 발명의 실시 예에 따른 자율 주행 제어기 및 그것의 동작 방법은, 탑승자의 안전이 매우 중요한 자율 주행 시스템에 대해서 특히 여러 개의 하드웨어 처리 주체인 CPU(central processing unit), MCU(micro controller unit) 등으로 구성된 다중 호스트(multi-host) 환경에서 통합적으로 내부 로직 SW/Firmware(소프트웨어, 혹은 펌웨어)를 업데이트 할 수 있다.
자율 주행 제어기는 종합적인 주행 판단을 위해서 수많은 센서와 차량 내의 신호가 한데 모이는 제어기이다. 이러한 다양한 신호들이 실시간으로 처리되어야 차량 주행에서 문제없이 동작할 수 있고, 개발 중 혹은 실제 출시 이후에도 에러와 버그가 발생할 수 있는 가능성은 항시 존재하기 때문에, 내부 응용프로그램의 지속적인 업데이트는 매우 중요하다.
또한 이러한 자율 주행 시스템은 제어기 내에 다중의 호스트로 구성되어 있기 때문에 응용프로그램 로직의 종류와 형식 역시 각각의 호스트에 대해 독립적으로 구현이 되고, 에러 데이터의 검출 및 처리에 대한 부분 역시 독립적으로 무결성 처리를 지원한다. 각 호스트는 각각의 처리 주체(호스트)에 알맞도록 SW(software 혹은 firmware) 설치 관련 모듈을 포함한다. 리프로그래밍 과정은 정상 동작 상황이 아니기 때문에 그에 맞는 부트로더 역시 존재 하여야 한다. 또한 이를 통합적으로 처리하기 위해서 통합 제어 모듈이 상위에 배치되어야 한다. 이는 소프트웨어 블록의 형태를 띠고 있으므로 한 디바이스 호스트의 일부 혹은 별도의 호스트에 비치되어 전체를 관리할 수 있다.
도 1은 본 발명의 실시 예에 따른 자율 주행 제어기(100)를 예시적으로 보여주는 도면이다. 도 1을 참조하면, 자율 주행 제어기(100)는 다중 호스트 리프로그래밍 제어 블록(110) 및 복수의 호스트들(120, 130)을 포함할 수 있다. 도 2에 도시된 호스트의 개수는 2이지만, 본 발명의 호스트의 개수가 여기에 제한되지 않는다고 이해되어야 할 것이다.
본 발명의 실시 예에 따른 자율 주행 제어기(100)는 탑승자의 안전이 매우 중요한 자율 주행 시스템에 대해서 특히 여러 개의 하드웨어 처리 주체인 CPU, MCU 등으로 이루어진, 다중 호스트(Multi-Host)로 구성된 자율 주행 시스템에서 통합적으로 내부 로직 SW를 업데이트 하도록 구현될 수 있다.
또한, 자율 주행 제어기(100)는 종합적인 주행 판단을 위해서 수많은 센서와 차량 내의 신호를 수집하도록 구현될 수 있다. 또한, 자율 주행 제어기(100)는 다양한 신호들이 실시간으로 처리되어야 차량 주행에서 문제없이 동작하도록 내부 응용프로그램의 지속적인 업데이트를 수행할 수 있다. 또한, 자율 주행 시스템은 자율 주행 제어기(100) 내에 다중의 호스트로 구성될 수 있다. 이 때문에 응용프로그램 로직의 종류와 형식의 각각은 호스트에 대해 독립적으로 구현될 수 있다. 에러 데이터의 검출 및 처리는 독립적으로 무결성 처리를 지원할 수 있다.
각 호스트는 각각의 처리 주체(호스트)에 알맞도록 SW(Firmware) 설치 관련 모듈이 있다. 한편, 리프로그래밍 과정은 정상 동작 상황이 아니기 때문에 그에 맞는 부트로더 역시 존재한다. 또한 이를 통합적으로 처리하기 위해서 통합 제어 모듈(110)이 상위에 배치 될 수 있다. 이러한 다중 호스트 리프로그래밍 제어 모듈(100)은 소프트웨어 블록의 형태를 띄고 있으므로 한 디바이스 호스트의 일부 혹은 별도의 호스트에 비치되어 자율 주행 제어기(100)의 전체를 관리할 수 있다.
본 발명의 실시 예에 따른 자율 주행 제어기(100)는, 복수의 센서들 및 복수의 호스트들로 구성된 시스템에서 통합적으로 내부 에러를 발견 및 처리하여 실시간 소프트웨어 업데이트를 가능하게 할 수 있다.
도 2는 본 발명의 실시 예에 따른 다중 호스트 리프로그래밍 제어 블록(110)을 예시적으로 보여주는 도면이다. 도 2를 참조하면, 다중 호스트 리프로그래밍 제어 블록(110)은, 통신 핸들러(111)와 리프로그래밍 핸들러(112)를 포함할 수 있다.
다중 호스트 리프로그래밍 제어 블록(110)은 HW로 결선이 존재하는 SW의 집합체이므로 하나의 Host를 전담으로 정해서 탑재할 수 있고, 전담하지 않고 어느 하나의 Host에 위치시켜도 무방하다. 단 이 경우, 프로그램 메모리에 전담하는 영역이 존재하여야 한다.
통신 핸들러(111)의 경우 외부에서 리프로그래밍 요청이 들어올 경우 1차적으로 응답을 담당할 수 있다.
리프로그래밍은 CAN(controller area network), Ethernet 등과 같은 차량 내의 통신망을 이용하거나, Wi-Fi, 4G, 5G 등의 외부 무선 통신망을 이용하거나, 및 보안이 적용된 전용 USB(universal serial bus) 등으로 이용할 수 있다. 따라서 통신 핸들러(111)는 이들을 처리할 수 있는 드라이버를 내장하고 있고, 리프로그래밍 핸들러(112)가 외부 리프로그래밍 처리 주체와 통신할 시 이러한 드라이버를 통해 무결성 있는 통신을 진행 할 수 있다.
리프로그래밍 핸들러(112)는 요청이 들어온 이후부터 모든 리프로그래밍 과정을 전담할 수 있다. 리프로그래밍 핸들러(112)는 내부적으로 관리 SW와 에러 핸들러(error handler)로 구성될 수 있다. 관리 SW는 차량 OEM 회사에서 이미 정해져 있는 리프로그래밍 프로세스(process)의 순서에 따라 요청 주체와 통신을 진행하며 리프로그래밍을 진행하며, 실제로 업데이트 해야 할 리프로그래밍 데이터를 타겟 호스트에 전달할 수 있다.
이러한 프로세스에서 중간에 통신이 중단되거나, 리프로그래밍 데이터에 에러가 존재한다든지, 인지되지 않은 접근이 중간에 존재한다든지(해킹 등), 전원이 불안정하여 전체 시스템이 꺼진다든지 등의 에러가 발생할 수 있다. 이 경우 에러 핸들러는 중간 상황을 저장하고 체크하면서 전체 프로세스를 재시작 하거나, 인지되지 않은 접근의 경우 차단하는 식으로 발생하는 에러 상황을 담당할 수 있다.
도 3는 본 발명의 실시 예에 따른 호스트(120)를 예시적으로 보여주는 도면이다. 리프로그래밍이 진행되어야 할 타겟 호스트(120)는 1차적으로 리프로그래밍 핸들러(112)에 의해 부트로더(bootloader; 121)가 정상동작을 멈추고 리프로그래밍 상태(status)로 진입하도록 조치할 수 있다. 이후 타겟 호스트(120)는 부트로더(121) 안에 존재하는 하나의 어플리케이션 SW(application sw)인 업데이트 에이전트(update agent; 122)가 리프로그래밍 관리 SW(Reprogramming manager SW)와 통신하며 세부 리프로그래밍 프로세스(process)를 진행할 수 있다.
인지되지 않은 접근 및 해킹 및 보안 위험성이 내재된 SW의 접근 및 설치를 차단하기 위해, 각 호스트는 칩 내부에 존재하는 보안 모듈인 HSM(hardware security module; 123)을 포함할 수 있다. 리프로그래밍의 시작과 끝에 한 번씩 HSM을 통하여 보안 체크를 할 수 있다.
이러한 프로세스를 거치면서 통신 정합성 및 보안 체크를 거친 후, 펌웨어 인스톨러(firmware Installer; 124)는 현재 연결된 호스트에 들어오게 될 데이터가 정확한 타겟에 맞고, 버전 역시 정확한지 체크를 진행할 수 있다.
이러한 과정이 끝나면, 외부에서 다중 호스트 리프로그래밍 제어 블록(110)을 거쳐 펌웨어 데이터가 호스트(A)로 전송될 수 있다. 펌웨어 인스톨러(124)는 실제 데이터를 호스트 내부의 SW 저장공간에 데이터를 덮어씌워 업데이트를 진행할 수 있다.
실시 예에 있어서, 업데이트가 종료되면, 동일한 방식으로 HSM(123)의 보안 체크 및 업데이트 에이전트(122)의 데이터 정합성 체크를 마치고, 최종적으로 리프로그래밍 매니저(reprogramming manager)에 리프로그래밍 프로세스의 완료를 알리고 전체 시스템 리셋(reset) 명령을 주면서 리프로그래밍 프로세스를 종료할 수 있다.
도 4는 본 발명의 실시 예에 따른 자율 주행 제어기의 동작 방법을 예시적으로 보여주는 흐름도이다. 도 1 내지 도 4를 참조하면, 자율 주행 제어기(100)의 동작 방법을 다음과 같이 진행될 수 있다.
다중 호스트 리프로그래밍 제어 블록(110)에서 다중 호스트 중에서 어느 하나의 호스트로 리프로그래밍 요청이 수신될 수 있다(S110). 타겟 호스트의 드라이버에서 리프로그래밍 요청에 대응하는 리프로그래밍 데이터의 무결성이 검증될 수 있다(S120). 다중 호스트 리프로그래밍 제어 블록(110)에서 타겟 호스트로 리프로그래밍 데이터를 전송하여 업데이트시킬 수 있다(S130).
본 발명에 따른 단계들 및/또는 동작들은 기술분야의 통상의 기술자에 의해 이해될 수 있는 것과 같이, 다른 순서로, 또는 병렬적으로, 또는 다른 에포크(epoch) 등을 위해 다른 실시 예들에서 동시에 일어날 수 있다.
실시 예에 따라서는, 단계들 및/또는 동작들의 일부 또는 전부는 하나 이상의 비-일시적 컴퓨터-판독가능 매체에 저장된 명령, 프로그램, 상호작용 데이터 구조(interactive data structure), 클라이언트 및/또는 서버를 구동하는 하나 이상의 프로세서들을 사용하여 적어도 일부가 구현되거나 또는 수행될 수 있다. 하나 이상의 비-일시적 컴퓨터-판독가능 매체는 예시적으로 소프트웨어, 펌웨어, 하드웨어, 및/또는 그것들의 어떠한 조합일 수 있다. 또한, 본 명세서에서 논의된 "모듈"의 기능은 소프트웨어, 펌웨어, 하드웨어, 및/또는 그것들의 어떠한 조합으로 구현될 수 있다.
본 발명의 실시 예들의 하나 이상의 동작들/단계들/모듈들을 구현/수행하기 위한 하나 이상의 비-일시적 컴퓨터-판독가능 매체 및/또는 수단들은 ASICs(application-specific integrated circuits), 표준 집적 회로들, 마이크로 컨트롤러를 포함하는, 적절한 명령들을 수행하는 컨트롤러, 및/또는 임베디드 컨트롤러, FPGAs(field-programmable gate arrays), CPLDs(complex programmable logic devices), 및 그와 같은 것들을 포함할 수 있지만, 여기에 한정되지는 않는다.
도 5는 본 발명의 실시 예에 다른 자율 주행 제어기의 동작을 좀 더 자세하게 보여주는 흐름도이다. 도 5를 참조하면, 자율 주행 제어기(100)의 동작은, 업데이트 에이전트에서 호스트 내부 동작(S210), 리프로그래밍 핸들러에서 진행하는 제어기 내부 동작(S220)과 에러 핸들러에서 진행하는 제어기 내부 동작(S230)을 포함할 수 있다.
기본적으로 외부 리프로그래밍 요청하는 주체(USB, 무선/유선 통신망, 차량 내부 통신망 등)의 요청에 대한 응답을 리프로그래밍 핸들러가 주고, 후속 단계들을 차례차례 주고받는 형식으로 진행될 수 있다.
자율주행 시스템은 다중 호스트로 동작하기 때문에 리프로그래밍 역시 여러 가지 시나리오가 가능하다. 예를 들어, MCU의 리프로그래밍을 위해 AP(application processor)와 FPGA(field programmable gate array) 등의 부분은 어떤 상태에서 대기해야 하는지 등이 될 수 있다. 따라서 이러한 자율주행 시스템은 다양한 상황을 대비한 매니저 SW가 내장 될 수 있다.
리프로그래밍 핸들러는 시스템 레벨에서 전체 프로세스를 관리하는 역할을 수행할 수 있다. 각 host 내부에 실제로 리프로그래밍 작업을 관리하는 모듈이 필요하다. 여기서는 업데이트 에이전트(update agent)라고 표기한다. 이 업데이트 에이전트는 host의 종류에 따라 부트로더 형식 혹은 특정 모드의 SW의 형식을 띄게 될 수 있다.
이 에이전트 모듈은 형식에 상관없이 하는 행동은 동일할 수 있다. 해당 Host의 리프로그래밍 명령을 핸들러가 수신하면, 업데이트 에이전트는, HSM을 통한 보안 확인, 버전 체크, 타겟 호스트 확인, 데이터 전송 및 내부 저장, 전송 데이터 정합성 확인, 펌웨어 인스톨러의 실제 리프로그래밍 수행, HSM을 통한 보안 확인 등의 직접적인 작업이 수행될 수 있다.
또한 리프로그래밍 핸들러는 항시 에러를 감시하는 일종의 watchdog 모듈을 포함할 수 있다. 리프로그래밍 요청이 수신될 때, watchdog 모듈은 각 단계에서 발생하는 있는 에러를 체크하고 문제가 발생할 때 대응을 수행할 수 있다. 이 후에, 어디에서 리프로그래밍이 진행되는 지가 판별될 수 있다. 해당하는 호스트에 따른 인터럽트 전송 및 인터럽트 행동 필요시 해당 호스트가 리셋 될 수 있다. 이후 리프로그래밍 핸들러 응답은 리프로그래밍 시작 가능하다는 내용을 포함할 수 있다. 이후 호스트 내부 동작으로써 업데이트 에이전트에 의해 리프로그래밍이 진행될 수 있다. 리프로그래밍이 종료된 후에 관련 내용은 리프로그램 핸들러의 응답에 포함될 수 있다.
또한, 에러 핸들러는 각 단계에서 발생할 수 있는 에러를 체크하고, 문제가 발생할 때 대응할 수 있다. 예를 들면, 통신 에러, 버전 에러, 정합성 에러, 타겟 에러, F/W 인스톨러 에러, 보안 에러의 경우에, 리프로그래밍 자체는 취소되거나 차단될 수 있다. 실시 예에 있어서, 통신 에러의 경우, 차량 진단 보고 및 리프로그래밍이 취소 될 수 있다. 실시 예에 있어서, 버전 에러의 경우, 리프로그래밍 툴 에러 메시지가 전송될 수 있다. 실시 예에 있어서, 정합성 에러의 경우, 데이터 다운로드 재시도 후 다시 체크 동작이 수행될 수 있다. 실시 예에 있어서, 타겟 에러의 경우, 타겟 호스트 리셋 및 현 단계부터 재시도가 수행될 수 있다. 실시 예에 있어서, F/W 인스톨러 에러의 경우, 재시도 및 안 될 경우 에러가 보고될 수 있다. 실시 예에 있어서, 보안 에러의 경우, 재시도 및 해킹 시도로 보고, 동작이 차단될 수 있다.
실시 예에 있어서, 재시도의 경우 같은 문제 반복 발생시 동작이 차단될 수 있다.
하지만, 리프로그래밍 중간에 전원이 끊어져 중단되었거나, CRC등 정합성에 문제가 있는 경우, 그리고 다운로드 후 리프로그래밍 중 문제가 생긴 경우에서는 리프로그래밍을 재시도를 함으로써 정상 과정으로 되돌아갈 수 있다. 이 때문에 차단보다 재시도를 일정 시도를 해본 후, 같은 문제가 반복될 시 에러가 보고되고, 프로세스가 중단될 수 있다.
도 6은 본 발명의 호스트에 대한 실시 예들을 예시적으로 보여주는 도면이다. 도 6에 도시된 바와 같이, 리프로그래밍 동작은 다양한 호스트들에서 진행될 수 있다. 자율주행 시스템을 구성하는 호스트들 차량용 MCU, AP, FPGA 등 다양한 프로세서들을 포함할 수 있다. 각각의 호스트들은 리프로그래밍 방식도 서로 다를 수 있다.
기본적으로 외부에서 리프로그래밍 요청을 하게 되면 이는 인터럽트 방식으로 시스템에 전달될 수 있다. 각 호스트들은 각기 다른 방식으로 구성되어 있기에 그에 대한 핸들링 역시 다를 수 있다.
실시 예에 있어서, MCU의 경우에, 보통 부트로더에 리프로그래밍 모듈이 존재하고, 재부팅시에 리프로그래밍 모드로 빠져 부트로더에 멈춘 상태에서 리프로그래밍이 진행될 수 있다.
실시 예에 있어서, AP의 경우에 구현되는 방식에 따라 다르지만, 보통 내장된 OS(operating system)가 동작하는 상황에서 리프로그래밍을 진행하기 때문에 리셋을 하지 않고 SW가 동작하는 상황에서 곧바로 리프로그래밍이 가능하다. 하지만 기능안전 등을 이유로 리프로그래밍을 수행하는 주체는 다른 호스트가 될 수도 있다. 이러한 방식의 차이는 칩 제조사마다 다를 수 있다.
실시 예에 있어서, FPGA의 경우 CPU(central processing unit) 코어가 붙어있을 수도, 없을 수도 있다. 이 때문에 CPU 코어가 붙어있는 경우는 AP와 동일하게 리프로그래밍을 진행할 수 있다. 이는 CPU에 리프로그래밍 로직을 넣을 수 있기 때문이다. 하지만 CPU가 부재한 경우는 AP의 경우2처럼 다른 호스트에서 리프로그래밍을 담당을 할 수 밖에 없다.
따라서 이러한 다양한 상황을 파라미터화 시켜 전체 시스템 리프로그래밍 기능에 리스트로 넣어, 자율주행 시스템을 다른 호스트들의 조합이 달라지더라도 파라미터 및 서로간의 연결성만 간단하게 수정함으로써 전체 시스템의 리프로그래밍 기능이 구현될 수 있다.
한편, 상술 된 본 발명의 내용은 발명을 실시하기 위한 구체적인 실시 예들에 불과하다. 본 발명은 구체적이고 실제로 이용할 수 있는 수단 자체뿐 아니라, 장차 기술로 활용할 수 있는 추상적이고 개념적인 아이디어인 기술적 사상을 포함할 것이다.
100: 자율 주행 제어기
110: 다중 호스트 리프로그래밍 제어 블록
120, 130: 호스트
111: 통신 핸들러
112: 리프로그래밍 핸들러
121: 부트로더
122: 업데이트 에이전트
123: HSM
124: 펌웨어 인스톨러

Claims (16)

  1. 자율 주행 제어기의 동작 방법에 있어서:
    복수의 호스트들 중에서 타겟 호스트로 리프로그래밍 요청을 수신하는 단계;
    상기 리프로그래밍 요청에 응답하여 리프로그래밍 데이터의 무결성을 검증하는 단계; 및
    상기 검증된 리프로그래밍 데이터를 상기 타겟 호스트로 업데이트 하는 단계를 포함하는 방법.
  2. 제 1 항에 있어서,
    통신 핸들러에서 상기 리프로그래밍 요청 혹은 상기 리프로그래밍 데이터가 차량 내의 통신망, 무선 통신망, 혹은 보안이 적용된 전용 USB(universal serial bus) 장치를 통해 수신되는 것을 특징으로 하는 방법.
  3. 제 1 항에 있어서,
    상기 리프로그래밍 요청이 수신될 때, 리프로그래밍 핸들러에서 상기 타겟 호스트에 대응하는 부트로더의 정상 동작을 멈추고, 상기 타겟 호스트를 리프로그래밍 상태로 진입시키는 것을 특징으로 하는 방법.
  4. 제 1 항에 있어서,
    상기 타겟 호스트의 HSM(hardware security module)에서 상기 리프로그래밍 데이터의 무결성이 검증되는 것을 특징으로 하는 방법.
  5. 제 4 항에 있어서,
    상기 타겟 호스트의 업데이트 에이전트에서 리프로그래밍 매니저 소프트웨어와 통신하며 리프로그래밍 프로세서를 진행하는 단계를 더 포함하는 방법.
  6. 제 4 항에 있어서,
    상기 타겟 호스트의 펌웨어 인스톨러에서 상기 리프로그래밍 데이터가 상기 타겟 호스트에 적합하고, 버전이 정확한 지를 판별하는 단계를 더 포함하는 방법.
  7. 제 6 항에 있어서,
    상기 리프로그래밍 데이터의 업데이트가 종료된 후에, 상기 펌웨어 인스톨러에서 리프로그래밍 매니저 소프트웨어로 리프로그래밍 프로세서의 완료를 전송하는 단계를 더 포함하는 방법.
  8. 제 1 항에 있어서,
    상기 타겟 호스트로 업데이트 하는 단계는,
    통신 핸들러에서 상기 리프로그래밍 요청을 수신한 후에, 리프로그래밍 핸들러에서 리프로그래밍 순서에 따라 상기 리프로그래밍 요청을 전송한 주체와 통신을 수행함으로써 상기 타겟 호스트에 대한 리프로그래밍을 진행하는 단계를 포함하는 방법.
  9. 제 8 항에 있어서,
    상기 타겟 호스트로 업데이트 하는 단계는,
    상기 리프로그래밍 핸들러에서 상기 리프로그래밍 데이터를 상기 타겟 호스트로 전송하는 단계를 더 포함하는 방법.
  10. 제 8 항에 있어서,
    상기 리프로그래밍 핸들러의 에러 핸들러는 상기 리프로그래밍 데이터에 에러가 존재하거나, 인지되지 않는 불법적인 접근이 존재하거나, 전체 시스템의 전원이 불안정할 때 에러를 발생시키고, 전체 프로세서를 재시작 하거나 상기 불법적인 접근을 차단시키는 것을 특징으로 하는 방법.
  11. 제 8 항에 있어서,
    상기 타겟 호스트의 업데이트 에이전트는 리프로그래밍 명령을 수신하면, 보안을 확인하고, 버전을 체크하고, 데이터 정합성을 확인하는 것을 특징으로 하는 방법.
  12. 제 8 항에 있어서,
    상기 리프로그래밍 핸들러의 에러 핸들러는 통신 에러, 버전 에러, 정합성 에러, 타겟 에러, 펌웨어 인스톨러 에러, 보안 에러를 체크하고, 재시도의 경우에도 동일한 문제가 발생할 때 동작을 차단시키는 것을 특징으로 하는 방법.
  13. 제 8 항에 있어서,
    상기 타겟 호스트의 종류에 따라 리프로그래밍 방식이 다른 것을 특징으로 하는 방법.
  14. 제 13 항에 있어서,
    타겟 호스트의 인터럽트 핸들러에서 리프로그래밍 모드가 실행되고,
    상기 타겟 호스트는 리셋 되지 않는 것을 특징으로 하는 방법.
  15. 제 13 항에 있어서,
    타겟 호스트의 인터럽트 핸들러에서 대기하고, 메인 호스트에서 리프로그래밍 모드가 실행되고,
    상기 타겟 호스트는 리셋 되지 않는 것을 특징으로 하는 방법.
  16. 제 13 항에 있어서,
    상기 타겟 호스트가 FPGA(field programmable gate array)일 때, CPU(central processing unit)의 존재 여부에 따라 리프로그래밍 방식이 다른 것을 특징으로 하는 방법.
KR1020180140862A 2018-11-15 2018-11-15 자율 주행 제어기에 소프트웨어 업데이트 위한 방법 KR102119767B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020180140862A KR102119767B1 (ko) 2018-11-15 2018-11-15 자율 주행 제어기에 소프트웨어 업데이트 위한 방법

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020180140862A KR102119767B1 (ko) 2018-11-15 2018-11-15 자율 주행 제어기에 소프트웨어 업데이트 위한 방법

Publications (2)

Publication Number Publication Date
KR20200057845A true KR20200057845A (ko) 2020-05-27
KR102119767B1 KR102119767B1 (ko) 2020-06-05

Family

ID=70910851

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020180140862A KR102119767B1 (ko) 2018-11-15 2018-11-15 자율 주행 제어기에 소프트웨어 업데이트 위한 방법

Country Status (1)

Country Link
KR (1) KR102119767B1 (ko)

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20070093974A (ko) 2007-06-08 2007-09-19 바이에리셰 모토렌 베르케 악티엔게젤샤프트 모바일 터미널에 존재하는 소프트웨어 애플리케이션을차량에 제공하기 위한 시스템
JP5108041B2 (ja) 2003-07-23 2012-12-26 エス.フェルナンデス デニス 統合電源付きテレマティック制御システム及び制御方法
KR101470168B1 (ko) * 2013-06-14 2014-12-05 현대자동차주식회사 제어기 내 cpu의 리프로그래밍 방법
KR20170049738A (ko) * 2015-10-28 2017-05-11 현대오트론 주식회사 다수의 차량에 대한 리프로그래밍 방법
KR101779823B1 (ko) * 2016-05-10 2017-10-10 재단법인대구경북과학기술원 자율주행차량의 제어 모드 전환 방법 및 그 장치

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5108041B2 (ja) 2003-07-23 2012-12-26 エス.フェルナンデス デニス 統合電源付きテレマティック制御システム及び制御方法
KR20070093974A (ko) 2007-06-08 2007-09-19 바이에리셰 모토렌 베르케 악티엔게젤샤프트 모바일 터미널에 존재하는 소프트웨어 애플리케이션을차량에 제공하기 위한 시스템
KR101470168B1 (ko) * 2013-06-14 2014-12-05 현대자동차주식회사 제어기 내 cpu의 리프로그래밍 방법
KR20170049738A (ko) * 2015-10-28 2017-05-11 현대오트론 주식회사 다수의 차량에 대한 리프로그래밍 방법
KR101779823B1 (ko) * 2016-05-10 2017-10-10 재단법인대구경북과학기술원 자율주행차량의 제어 모드 전환 방법 및 그 장치

Also Published As

Publication number Publication date
KR102119767B1 (ko) 2020-06-05

Similar Documents

Publication Publication Date Title
US20210311724A1 (en) Updating system, electronic control unit, updating management device, and updating management method
US20180341476A1 (en) Software updating device, software updating system, and software updating method
US10585755B2 (en) Electronic apparatus and method for restarting a central processing unit (CPU) in response to detecting an abnormality
US20030106051A1 (en) System and method for high availability firmware load
KR20120091078A (ko) 다중 서브시스템들을 갖는 엘리베이터 제어 시스템의 원격 접근
US10216550B2 (en) Technologies for fast boot with adaptive memory pre-training
US10037170B2 (en) Motherboard and a method for boot-up
US20060150002A1 (en) Starting control method, duplex platform system, and information processor
US8601215B2 (en) Processor, server system, and method for adding a processor
KR102119767B1 (ko) 자율 주행 제어기에 소프트웨어 업데이트 위한 방법
CN114064091A (zh) Ota升级控制方法、装置、电子设备及自动驾驶车辆
CN107391174B (zh) 一种系统在线升级的控制方法及控制装置
CN111857303A (zh) 一种fpga复位方法、装置、系统和电子设备
CN115904793B (zh) 一种基于多核异构系统的内存转存方法、系统及芯片
KR102109125B1 (ko) Autosar 기반 차량 ecu 상태 관리 방법
US20230033947A1 (en) Memory system with accessible storage region to gateway
CN111505977B (zh) 功能辅助调试方法、功能调试方法、装置、系统及介质
KR20130022804A (ko) 리프로그래밍 제어모듈 및 이를 이용한 리프로그래밍 시스템 및 방법
US11650794B2 (en) Electronic control apparatus
US10176142B2 (en) Techniques of accessing BMC terminals through serial port
JP3915411B2 (ja) 車両用電子制御装置
US20200406842A1 (en) Vehicle Control Apparatus and Method for Rewriting Program Therefor
US6760863B1 (en) CPU unit and run alternative control method of programmable controller
US20230350667A1 (en) Electronic control device, reprogram execution method, and non-transitory computer readable storage medium
CN115599631A (zh) 一种部件监控方法、装置、电子设备及存储介质

Legal Events

Date Code Title Description
E701 Decision to grant or registration of patent right
GRNT Written decision to grant