KR100996167B1 - 전자제어유니트의 메모리 프로그램방법 - Google Patents

전자제어유니트의 메모리 프로그램방법 Download PDF

Info

Publication number
KR100996167B1
KR100996167B1 KR1020050054123A KR20050054123A KR100996167B1 KR 100996167 B1 KR100996167 B1 KR 100996167B1 KR 1020050054123 A KR1020050054123 A KR 1020050054123A KR 20050054123 A KR20050054123 A KR 20050054123A KR 100996167 B1 KR100996167 B1 KR 100996167B1
Authority
KR
South Korea
Prior art keywords
program
electronic control
control unit
download
signal
Prior art date
Application number
KR1020050054123A
Other languages
English (en)
Other versions
KR20060134446A (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 KR1020050054123A priority Critical patent/KR100996167B1/ko
Publication of KR20060134446A publication Critical patent/KR20060134446A/ko
Application granted granted Critical
Publication of KR100996167B1 publication Critical patent/KR100996167B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • 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
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • G06F9/44589Program code verification, e.g. Java bytecode verification, proof-carrying code

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 Hardware Design (AREA)
  • Computer Security & Cryptography (AREA)
  • Quality & Reliability (AREA)
  • Stored Programmes (AREA)

Abstract

본 발명은 전자제어유니트의 메모리 프로그램방법에 관한 것으로, 호스트 피씨, 캔(CAN) 통신망, 복수의 전자제어유니트를 구비한 전자제어유니트의 메모리 프로그램방법에 있어서, (a) 상기 호스트 피씨에서 상기 복수의 전자제어유니트중 프로그램을 다운로드하기 위한 전자제어유니트를 활성화시키는 단계와; (b) 상기 (a)단계에서 활성화된 전자제어유니트로 프로그램 다운로드요청신호를 상기 캔(CAN) 통신망을 통해 브러드캐스트하여 상기 전제어유니트에서 프로그램을 다운로드한 후 다운로드완료신호를 상기 캔(CAN) 통신망을 통해 상기 호스트 피씨로 전송하는 단계와; (c) 상기 (b)단계에서 전송된 프로그램 다운로드완료신호에 따라 호스트 피씨에서 상기 캔(CAN) 통신망을 통해 브러드캐스트된 프로그램 검증요청신호를 상기 캔(CAN) 통신망을 통해 브러드캐스트하여 상기 전자제어유니트에서 다운로드된 프로그램을 검증한 후 검증완료신호를 상기 캔(CAN) 통신망을 통해 상기 호스트 피씨로 전송하는 단계를 포함하여 이루어지며, ECU 메모리 프로그래밍 동안의 폴트(fault)에 의해 발생하는 인컴플리트 어플레케이션(incomplete application)과 어플리케이션 인캐퍼블 오브 캔 커뮤니케이션(application incapabel of CAN communication) 상태로부터 회복하여 ECU의 데드(dead)를 방지할 수 있는 효과가 있다.

Description

전자제어유니트의 메모리 프로그램방법{method for programming memory of electronic control unit}
도1은 본 발명에 적용되는 CAN 통신장치의 일예를 나타낸 도면
도2a 내지 도2c는 본 발명에 따른 전자제어유니트의 메모리 프로그램방법의 일실시예를 나타낸 도면
도3a 내지 도3c는 도2a 및 도2c에 따른 전자제어유니트의 동작 상태를 나타낸 도면
도4는 도2a 및 2c에 따라 전자제어유니트의 플래시 메모리에 프로그램 다운로드하는 방법의 일실시예를 나타낸 도면
도면의 주요부분에 대한 부호의 설명
100 : 호스트 피씨 200 : CAN 통신망
300a~300n : 전자제어유니트
본 발명은 전자제어유니트에 관한 것으로, 특히 전자제어유니트의 메모리 프로그램방법에 관한 것이다.
전통적인 기계 구성요소들이 전자적인 실행으로 대체됨에 따라 자동차는 점점더 전자제어유니트(Eletronic Control Unit:이하, ECU라 약칭함)를 설치하고 있 다. 게다가 모든 ECU는 센서와 제어기들의 정보를 분배하기 위해 계측 제어기 통신망(Control Area Network:이하 CAN이라 약칭함)을 채용하고 하고 있다. CAN가 채용된 ECU의 대중화에 따라 CAN을 사용하는 측정과 분석의 필요성이 빠르게 증가하고 있다.
이러한 CAN 프로그래밍 과정은 핸드쉐이크(handshake), 이레이징(erasing), 프로그래밍(programming), 버리피케이션(vetification)의 4단계로 나눌 수 있으며, 이레이징(erasing) 단계 이전에서 발생하는 폴트(fault)는 ECU의 리커버러블 캐패서티(recoverable capacity)에 영향을 미치지 않는다.
이레이징(erasing)과 프로그래밍(programming) 단계에서 발생할 수 있는 폴트(fault)는 다양하지만, 기존 프로그램은 지워지고 새로운 프로그램은 완벽하지 않기 때문에 인컴플리트 프로그램(incomplete program)이라는 하나의 카테고리(category)로 묶을 수 있다.
버리피케이션(vetification) 단계에서 버리피케이션(vetification) 자체가 완료되지 않은 경우는 ECU의 리커버러블 캐패서티(recoverable capacity)에 영향을 미치지 않는다.
새로운 프로그램의 CAN ID나 커뮤니케이션 스피드(communication speed)와 같은 CAN 드라이버 세팅을 잘못한 경우, ECU의 CAN 통신이 불가능하게 된다.
또한, OSEK COM의 인터액션 레이어(interaction layer)나 CCP(Calibration on Can Protocol) 트랜젝션 레이어(transcation layer), 커뮤니케이션 테스크(communication task)의 세팅이 잘못되면, CAN 통신이 성립되어도 데이터 전송이 완벽하지 못하게 되어 플래시 프로그래밍(flash programming)을 수행할 수 없게 된 다.
(표1)
phase Fault Result Category
Handshake Disturbance before the erasing of flash memory Abnormal break of programming process Recoverable
Erasing ECU power down Previous program is erased partially Incomplete program
Communication disconnection
Insane CAN node
PC shut down
Programming ECU power down Programming of new program is not completee Application incapable of CAN communication
Communication disconnection
Insane CAN node
PC shut down
Verification Incorrect setting of CAN driver Inablilty of CAN communication
Incorrect setting of the transaction layer of CCP Inability of data transfer
Incorrect setting the interaction layer of OSEK COM
Incorrect setting of communication task
Incorrect setting of OSEK OS Divergence of program
ECU power down Abnormal break of programming process Recoverable
Communication disconnection
Insane CAN node
PC shut down
새로운 프로그램의 와치도그 타이머 아이에스알{watchdog timer ISR(Interrupt Service Routine)}이나 타이머 테스크(timer task)의 설정이 잘못되면 ECU가 계속적으로 리셋되면서 통제불능 상태에 빠진다.
버리피케이션(vetification) 단계중 회복 가능한 경우를 제외한 폴트(fault) 들은 이레이징(erasing)과 프로그래밍(programming)이 성공적이었지만 CAN을 통한 플래시 프로그래밍(flash programming)이 불가능하기 때문에, 어플리케이션 인캐퍼블 오브 캔 커뮤니케션이션(application incapable of CAN communicaion)이라는 하나의 카테고리(category)로 묶을 수 있다.
결과적으로, 다양한 종류의 폴트(fault)가 있지만 인컴플리트 어플레케이션(incomplete application)과 어플리케이션 인캐퍼블 오브 캔 커뮤니케이션(application incapabel of CAN communication)이라는 두개의 카테고리들(categories)로 정리할 수 있다.
어플리케이션 인캐퍼블 오브 캔 커뮤니케이션(application incapabel of CAN communication)은 기능이 검증된 프로그램에서 발생될 수 없는 것으로 주로 개발단계에서 발생할 수 있는 것이다.
따라서, 이러한 프로그래밍 진행동안의 페일루어(failure)에 대한 확실한 조치가 세계적인 표준화만큼 중요하다. 일반적으로 CAN 플래시 프로그래밍을 채용하는 ECU는 통신과 모드 선택을 위한 특별한 하드웨어를 가지고 않기 때문에, ECU는 페일루어(failure)로부터 회복하기 위한 어떤 해결책을 가지고 있지 않다면 프로그래밍 진행동안 페일루어(failure)에 의해 데드(dead)될 수 있다.
따라서 본 발명은 상기와 같은 문제점을 해결하기 위해 안출한 것으로서, ECU 메모리 프로그래밍 동안의 폴트(fault)에 의해 발생하는 인컴플리트 어플레케이션(incomplete application)과 어플리케이션 인캐퍼블 오브 캔 커뮤니케이션(application incapable of CAN communication) 상태로부터 회복하여 ECU의 데드 (dead)를 방지하도록 한 전자제어유니트의 메모리 프로그램방법을 제공하는데 그 목적이 있다.
상기와 같은 목적을 달성하기 위한 본 발명에 따른 전자제어유니트의 메모리 프로그램방법의 특징은, 호스트 피씨, 캔(CAN) 통신망, 복수의 전자제어유니트를 구비한 전자제어유니트의 메모리 프로그램방법에 있어서, (a) 상기 호스트 피씨에서 상기 복수의 전자제어유니트중 프로그램을 다운로드하기 위한 전자제어유니트를 활성화시키는 단계와; (b) 상기 (a)단계에서 활성화된 전자제어유니트로 프로그램 다운로드요청신호를 상기 캔(CAN) 통신망을 통해 브러드캐스트하여 상기 전제어유니트에서 프로그램을 다운로드한 후 다운로드완료신호를 상기 캔(CAN) 통신망을 통해 상기 호스트 피씨로 전송하는 단계와; (c) 상기 (b)단계에서 전송된 프로그램 다운로드완료신호에 따라 호스트 피씨에서 상기 캔(CAN) 통신망을 통해 브러드캐스트된 프로그램 검증요청신호를 상기 캔(CAN) 통신망을 통해 브러드캐스트하여 상기 전자제어유니트에서 다운로드된 프로그램을 검증한 후 검증완료신호를 상기 캔(CAN) 통신망을 통해 상기 호스트 피씨로 전송하는 단계를 포함하여 구성되는데 있다.
상기 (a)단계는 (a1) 상기 호스트 피씨에서 응답요청신호를 상기 캔(CAN) 통신망으로 브러드캐스트하는 단계와; (a2) 상기 (a1)에서 브러드캐스트된 응답요청신호에 따라 복수의 전자제어유니트 각각에서 응답신호를 상기 캔(CAN) 통신망으로 전송하는 단계와; (a3) 상기 (a2)에서 전송된 응답신호로부터 프로그램을 다운로드하기 위한 전자제어유니트를 검출하는 단계와; (a4) 상기 (a3)에서 검출된 전자제 어유니트의 활성화요청신호를 상기 캔(CAN) 통신망으로 브러드캐스트하는 단계와; (a5) 상기 (a4)에서 브러드캐스트된 활성화요청신호에 따라 활성화된 후 활성화신호를 상기 캔(CAN) 통신망으로 전송하는 단계를 포함하여 이루어진 것을 다른 특징으로 하는데 있다.
상기 (b)단계는 (b1) 상기 (a)단계에서 활성화된 전자제어유니트로 프로그램을 삭제요청신호를 상기 캔(CAN) 통신망으로 브러드캐스트하는 단계와; (b2) 상기 (b1)단계에서 브러드캐스트된 삭제요청신호 프로그램을 삭제한 후 삭제신호를 상기 캔(CAN) 통신망으로 전송하는 단계와; (b3) 상기 (b2)단계에서 전송된 삭제신호에 따라 프로그램 다운로드신호를 상기 캔(CAN) 통신망으로 브러드캐스트하는 단계와; (b4) 상기 (b3)에서 브러드캐스트된 프로그램 다운로드신호에 따라 프로그램을 다운로드한 후 다운로드완료신호를 상기 캔(CAN) 통신망으로 전송하는 단계를 포함하여 이루어진 것을 또다른 특징으로 하는데 있다.
상기 (b4)단계에서는 상기 호스트 피씨로부터 다운로드 프로그램을 브러드캐스트받아 램(RAM)에 로드(load)한 후 플래시 메모리에 다운로드하는 것을 또다른 특징으로 하는데 있다.
상기 (b4)단계에서는 플래시 메모리에 기저장된 다운로드 프로그램 이미지를 램(RAM)에 로드(load)한 후 상기 플래시 메모리에 다운로드 하는 것을 또다른 특징으로 하는데 있다.
상기 (b4)단계에서는 플래시 메모리에 기저장된 다운로드 프로그램 이미지를 인터럽트 벡터 테이블(Interrupt Vector Table)과 인터럽트 서비스 루틴(interrupt service routine)을 이용하여 램(RAM)에 로드(load)한 후 상기 플래시 메모리에 다 운로드하는 것을 또다른 특징으로 하는데 있다.
상기 (c)단계는 (c1) 상기 (b)단계에서 전송된 프로그램 다운로드완료신호에 따라 다운로드된 프로그램의 리셋 요청신호를 상기 캔(CAN) 통신망으로 브러드캐스트하는 단계와; (c2) 상기 (c1)단계에서 브러드캐스트된 리셋 요청신호에 따라 리셋된 후 리셋완료신호를 상기 캔(CAN) 통신망으로 전송하는 단계와; (c3) 상기 (c2)단계에서 전송된 리셋완료신호에 따라 다운로드된 프로그램의 검증요청신호를 상기 캔(CAN) 통신망으로 브러드캐스트하는 단계와; (c4) 상기 (c3)단계에서 브러드캐스트된 검증요청신호에 따라 다운로드된 프로그램을 검증한 후 검증신호를 상기 캔(CAN) 통신망으로 전송하는 단계를 포함하여 이루어진 것을 또다른 특징으로 하는데 있다.
상기 (c2)단계는 리셋완료후 초기화와 메시지 트랜지션(message transition)의 동작상태를 리셋완료신호로 알리는 것을 또다른 특징으로 하는데 있다.
상기 (c4)단계는 상기 검증완료후 어플리케이션 프로그램의 메시지 레셉션(message reception)의 정상동작상태를 검증완료신호로 알리는 것을 또다른 특징으로 하는데 있다.
상기 (c4)단계는 상기 검증과정중 폴트가 발생할 경우 전자제어유니트를 강제 리셋시켜 프로그램 다운로드 과정을 다시 시작하도록 하여 상기 발생된 폴트로부터 전자제어유니트를 회복시키는 것을 또다른 특징으로 하는데 있다.
본 발명의 다른 목적, 특징 및 잇점들은 첨부한 도면을 참조한 실시예들의 상세한 설명을 통해 명백해질 것이다.
이하, 본 발명에 따른 전자제어유니트의 메모리 프로그램방법의 바람직한 실 시예에 대하여 설명하면 다음과 같다.
도1은 본 발명에 적용되는 CAN 통신장치의 일예를 나타낸 도면으로서, 호스트 피씨(100)와, 상기 CAN 통신망(200)과, 상기 복수의 전자제어유니트를 포함하여 구성된다.
도2a 내지 도2c는 본 발명에 따른 전자제어유니트의 메모리 프로그램방법의 일실시예를 나타낸 도면이고, 도3a 내지 도3c는 도2a 및 도2c에 따른 전자제어유니트의 동작 상태를 나타낸 도면이다.
도3a 내지 도3c에서 타원 또는 라운드 렉탠글(rounded rectangle)은 스테이트를 나타내고, 더블 라인(double line)은 프로그램의 경계이며, ECU내 3개의 프로그램-부팅 프로그램(booting program), 다운로드 프로그램(download program), 어플리케이션 프로그램(application program)-이 호스트 피씨와의 메시지에 따라 액티비트(activate)되거나 디액티비트(deactivate)되게 된다.
애로우(arrow)는 스테이트 스랜지션(state transition)을 나타내고, 도트 애로우(dotted arrow)는 컨텍트 스위칭 바이 다이렉트 투 리셋 아에스알(context switching by direct to reset ISR(Interrupt Service Routine))을 나타내며, 다크 서클(dark circle)(??)은 스타팅 포인트 오브 더 서튼 레벨 오브 하이어러키컬 다이아그램(starting point of the certain level of hierarchical diagram)을 나타내고, 불스 아이(bull's eye)(⊙)는 앤딩 포인트 오브 더 서튼 레벨 오브 하이어러키컬 다이아그램(ending point of the certain level of hierarchical diagram)을 나타내며, 최상위 레벨(level)에만 앤딩 포인트(ending point)가 정의되어 있는데, 어플리케이션 프로그램(application program)이 와치도그 타이머(watchdog timer) 등을 이용하여 강제적인 리셋(reset)을 발생시키는 것을 의미하며, 이 경우 더블 라인 애로우(double lined arrow)가 표시하는 바와 같이 하드웨어 리셋(hardware reset)이 발생하게 된다.
DownloadingFlag와 ActiveFlag는 ECU의 현재 상태를 나타내는 변수이고, DownloadingFlag는 초기값이 TRUE이며, ActiveFlag는 초기값이 FALSE이고, 최초의 리셋에서 다운로드 프로그램이 액티비트(activate)되어 ECU가 Downloading-Inactive state로 초기화된다.
Downlodaing-Active stat를 보면, 이레이징(Erasing)과 관련되어 ReadyToErase와 Erasing이라는 2개의 state가 정의되어 있는데, 이는 일반적인 플래스 메모리가 어싱크로너스(asynchronous)하기 때문에, 즉, 오퍼레이션(operation)의 시작 명령이 리턴(return)하여 도 완료되었다고 보장할 수 없기 때문에 erasing 명령의 수행중의 패러럴 오퍼레이션(parallel operation)을 보장하기 위한 것이다.
같은 이유로 플래시 프로그램과 관련되어 ReadyToProgram과 Programming이라는 2개의 state가 정의된다. 일반적으로, 피니트 스테이트 머신(finite state machine)은 트리거(trigger)라는 주기적인 함수가 불려질 때만 스테이트 트랜지션(state transition)이 일어나도록 구현되기 때문에, 종료조건까지의 피니트 루프 폴링(finite)과는 달리 멀티-스레드(multi-thread)에 의한 패러럴 오퍼레이션(parallel operation)을 보장한다.
도4는 도2a 및 2c에 따라 전자제어유니트의 플래시 메모리에 프로그램 다운로드하는 방법의 일실시예를 나타낸 도면이다.
이와 같이 구성된 본 발명에 따른 전자제어유니트의 메모리 프로그램방법에 대하여 첨부한 도면을 참조하여 상세히 설명하면 다음과 같다.
먼저, 호스트 피씨(100)는 도2a에 도시된 바와 같이, 캔 플래시 프로그래밍(CAN flash programming)의 호스트용으로 자신에게 할당된 CAN ID를 이용하여 프로그램을 다운로드하기 위한 전자제어유니트(Electronic Control Unit:이하 ECU라 약칭함) 예를 들어 ECU(300a)가 접속되어 있는지를 확인하기 위하여 CAN 통신망(200)으로 응답요청신호인 DO_ENUM 메시지를 브러드캐스트하게 된다. 여기서, 캔(CAN)의 멀티캐스트(multicast) 특성 때문에 네트워크에 연결된 호스트 피씨(100)와 모든 ECU(300a~300n)들과 같은 노드(node)들은 다른 노드가 브러드캐스트(brocast)하는 모든 메시지(message)를 받을 수 있다.
그러면 복수의 ECU(300a~300n) 각각은 상기 브러드캐스트된 DO_ENUM 메시지에 따라 자신의 ECU_ID가 포함된 응답신호인 ACK_ENUM(ECU_ID) 메시지를 상기 CAN 통신망(200)으로 전송하게 된다. 즉, 캔 플래시 프로그래밍(CAN flash programming) 기능을 지원하는 복수의 ECU(300a~300n) 각각은 자신의 ECU_ID가 포함된 응답신호인 ACK_ENUM(ECU_ID) 메시지로 응답하게 되며, 각 노드의 CAN ID의 우선순위(priority)에 따라 순서가 결정되기 때문에, 손실없는 데이터 전송을 보장할 수 있다.
이에 따라 호스트 피씨(100)는 상기 전송된 ACK_ENUM(ECU_ID)에 따라 프로그램을 다운로드하기 위한 ECU(300a)를 검출한 후 검출된 ECU(300a)를 활성화시키기 위한 활성화요청신호인 DO_SETACTIVE(ECU_ID) 메시지를 상기 CAN 통신망(200)으로 브러드캐스트하게 된다.
그러면 ECU(300a)는 상기 브러드캐스트된 DO_SETACTIVE(ECU_ID) 메시지에 따라 활성화된 활성화신호인 ACK_SETACTIVE(ECU_ID) 메시지를 상기 CAN 통신망(200)으로 전송하게 된다. 이때, ECU(300a)는 비활성화되거나 ECU(300b~300n)중 어느 하나가 활성화되기 전까지 CAN flash programming 관련 메시지에 대응하게 되고, 활성화되지 않은 ECU(300b~300n)들은 다른 CAN flash programming 관련 메시지에 대응하지 않게 된다.
이후, 호스트 피씨(100)는 도2b에 도시된 바와 같이, 상기 브러드캐스트된 ACK_SETACTIVE(ECU_ID) 메시지에 따라 ECU(300a)에 저장된 프로그램을 삭제하기 위한 삭제요청신호인 DO_ERASE(Block Index) 메시지를 상기 CAN 통신망(200)으로 브러드캐스트하게 된다. 여기서, 호스트 피씨(100)는 상기 DO_ERASE(Block Index) 메시지를 프로그램 삭제완료시까지 반복해서 브러드캐스트하게 되며, 상기 DO_ERASE(Block Index) 메시지는 프로그램이 Block 단위로 프로그램이 저장되어 있으므로 이 Block Index를 파라미터(parameter)로 하여 프로그램을 삭제하기 위한 메시지이다.
그러면 ECU(300a)는 상기 브러드캐스트된 DO_ERASE(Block Index) 메시지에 따라 프로그램을 삭제한 후 삭제완료시 삭제신호인 ACK_ERASE 메시지를 상기 CAN 통신망(200)으로 전송하게 된다. 여기서, ECU(300a)는 상기 반복해서 브러드캐스트된 DO_ERASE(Block Index) 메시지에 따라 상기 프로그램의 삭제완료시까지 반복해서 프로그램 삭제한 후 ACK_ERASE 메시지를 상기 CAN 통신망(200)으로 전송하게 된다.
이에 따라 호스트 피씨(100)는 상기 전송된 ACK_ERASE 메시지에 따라 새로운 프로그램을 파일로부터 읽어들여 프로그램 다운로드요청신호인 DO_PROGRAM 메시지(Address, Data)를 상기 CAN 통신망으로 브러드캐스트하게 된다. 여기서, 호스트 피씨(100)는 프로그램의 다운로드 완료시까지 반복해서 DO_PROGRAM 메시지(Address, Data)를 상기 CAN 통신망으로 브러드캐스트하게 되며, 상기 DO_PROGRAM 메시지(Address, Data)는 새로운 프로그램이 다운로드될 어드레스(address)와 데이터(data)가 포함된 메시지이다.
이때, 프로그래밍하려는 데이터는 CCP(Calibration on Can Protocol)의 CRO(Command Receive Object) 형식이거나 OSEK COM의 I-PDU(Interaction layer Protocol Data Units) 형식일 수 있으며, 프로그램 파일(program file)의 형식으로는 인텔 헥스 포맷(Intel hex format)과 모토롤라 에스-레코드 포맷(Motorola S-record format)이 주로 쓰이게 된다.
그러면, 상기 ECU(300a)는 상기 브러드캐스트된 DO_PROGRAM(Address, Data) 메시지에 따라 프로그램을 다운로드한 후 다운로드완료시 프로그램 다운로드완료신호인 ACK_PROGRAM 메시지를 상기 CAN 통신망(200)으로 전송하게 된다.
이에 따라 호스트 피씨(100)는 도2c에 도시된 바와 같이, 상기 전송된 ACK_PROGRAM 메시지에 따라 다운로드된 프로그램의 버리피케이션(verification)을 수행하기 위한 리셋 요청신호인 DO_RESET 메시지를 상기 CAN 통신망(200)으로 브러드캐스트하게 된다.
그러면, ECU(300a)는 상기 브러드캐스트된 DO_RESET 메시지에 따라 다운로드된 프로그램을 리셋하여 파워 리셋(power on reset)된 상황과 동일한 초기화 과정 을 수행한 후 리셋완료시 정상적으로 초기화되게 되면 초기화와 메시지 트랜지션(message transition)의 정상동작상태를 나타내는 리셋완료신호인 ACK_RESET 메시지를 상기 CAN 통신망(200)으로 전송하게 된다.
이어 호스트 피씨(100)는 상기 전송된 ACK_RESET 메시지에 따라 다운로드된 프로그램의 메시지 리셉션(message reception)을 검증하기 위한 프로그램 검증요청신호인 DO_VERIFY 메시지를 상기 CAN 통신망으로 브러드캐스트하게 된다.
그러면, ECU(300a)는 상기 브러드캐스트된 DO_VERIFY에 따라 프로그램을 검증한 후 검증완료신호인 ACK_VERIFY 메시지를 상기 CAN 통신망(200)으로 전송하게 된다. 즉, ECU(300a)는 상기 브러드캐스트된 DO_VERIFY를 성공적으로 수신한다면 CAN flash programming을 위한 모든 기능이 정상적으로 수행되므로, 리셋을 통하여 다운로드된 프로그램의 정상적인 초기화과정 후 검증완료신호인 ACK_VERIFY 메시지를 상기 CAN 통신망(200)으로 전송하여 CAN flash programming 과정이 종료하였음을 알리게 된다.
이에 따라, 호스트 피씨(100)는 상기 전송된 ACK_VERIFY 메시지에 따라 프로그램 다운로드 및 검증을 완료하게 된다.
상기와 같은 프로그램 다운로드 및 검증과정중 ECU(300a)의 동작상태를 도3a 내지 도3c를 참조하여 설명하면 다음과 같다.
최초의 프로그래밍은 부팅 프로그램(booting program)과 다운로드 프로그램(download program)만을 프로그램한다.
일단 최초의 프로그램이 성공하면, 캔 플래시 프로그래밍(CAN flash programming)에 의하여 어플리케이션 프로그램(application program)을 프로그램한 다.
이때, 어플리이케이션 프로그램이 없는 상태의 핸드쉐이크 페이즈(handshake phase)는 도3a에 도시된 (1)로 표시된 패스(path)를 따른다.
즉, 전원이 온되면 리셋에 의하여 부팅 프로그램(booting)이 액티비트(activate)되고, DownloadFlag가 TRUE이기 때문에 다운로드 프로그램(download program)으로 컨텍트 스위치(context switch)되어 Downloading-Inactive state에 머물다가, DO_ENUM 메시지에 따라 활성화된 후 ACK_ENUM 메시지를 전송한 후 활성화 요청신호인 DO_SETACTIVE 메시지가 오면 액티브 스테이트(Active state)가 되어 이레이징 페이즈(erasing phase)로 넘어간다. 이때, DO_SETACTIVE 메시지는 ECU 스테이트(ECU state)에 영향을 미치지 않는다.
기존에 어플리케이션 프로그램이 있는 경우 도3a에 도시된 (2)로 표시된 패스(path)를 따르게 된다. 즉, 어플리케이션 프로그램(application program)은 DO_ENUM 메시지에 따라 활성화된 후 ACK_ENUM 메시지를 전송한 후 DO_SETACTIVE 메시지를 받으면, DownloadingFlag를 TRUE로 설정하여 유효한 어플리케이션이 없음을 표시하고, ActiveFlag를 TRUE로 설정하여 다운로딩(downloading) 과정중이었음을 표시한다.
이어, 리셋(reset)후 부팅 프로그램은 DownloadingFlag가 TRUE이기 때문에 다운로드 프로그램으로 컨텍트 스위치(contect switch)된다. 이때, ActiveFlag가 TRUE로 설정되어 있기 때문에 액티브 스테이트(Active state)가 되어 이레이징 페이즈(erasing phase)로 넘어간다.
그리고, 다운로드 프로그램은 이레이징 페이즈(Erasing phase)의 프로그램 삭제요청신호인 DO_ERASE 메시지에 따라 지정된 플래시 메모리 블록(flash memory block)을 지우고, 프로그래밍 페이즈(programming phase)의 프로그램 다운로드 요청신호인 DO_PROGRAM 메시지에 따라 전송받은 데이터를 플래시 메모리에 프로그램한다.
상기와 같이, 이레이징 페이즈(Erasing phase)와 프로그래밍 페이즈(Programming phase)를 통하여 새로운 어플리케이션 프로그램의 프로그래밍이 완료되며, 리셋 요청신호인 DO_RESET 메시지에 의하여 다운로드 프로그램이 어플리케이션 프로그램으로 컨텍트 스위치(contect switch)되면서 버러피케이션 페이즈(verification phase)가 시작된다. 이 과정이 도3b에 도시된 (1)로 표시된 패스(path)이다.
이어, 새로운 어플리케이션은 리셋완료신호인 ACK_RESET 메시지를 전송하여 캔 리셉션(CAN reception) 능력을 확인하게 된다. 이와 같이 캔 플래시 프로그래밍(CAN flash programming)에 필요한 기능들이 확인되면, 어플리케이션 프로그램은 DownloadingFlag를 FALSE로 설정하여 다운로딩(downloading) 과정이 종료했음을 표시한다. 이 과정이 도3b의 (2)로 표시된 패스(path)이다.
상기와 같이 플래시 메모리에 프로그램 다운로딩(downloading) 과정 종료후 두가지 폴트(fault) 상황에서 ECU가 회복되는 과정은 도3c에 도시된 바와 같다.
(A)로 표시된 첫 번째 경우는 다운로드 프로그램이 이레이징 페이즈나 프로그래밍 페이즈에 있다가 폴트(fault)가 발생한 경우로 어플리케이션 프로그램이 완벽하게 프로그램되지 못했기 때문에 인컴플리트 프로그램(incomplete program)에 한다.
이 경우, 활성화요청신호인 DO_SETACTIVE 메시지를 통하여 캔 플래시 프로그래밍 과정(CAN flash programming process)이 시작되었기 때문에 DownloadingFlag와 ActiveFlag 모두가 TRUE로 설정되어 있다.
(b)로 표시된 두 번째 경우는 다운로드 프로그램이 플래시 프로그래밍을 완료하고 새로운 어플리케이션으로 다이렉드 점프(direct jump)를 했는데, 어플리케이션 프로그램의 CAN 통신에 폴트(fault)가 있는 경우로, 새로운 어플리케이션 프로그램의 프로그래밍이 성공적이었음에도 불구하고 캔 플래시 프로그래밍 프로토콜(CAN flash programming protocol)에 대응할 수 없기 때문에 어플리케이션 인캐퍼블 오브 캔 커뮤니케이션(application incapable of CAN communication)에 한다.
이 경우 역시, DO_SETACTIVE 메시지를 통하여 캔 플래시 프로그래밍 과정(CAN flash programming process)이 시작되었기 때문에 DownloadingFlag와 ActiveFlag가 TRUE로 설정되어 있다.
상기 둘 중 어떤 폴트(fault)가 발생하였더라도, 전원을 다시 켬으로써 캔 플래시 프로그래밍 과정(CAN flash programming process)을 다시 시작할 수 있도록 회복된다.
즉, 도3c에 (1)로 표시된 패스(path)에 도시된 바와 같이, 전원을 다시 켰을 때 DownloadingFlag와 ActeveFlag가 TRUE이기 때문에 ECU(300a)가 Downloading-Active state가 되는 과정을 보여준다. 새로이 시작된 호스트 피씨(100)측의 프로그램은 DO_ENUM 메시지를 보내서 새로운 플래시 프로그래밍 과정(flash programming process)을 시작한다. 이때, ECU(300a)는 DO_ENUM 메시지에 의하여 Downloading-Inactive state로 설정되어, 어플리케이션 프로그램이 없이 플래시 프로그래밍 과정(flash programming process)을 시작하는 상황과 같이 동작하게 된다.
이어, 어플리케이션 프로그램이 활성화요청신호인 DO_SETACTIVE 메시지를 받고 DownloadingFlag와 ActiveFlag를 TRUE로 설정한 이후 발생하는 모든 폴트(fault)는 같은 방법으로 회복될 수 있다.
도3c에 (2)로 표시된 패스(path)는 ECU 스테이트(ECU state)에 영향을 미치지 않는다.
한편, 도4에 도시된 바와 같이, ECU(300a)는 상기 플래시 메모리에 프로그램 다운로드 과정에서 일반적으로 3종류의 메모리 영역을 갖게 되는데, 램(RAM), 플래시 메모리(flash memory), 이이피롬(EEPROM) 각각의 메모리는 라이너 어드레스 스페이스(linear address space)상에 맵핑(mapping)되기 때문에 동일한 방법으로 3종류의 메모리를 읽을 수 있다.
여기서, 직접적인 대입으로 쓰기가 가능한 램(RAM)과는 달리 플래시 메모리(flash memory)와 이이피롬(EEPROM)을 지우거나 쓰기 위해서는 특별한 과정을 따라야 한다. 대부분의 플레시 메모리는 다운로드 프로그램을 위한 프로텍티드 섹션(protected section)을 정의하여 의도하지 않은 프로그램 손상을 방지하고, 인터럽트 처리를 위하여 아이브이티(IVT:Interrupt Vector Table)라는 어드레스가 고정된 점프 테이블(jump table)을 사용하게 된다.
따라서, 리셋 벡터(reset vector)를 사용하기 위하여 부팅 프로그램은 IVT가 있는 프로텍티드 섹션(protected section)에 위치하게 된다. 그리고 어플리케이션 프로그램은 부팅 프로그램에 영향을 주기 않으며 지우고 쓸 수 있는 나머지 플레시 메모리 전체를 사용한다. 다운로드 프로그램은 램(RAM)상에서 동작하게 된다.
이어, 어플리케이션 프로그램이 인터럽트(interrupt)를 처리하게 하기 위하여, 부팅 프로그램은 리셋을 제외한 모든 인터럽트 벡터(interrupt vector)를 버튜얼 아이브이티(virtual IVT)의 ISR(Interrupt Service Routine)로 설정한다. 버튜얼 IVT는 어플리케이션 프로그램의 IVT로서, 부팅 프로그램과 연동할 때는 항상 일정한 어드레스로 설정되어야 한다.
또한, DownloadingFlag가 TRUE일 때, 부팅 프로그램이 다운로드 프로그램을 램(RAM)에 로드(load)하는 방법에는 통신을 통하여 호스트 피씨로부터 받는 방법과 프로그램 이미지(program image)를 링크(link)하였다가 메모리 카피(memory copy)하는 방법의 2가지가 있는데, 도4는 두 번째 방법을 나타낸다.
이후, 다운로드 프로그램은 램(RAM)에 로드(Load)된 프로그램을 플래시 메모리에 다운로드하게 된다.
그리고, DownloadingFlag가 FALSE일 때, 부팅 프로그램은 인터럽트 서비스 루틴(Interrupt Service Routine)에 의해 어플리케이션 프로그램으로 다이렉트 점프(Direct jump)하게 된다.
이상에서 설명한 바와 같이 본 발명에 따른 전자제어유니트의 메모리 프로그램방법은 ECU 메모리 프로그래밍 동안의 폴트(fault)에 의해 발생하는 인컴플리트 어플레케이션(incomplete application)과 어플리케이션 인캐퍼블 오브 캔 커뮤니케 이션(application incapabel of CAN communication) 상태로부터 회복하여 ECU의 데드(dead)를 방지할 수 있는 효과가 있다.
이상 설명한 내용을 통해 당업자라면 본 발명의 기술 사상을 일탈하지 아니하는 범위에서 다양한 변경 및 수정이 가능함을 알 수 있을 것이다.
따라서, 본 발명의 기술적 범위는 실시예에 기재된 내용으로 한정되는 것이 아니라 특허 청구의 범위 및 그와 균등한 것들에 의하여 정해져야 한다.

Claims (10)

  1. 호스트 피씨, 캔(CAN) 통신망, 복수의 전자제어유니트를 구비한 전자제어유니트의 메모리 프로그램방법에 있어서,
    (a) 상기 호스트 피씨에서 상기 복수의 전자제어유니트중 프로그램을 다운로드하기 위한 전자제어유니트를 활성화시키는 단계와;
    (b) 상기 (a)단계에서 활성화된 전자제어유니트로 프로그램이 다운되도록 요청하는 신호를 상기 캔(CAN) 통신망을 통해 브러드캐스트하여 상기 전자제어유니트에서 프로그램을 다운로드한 후 다운로드완료신호를 상기 캔(CAN) 통신망을 통해 상기 호스트 피씨로 전송하는 단계와;
    (c) 상기 (b)단계에서 전송된 프로그램 다운로드완료신호에 따라 호스트 피씨에서 상기 캔(CAN) 통신망을 통해 브러드캐스트된 프로그램 검증요청신호를 상기 캔(CAN) 통신망을 통해 브러드캐스트하여 상기 전자제어유니트에서 다운로드된 프로그램을 검증한 후 검증완료신호를 상기 캔(CAN) 통신망을 통해 상기 호스트 피씨로 전송하는 단계를 포함하여 이루어진 것을 특징으로 하는 전자제어유니트의 메모리 프로그램방법.
  2. 제1항에 있어서,
    상기 (a)단계는
    (a1) 상기 호스트 피씨에서 응답요청신호를 상기 캔(CAN) 통신망으로 브러드캐스트하는 단계와;
    (a2) 상기 (a1)에서 브러드캐스트된 응답요청신호에 따라 복수의 전자제어유니트 각각에서 응답신호를 상기 캔(CAN) 통신망으로 전송하는 단계와;
    (a3) 상기 (a2)에서 전송된 응답신호로부터 프로그램을 다운로드하기 위한 전자제어유니트를 검출하는 단계와;
    (a4) 상기 (a3)에서 검출된 전자제어유니트의 활성화요청신호를 상기 캔(CAN) 통신망으로 브러드캐스트하는 단계와;
    (a5) 상기 (a4)에서 브러드캐스트된 활성화요청신호에 따라 활성화된 후 활성화신호를 상기 캔(CAN) 통신망으로 전송하는 단계를 포함하여 이루어진 것을 특징으로 하는 전자제어유니트의 메모리 프로그램방법.
  3. 제1항에 있어서,
    상기 (b)단계는
    (b1) 상기 (a)단계에서 활성화된 전자제어유니트로 프로그램을 삭제요청신호를 상기 캔(CAN) 통신망으로 브러드캐스트하는 단계와;
    (b2) 상기 (b1)단계에서 브러드캐스트된 삭제요청신호 프로그램을 삭제한 후 삭제신호를 상기 캔(CAN) 통신망으로 전송하는 단계와;
    (b3) 상기 (b2)단계에서 전송된 삭제신호에 따라 프로그램 다운로드신호를 상기 캔(CAN) 통신망으로 브러드캐스트하는 단계와;
    (b4) 상기 (b3)에서 브러드캐스트된 프로그램 다운로드신호에 따라 프로그램을 다운로드한 후 다운로드완료신호를 상기 캔(CAN) 통신망으로 전송하는 단계를 포함하여 이루어진 것을 특징으로 하는 전자제어유니트의 메모리 프로그램방법.
  4. 제3항에 있어서,
    상기 (b4)단계에서는 상기 호스트 피씨로부터 다운로드 프로그램을 브러드캐스트받아 램(RAM)에 로드(load)한 후 플래시 메모리에 다운로드하는 것을 특징으로 하는 전자제어유니트의 메모리 프로그램방법.
  5. 제3항에 있어서,
    상기 (b4)단계에서는 플래시 메모리에 기저장된 다운로드 프로그램 이미지를 램(RAM)에 로드(load)한 후 상기 플래시 메모리에 다운로드 하는 것을 특징으로 하는 전자제어유니트의 메모리 프로그램방법.
  6. 제3항에 있어서,
    상기 (b4)단계에서는 플래시 메모리에 기저장된 다운로드 프로그램 이미지를 인터럽트 벡터 테이블(Interrupt Vector Table)과 인터럽트 서비스 루틴(interrupt service routine)을 이용하여 램(RAM)에 로드(load)한 후 상기 플래시 메모리에 다운로드하는 것을 특징으로 하는 전자제어유니트의 메모리 프로그램방법.
  7. 제1항에 있어서,
    상기 (c)단계는
    (c1) 상기 (b)단계에서 전송된 프로그램 다운로드완료신호에 따라 다운로드된 프로그램의 리셋 요청신호를 상기 캔(CAN) 통신망으로 브러드캐스트하는 단계 와;
    (c2) 상기 (c1)단계에서 브러드캐스트된 리셋 요청신호에 따라 리셋된 후 리셋완료신호를 상기 캔(CAN) 통신망으로 전송하는 단계와;
    (c3) 상기 (c2)단계에서 전송된 리셋완료신호에 따라 다운로드된 프로그램의 검증요청신호를 상기 캔(CAN) 통신망으로 브러드캐스트하는 단계와;
    (c4) 상기 (c3)단계에서 브러드캐스트된 검증요청신호에 따라 다운로드된 프로그램을 검증한 후 검증신호를 상기 캔(CAN) 통신망으로 전송하는 단계를 포함하여 이루어진 것을 특징으로 하는 전자제어유니트의 메모리 프로그램방법.
  8. 제7항에 있어서,
    상기 (c2)단계는 리셋완료후 리셋완료신호로 어플리케이션 프로그램의 초기화와 메시지 트랜지션(message transition)의 정상동작상태를 알리는 것을 특징으로 하는 전자제어유니트의 메모리 프로그램방법.
  9. 제 7 항에 있어서,
    상기 (c4)단계는
    상기 검증완료후 어플리케이션 프로그램의 메시지 레셉션(message reception)의 정상동작상태를 검증완료신호로 알리는 것을 특징으로 하는 전자제어유니트의 메모리 프로그램방법.
  10. 제 7 항에 있어서,
    상기 (c4)단계는
    상기 검증과정중 폴트가 발생할 경우 전자제어유니트를 강제 리셋시켜 프로그램 다운로드 과정을 다시 시작하도록 하여 상기 발생된 폴트로부터 전자제어유니트를 회복시키는 것을 특징으로 하는 전자제어유니트의 메모리 프로그램방법.
KR1020050054123A 2005-06-22 2005-06-22 전자제어유니트의 메모리 프로그램방법 KR100996167B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020050054123A KR100996167B1 (ko) 2005-06-22 2005-06-22 전자제어유니트의 메모리 프로그램방법

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020050054123A KR100996167B1 (ko) 2005-06-22 2005-06-22 전자제어유니트의 메모리 프로그램방법

Publications (2)

Publication Number Publication Date
KR20060134446A KR20060134446A (ko) 2006-12-28
KR100996167B1 true KR100996167B1 (ko) 2010-11-24

Family

ID=37812822

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020050054123A KR100996167B1 (ko) 2005-06-22 2005-06-22 전자제어유니트의 메모리 프로그램방법

Country Status (1)

Country Link
KR (1) KR100996167B1 (ko)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101017977B1 (ko) * 2009-08-11 2011-03-02 주식회사 케피코 복수개의 제어기의 리프로그래밍 방법
KR101457659B1 (ko) * 2012-01-16 2014-11-07 주식회사 만도 전자제어유닛의 내부 변수를 모니터링하기 위한 시스템 및 방법
KR101438978B1 (ko) 2012-12-31 2014-09-11 현대자동차주식회사 리프로그래밍 방법 및 시스템
CN106414178B (zh) * 2014-06-19 2019-08-20 日立汽车系统株式会社 车载程序写入装置

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100267825B1 (ko) 1998-07-03 2000-10-16 박호군 Can 통신 단말기 기능을 구비한 범용 제어 보드
JP2005014743A (ja) 2003-06-25 2005-01-20 Nissan Motor Co Ltd 車両用故障部品探知装置

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100267825B1 (ko) 1998-07-03 2000-10-16 박호군 Can 통신 단말기 기능을 구비한 범용 제어 보드
JP2005014743A (ja) 2003-06-25 2005-01-20 Nissan Motor Co Ltd 車両用故障部品探知装置

Also Published As

Publication number Publication date
KR20060134446A (ko) 2006-12-28

Similar Documents

Publication Publication Date Title
US6892323B2 (en) Dual basic input/output system for a computer
US8041988B2 (en) Firmware update for consumer electronic device
EP1433060B1 (en) Crash recovery system
US8161277B2 (en) Method of safe and recoverable firmware update and device using the same
US7206971B2 (en) Selectable and updatable computer boot memory
KR100440950B1 (ko) 네트워크 환경에 있어서 소프트웨어 업그레이드 방법 및그에 따른 네트워크 디바이스
JP4279902B2 (ja) ディジタルテレビジョン放送受信装置およびディジタルテレビジョン放送受信用プログラムの取得方法
CA2307908A1 (en) A method and apparatus for downloading software into an embedded-system
CN107102871A (zh) 嵌入式系统升级的方法和装置
CN112015447B (zh) 电子设备的系统更新方法及装置、电子设备及存储介质
KR100996167B1 (ko) 전자제어유니트의 메모리 프로그램방법
CN110764799A (zh) 一种优化远程更新fpga加速卡的方法、设备及介质
CN105677409A (zh) 一种系统升级方法及装置
JP4136309B2 (ja) インサーキット・プログラミングための障害の許容アーキテクチャ
JP4013040B2 (ja) ダウンロード装置及びダウンロード方法
JP2005284902A (ja) 端末装置、その制御方法及び制御プログラム、ホスト装置、その制御方法及び制御プログラム、遠隔更新システム、方法及びプログラム
CN101354654A (zh) 自动切换基本输入/输出程序的系统及其方法
JP2002189609A (ja) アクシデントに適応したソフトウェア更新方式および方法
US20220374525A1 (en) Apparatus and method for detecting vulnerability to nonvolatile memory attack
CN113452550A (zh) 资讯撷取装置、嵌入式系统装置的固件更新方法及系统
US11768669B2 (en) Installing application program code on a vehicle control system
CN114253590A (zh) 嵌入式软件的加密式差分升级方法、装置、设备及介质
JP4076113B2 (ja) 電子制御装置
KR100487717B1 (ko) 내장형 시스템을 위한 운영체제 로딩 시스템 및 방법
KR100490743B1 (ko) 부트로더 상에서 유에스비를 이용한 파일 다운로드 방법

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20130923

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20140922

Year of fee payment: 5

LAPS Lapse due to unpaid annual fee