KR20190071208A - 전자 제어 장치용 메모리 감시 및 사용 표시 방법 및 장치 - Google Patents

전자 제어 장치용 메모리 감시 및 사용 표시 방법 및 장치 Download PDF

Info

Publication number
KR20190071208A
KR20190071208A KR1020170172033A KR20170172033A KR20190071208A KR 20190071208 A KR20190071208 A KR 20190071208A KR 1020170172033 A KR1020170172033 A KR 1020170172033A KR 20170172033 A KR20170172033 A KR 20170172033A KR 20190071208 A KR20190071208 A KR 20190071208A
Authority
KR
South Korea
Prior art keywords
function
depth
program
usage
usage amount
Prior art date
Application number
KR1020170172033A
Other languages
English (en)
Other versions
KR102435347B1 (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 KR1020170172033A priority Critical patent/KR102435347B1/ko
Priority to US15/985,956 priority patent/US10740204B2/en
Priority to CN201810775717.1A priority patent/CN109960627B/zh
Publication of KR20190071208A publication Critical patent/KR20190071208A/ko
Application granted granted Critical
Publication of KR102435347B1 publication Critical patent/KR102435347B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3003Monitoring arrangements specially adapted to the computing system or computing system component being monitored
    • G06F11/3013Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system is an embedded system, i.e. a combination of hardware and software dedicated to perform a certain function in mobile devices, printers, automotive or aircraft systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/004Error avoidance
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/008Reliability or availability analysis
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3003Monitoring arrangements specially adapted to the computing system or computing system component being monitored
    • G06F11/3034Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system component is a storage system, e.g. DASD based or network based
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3003Monitoring arrangements specially adapted to the computing system or computing system component being monitored
    • G06F11/3037Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system component is a memory, e.g. virtual memory, cache
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3089Monitoring arrangements determined by the means or processing involved in sensing the monitored data, e.g. interfaces, connectors, sensors, probes, agents
    • 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
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/362Software debugging
    • G06F11/3644Software debugging by instrumenting at runtime

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computing Systems (AREA)
  • Mathematical Physics (AREA)
  • Computer Hardware Design (AREA)
  • Debugging And Monitoring (AREA)

Abstract

복수의 함수를 포함하는 적어도 하나의 프로그램을 수행하는 전자 제어 장치에 있어서, 전자 제어 장치의 동작 방법은 복수의 함수의 함수 호출 깊이를 인지하는 단계, 함수 호출 깊이가 최대값인 최대 깊이 함수 및 인터럽트 서비스 루틴(Interrupt Service Routine, ISR)에 탐침 코드를 삽입하는 단계, 탐침 코드가 삽입된 최대 깊이 함수를 수행할 때, 메모리 영역의 사용량을 계산하는 단계, 및 탐침 코드가 수행될 때, 최대 깊이 함수의 함수 호출 깊이 또는 상기 인터럽트 서비스 루틴(ISR)이 수행될 때의 함수 호출 깊이와 상기 사용량을 전송하는 단계를 포함한다.

Description

전자 제어 장치용 메모리 감시 및 사용 표시 방법 및 장치{METHOD AND APPARATUS FOR MONITORING MEMORY AND SHOWING ITS USAGE FOR USE IN ELECTRICAL CONTROL DEVICE}
본 발명은 전자 제어 장치용 메모리 감시 및 사용량 표시 방법 및 장치에 관한 것으로, 더욱 상세하게는 차량에 포함된 전자장치에서 수행되는 복수의 제어 프로그램, 제어 루틴에서 사용되는 메모리의 사용을 감시하여 사용자에게 표시할 수 있는 장치 및 방법에 관한 것이다.
운전자 또는 탑승자의 편의를 제공하기 위한 차량에는 다수의 전자 제어 장치가 포함될 수 있다. 또한, 하이브리드 차량, 전기 차량, 수소 차량 등의 친환경 차량은 기존의 화석 연료를 이용하는 엔진이 탑재된 차량보다 더 많은 전자 제어 장치가 포함될 수 있다.
차량에 포함된 전자 제어 장치는 마이크로 프로세서가 내장된 임베디드 시스템을 포함한다. 임베디드 시스템은 특정한 기능을 수행하기 위한 하드웨어와 소프트웨어를 포함하는 응용시스템을 말하며, 이러한 임베디드 시스템은 자동차의 전장품 제어, 로봇제어, 공정제어 등과 같은 분야에서 활용될 수 있다.
친환경 차량을 위한 제어 시스템의 경우, 엔진 이외에 모터의 구동력을 이용하여 주행하기 때문에 모터 및 인버터 등을 제어하는 모터제어기와, 차량의 각종 전장품에 대한 전반적인 제어를 하는 상위제어기(HCU) 등과 같이 다양한 제어기들이 포함되어 있으므로, 각 제어기의 실시간 운영체계가 문제없이 이루어져야 전반적인 차량의 주행 성능이 유지될 수 있다.
차량의 제어시스템에서 프로그램이 실행되면, 프로그램 수행에 필요한 메모리가 할당될 수 있다. 프로그램을 위해 할당되는 메모리에는 코드(CODE) 영역(혹은, 텍스트(TEXT) 영역), 데이터(DATA) 영역, 힙(HEAP) 영역, 스택(STACK) 영역이 포함된다. 스택 영역은 프로그램이 자동으로 사용하는 임시 메모리 영역으로, 지역(LOCAL) 변수, 매개 변수(PARAMETER), 리턴 값 등 잠시 사용되었다가 사라지는 데이터를 저장할 수 있다. 차량의 주행 중 제어시스템은 실시간으로 차량의 주행 환경과 사용자/운전자의 입력, 조작 등에 대응하여 차량 내 전자장치들을 감시, 제어, 운용해야 한다. 예를 들어, 차량의 제어시스템을 운영하기 위한 실시간 운영체계(RTOS, Real Time Operating System)는 메모리 내 스택 영역을 사용하고 있다.
복수의 프로그램 또는 복수의 함수가 수행되는 과정에서 각각의 프로그램, 각각의 함수, 각각의 변수를 위해 할당된 스택 영역에서 어느 프로그램, 함수, 변수가 자신에게 할당된 영역을 모두 사용하고, 자신에게 할당되지 않은 영역을 침범하여 자신의 정보를 저장할 수 있다. 이러한 경우를 스택 오버플로우(STACK OVERFLOW)라고 한다. 스택 오버플로우는 프로그램 충돌 등의 문제를 야기할 수 있고, 차량 제어시스템에서의 스택 오버플로우는 주행 안전을 해칠 수 있다.
KR 10-1470162 B1
본 발명은 차량 내 메모리 사용량에 관하여 사용자에 지정된 메모리의 양으로부터 사용자가 요구하는 메모리 사용량 또는 스택의 최대값 등을 차감하였을 때 임계값을 위배하는지를 판단할 수 있는 방법 및 장치를 제공할 수 있다.
또한, 본 발명은 차량 메모리 사용량 요구사양을 초과하는 경우의 발생을 방지하기 위한 기술로써 최악조건 메모리 사용량 측정 및 오류 발생여부를 예상하는 방법 및 장치를 제공할 수 있다.
또한, 본 발명은 사용자의 요구에 대응하여 수행되는 함수 또는 인터럽트의 호출이 최대로 일어나는 지점에서 차량용 제어기 내 프로그램의 스택이 최대값에 이를 수 있기 때문에 해당 지점에서 탐침코드를 사용하여 실제 스택의 사용량을 확인할 수 있는 방법과 장치를 제공할 수 있다.
또한, 본 발명은 차량 제어시스템에서 수행되는 함수 및 인터럽트 루틴에 탐침코드를 삽입하여 함수별로 메모리 사용량을 계산하고 최대 호출 깊이를 갖는 함수에 탐침코드를 삽입하여 최악시나리오를 판단함으로써 메모리에서의 오버플로우의 발생 여부를 감시하고 예방할 수 있는 방법 및 장치를 제공할 수 있다.
또한, 본 발명은 차량 제어시스템에서 수행되는 함수들의 수행 경로 또는 수행 깊이와 할당된 메모리의 사용을 시각화하여 표시하여 차량의 유지, 보수, 관리를 용이하게 하는 방법 및 장치를 제공할 수 있다.
본 발명에서 이루고자 하는 기술적 과제들은 이상에서 언급한 기술적 과제들로 제한되지 않으며, 언급하지 않은 또 다른 기술적 과제들은 아래의 기재로부터 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자에게 명확하게 이해될 수 있을 것이다.
본 발명의 일 실시예에 따른 전자 제어 장치의 동작 방법은, 복수의 함수를 포함하는 적어도 하나의 프로그램을 수행하는 전자 제어 장치에 있어서, 복수의 함수의 함수 호출 깊이를 인지하는 단계; 상기 함수 호출 깊이가 최대값인 최대 깊이 함수 및 인터럽트 서비스 루틴(Interrupt Service Routine, ISR)에 탐침 코드를 삽입하는 단계; 상기 탐침 코드가 삽입된 상기 최대 깊이 함수를 수행할 때, 메모리 영역의 사용량을 계산하는 단계; 및 상기 탐침 코드가 수행될 때, 상기 최대 깊이 함수의 함수 호출 깊이 또는 상기 인터럽트 서비스 루틴(ISR)이 수행될 때의 함수 호출 깊이와 상기 사용량을 출력하는 단계를 포함할 수 있다.
또한, 탐침 코드는 상기 최대 깊이 함수 및 상기 인터럽트 서비스 루틴(ISR)의 시작과 끝에 삽입될 수 있다.
또한, 상기 인터럽트 서비스 루틴은 상기 프로그램으로부터 독립적으로 실행될 수 있다.
또한, 전자 제어 장치의 동작 방법은 전송된 상기 함수 호출 깊이에 대응하여 설정된 상기 사용량의 임계값과 전송된 상기 사용량을 비교하는 단계; 및 비교 결과에 대응하여, 페일 세이프(fail safe) 로직을 수행하는 단계를 더 포함할 수 있다.
또한, 전자 제어 장치의 동작 방법은 상기 페일 세이프 로직의 수행 원인과 결과를 표시하는 단계를 더 포함할 수 있다.
또한, 상기 메모리 영역은 스택(stack) 영역일 수 있다.
또한, 상기 사용량을 계산하는 단계는 상기 사용량은 상기 스택 영역의 할당된 시작 주소 및 끝 주소로 총량을 결정하는 단계; 상기 시작 주소부터 현재 주소까지로 현재 사용량을 결정하는 단계; 및 상기 총량에 대한 상기 현재 사용량의 비율을 결정하는 단계를 포함할 수 있다.
또한, 전자 제어 장치의 동작 방법은 상기 함수 호출 깊이, 상기 사용량 및 시각정보를 표시하는 단계를 더 포함할 수 있다.
본 발명의 다른 실시예에 따른 응용 프로그램은 프로세서에 의해 실행되는 것을 통하여, 전술한 전자 제어 장치의 동작 방법을 실현하도록 컴퓨터 판독 가능한 기록매체에 기록될 수 있다.
본 발명의 다른 실시예에 따른 컴퓨터 판독 가능한 기록매체는 프로세서에 의해 실행되는 것을 통하여, 전술한 전자 제어 장치의 동작 방법을 실현하는 응용 프로그램을 포함할 수 있다.
본 발명의 다른 실시예에 따른 전자 제어 장치는 복수의 함수를 포함하는 적어도 하나의 프로그램을 수행함에 있어서, 상기 적어도 하나의 프로그램을 저장하는 적어도 하나의 제1저장부; 상기 적어도 하나의 프로그램을 실행하는 적어도 하나의 프로세서; 및 상기 제1저장부에 저장된 상기 적어도 하나의 프로그램을 실행하는 과정에서 발생하거나 요구되는 데이터 혹은 값을 저장하는 제2저장부를 포함하고, 상기 적어도 하나의 프로세서를 통하여, 상기 프로그램에서 실행되는 함수의 함수 호출 깊이를 인지하고, 상기 함수 호출 깊이가 최대값인 최대 깊이 함수 및 인터럽트 서비스 루틴(Interrupt Service Routine, ISR)에 삽입된 탐침 코드를 실행하며, 상기 탐침 코드가 삽입된 상기 최대 깊이 함수를 수행할 때, 상기 제2저장부 내 메모리 영역의 사용량을 계산하고, 상기 탐침 코드가 수행될 때, 상기 최대 깊이 함수의 함수 호출 깊이 또는 상기 인터럽트 서비스 루틴(ISR)이 수행될 때의 함수 호출 깊이와 상기 사용량을 출력할 수 있다.
또한, 상기 탐침 코드는 상기 최대 깊이 함수 및 상기 인터럽트 서비스 루틴(ISR)의 시작과 끝에 삽입될 수 있다.
또한, 상기 인터럽트 서비스 루틴은 상기 프로그램으로부터 독립적으로 실행될 수 있다.
또한, 상기 적어도 하나의 프로세서를 통하여, 전송된 상기 함수 호출 깊이에 대응하여 설정된 상기 사용량의 임계값과 전송된 상기 사용량을 비교하고, 비교 결과에 대응하여, 페일 세이프(fail safe) 로직을 수행할 수 있다.
또한, 전자 제어 장치는 상기 페일 세이프 로직의 수행 원인과 결과를 표시하거나 상기 함수 호출 깊이, 상기 사용량 및 시각정보를 표시하는 표시장치를 더 포함할 수 있다.
또한, 상기 메모리 영역은 스택(stack) 영역일 수 있다.
또한, 상기 프로그램에서 실행되는 함수가 상기 프로세서에 의해 호출되면, 상기 스택 영역은 생성되고, 상기 함수가 종료되면 상기 스택 영역이 반환될 수 있다.
또한, 상기 적어도 하나의 프로세서를 통하여, 상기 스택 영역의 할당된 시작 주소 및 끝 주소로 총량을 결정하고, 상기 시작 주소부터 현재 주소까지로 현재 사용량을 결정하며, 상기 총량에 대한 상기 현재 사용량의 비율로 상기 사용량이 결정될 수 있다.
또한, 전자 제어 장치는 상기 최대 깊이 함수 및 상기 인터럽트 서비스 루틴의 함수 식별자, 상기 함수 호출 깊이, 상기 사용량 및 시각정보를 무선통신망을 통해 전송하는 전송부; 및 상기 최대 깊이 함수 및 상기 인터럽트 서비스 루틴의 함수 식별자, 상기 함수 호출 깊이, 상기 사용량 및 시각정보를 전달할 수 있는 이더넷 포트(Ethernet port)를 더 포함할 수 있다.
또한, 상기 제2저장부는 전역변수(global), 정적변수(static), 배열(array), 또는 구조체(structure)가 저장되는 데이터 영역 및 필요에 의해 동적으로 할당될 수 있는 힙(heap) 영역을 더 포함할 수 있다.
또한, 상기 함수 호출 깊이는 깊이 우선 탐색(Depth First Search, DFS) 알고리즘을 통해 인지될 수 있다.
상기 본 발명의 양태들은 본 발명의 바람직한 실시예들 중 일부에 불과하며, 본원 발명의 기술적 특징들이 반영된 다양한 실시예들이 당해 기술분야의 통상적인 지식을 가진 자에 의해 이하 상술할 본 발명의 상세한 설명을 기반으로 도출되고 이해될 수 있다.
본 발명에 따른 장치에 대한 효과에 대해 설명하면 다음과 같다.
본 발명은 차량 제어시스템의 오동작으로 인한 급발진 등의 차량 안전 문제를 예방할 수 있다.
또한, 본 발명은 차량 제어시스템에서 프로그램에 할당된 메모리 영역에 대하여 프로그램 수행에 따른 메모리 영역의 사용을 감시할 수 있어, 차량 제어시스템의 프로그램의 디버깅을 통한 개선을 도모할 수 있다.
본 발명에서 얻을 수 있는 효과는 이상에서 언급한 효과들로 제한되지 않으며 언급하지 않은 또 다른 효과들은 아래의 기재로부터 본 발명이 속하는 분야에서 통상의 지식을 가진 자에게 명확하게 이해될 수 있을 것이다.
이하에 첨부되는 도면들은 본 발명에 관한 이해를 돕기 위한 것으로, 상세한 설명과 함께 본 발명에 대한 실시예들을 제공한다. 다만, 본 발명의 기술적 특징이 특정 도면에 한정되는 것은 아니며, 각 도면에서 개시하는 특징들은 서로 조합되어 새로운 실시예로 구성될 수 있다.
도1은 차량에 포함된 제어 시스템과 차량 진단 장치의 연동을 설명한다.
도2는 차량의 제어 시스템과 연결된 차량 내 장치들을 설명한다.
도3은 제어 시스템의 프로그램 구조를 설명한다.
도4는 제어 시스템 내 메모리 구조를 설명한다.
도5는 제어 시스템의 동작 방법의 제1예를 설명한다.
도6은 제어 시스템의 프로그램 내 탐침 코드가 삽입되는 위치의 제1예를 설명한다.
도7은 제어 시스템의 프로그램 내 탐침 코드가 삽입되는 위치의 제2예를 설명한다.
도8은 차량 제어 시스템의 프로그램에 포함된 함수들의 함수 호출 깊이를 판단하는 방법의 예를 설명한다.
도9는 제어 시스템의 프로그램 내 함수들이 메모리 권장 사용량을 초과한 경우를 설명한다.
도10은 제어 시스템의 프로그램 내 함수들이 오버 플로우가 예상되는 메모리 사용량을 초과한 경우를 설명한다.
도11은 제어 시스템의 동작 방법의 제2예를 설명한다.
도12는 제어 시스템의 구성을 설명한다.
이하, 본 발명의 실시예들이 적용되는 장치 및 다양한 방법들에 대하여 도면을 참조하여 보다 상세하게 설명한다. 이하의 설명에서 사용되는 구성요소에 대한 접미사 "모듈" 및 "부"는 명세서 작성의 용이함만이 고려되어 부여되거나 혼용되는 것으로서, 그 자체로 서로 구별되는 의미 또는 역할을 갖는 것은 아니다.
실시예의 설명에 있어서, 각 구성 요소의 "상(위) 또는 하(아래)"에 형성되는 것으로 기재되는 경우에 있어, 상(위) 또는 하(아래)는 두 개의 구성 요소들이 서로 직접 접촉되거나 하나 이상의 또 다른 구성 요소가 두 개의 구성 요소들 사이에 배치되어 형성되는 것을 모두 포함한다. 또한, "상(위) 또는 하(아래)"으로 표현되는 경우 하나의 구성 요소를 기준으로 위쪽 방향뿐만 아니라 아래쪽 방향의 의미도 포함할 수 있다.
도1은 차량에 포함된 제어 시스템과 차량 진단 장치의 연동을 설명한다.
도시된 바와 같이, 차량(20)은 사용자, 운전자 또는 탑승자에게 주행에 필요한 정보, 주행 중 요구되는 정보, 혹은 주행 안전을 강화하기 위한 정보를 수집, 제공, 전달할 수 있는 복수의 입력 모듈(28_1~28_m)로 구성된 제2전장 장치(28)을 포함할 수 있다. 또한, 차량(20)은 주행 중 감지된 주행 환경, 운전자의 조작, 차량(20)의 운행 상태에 관련한 정보들에 대응하여 제어 시스템(24)이 결정, 판단, 전달한 명령에 대응하여 차량(20)을 제어할 수 있는 복수의 입력 모듈(22_1~22_n)이 포함된 제1전장 장치(22)를 포함할 수 있다. 여기서, m, n은 2이상의 자연수이다.
여기서, 제1전장 장치(22)와 제2전장 장치(28)는 동일한 제어기 혹은 제어 모듈을 포함하거나, 서로 다른 제어기 혹은 제어 모듈을 포함할 수 있다. 또한, 제1전장 장치(22)와 제2전장 장치(28)에 포함되는 복수의 전자 제어 모듈(22_1~22_n) 및 복수의 입력 모듈(28_1~28_m)은 차량용 네트워크를 통해 서로 연결되어 데이터를 주고 받을 수 있다. 또한, 제어 시스템(24)에는 센서, 카메라 등의 정보 수집 장치뿐만 아니라 수집된 정보를 바탕으로 기 설정된 프로그램, 기능에 따라 연산을 수행하여 새로운 정보를 생성, 가공할 수 있는 정보 처리 장치 등이 포함될 수 있다.
복수의 전자 제어 모듈(22_1~22_n) 및 복수의 입력 모듈(28_1~28_m)은 제어 시스템(24)를 통한 하부 네트워크 구조를 통해 서로 연동될 수 있다. 제어 시스템(24)은 차량용 네트워크에서 서로 다른 통신망, 프로토콜을 사용하는 네트워크 간의 통신을 가능하게 하는 컴퓨터나 소프트웨어를 포함할 수 있으며, 서로 다른 네트워크로 들어가는 입구 역할을 하는 네트워크 포인트일 수 있고, 종류가 다른 네트워크 간의 통로의 역할을 하는 게이트 웨이(미도시)와 연결될 수도 있다.
차량(20)에 탑재된 복수의 전자 제어 모듈(22_1~22_n) 및 복수의 입력 모듈(28_1~28_m)을 진단하기 위한 차량 진단 장치(20)는 차량(20)과 연결되거나 연동할 수 있다. 차량용 전자 제어 모듈의 진단 장치(20)는 서로 다른 복수의 통신 방식의 차량용 네트워크를 통해 연결된 복수의 제어기를 진단할 수 있다. 차량용 전자 제어 모듈의 진단 장치(20)는 차량과 물리적으로 분리되어 있으나, 차량에 탑재된 단자들을 통해 연결될 수 있는 단말기의 형태일 수 있다. 또한, 실시예에 따라, 차량용 전자 제어 모듈의 진단 장치(20)는 유무선 통신망을 통해 차량에 탑재된 복수의 전자 제어 모듈(22_1~22_n) 및 복수의 입력 모듈(28_1~28_m)을 점검하고 데이터를 수집할 수 있는 네트워크 서버의 형태일 수 있다.
한편, 진단 장치(20)와 제어 시스템(24) 사이에는 진단 프로세스, 진단 과정을 수행하고 결과를 수집하기 위해 데이터를 전달하는 입출력 수단(26)이 있을 수 있다. 일예를 들면, 입출력 수단(25)은 차량에 배치된 OBD(On-Board Diagnostics) 단자(26)를 포함할 수 있다. 여기서, OBD(On-Board Diagnostics)는 차량(20)의 전기/전자적인 작동 상태를 확인하고 제어하기 위한 진단 규격을 말한다. 초기에는 엔진 등 전자화된 부품의 정비 효율성을 높이기 위해 쓰였지만, 이러한 목적 이외에도 OBD는 다양한 차량 정보를 운전자에게 보여주는 트립 컴퓨터로서의 인터페이스 역할을 하기도 한다.
한편, 차량(20)은 이더넷 단자(32)를 포함할 수 있다. 차량용 네트워크가 계측제어기통신망(Controller Area Network, CAN)으로만 구성된 경우에는 이더넷 단자(32)가 불필요할 수 있다. 다만, 차량(20)에 탑재되는 복수의 전자 제어 모듈(22_1~22_n)의 수가 증가하고 복수의 전자 제어 모듈(22_1~22_n) 및 복수의 입력 모듈(28_1~28_m)이 송수신하는 데이터의 양이 커지면서, 차량용 네트워크에는 계측제어기통신망(Controller Area Network, CAN)외에도 이더넷 통신이 추가로 적용될 수 있다. 예를 들어, 계측제어기통신망인 CAN 통신의 최대 전송 대역폭은 1Mbps일 수 있다. 이러한 속도로는 차량내의 복수의 전자 제어 모듈(22_1~22_n) 및 복수의 입력 모듈(28_1~28_m)의 개수가 늘어나고, 실시간 동영상 전송(예, Topview 모니터링)등으로 데이터 트래픽이 폭증하는 경우, CAN 통신만으로 차량용 네트워크르 구성하는데 한계가 있을 수 있다. 한편, CAN-FD의 데이터 전송률은 멀티 드롭 네트워크에서 2Mbit/s까지, 점대점 통신에서 5Mbit/s까지 가능할 수 있으며, 이더넷의 경우에는 1Gbps의 속도도 제안되고 있다. 따라서, 차량(20)의 전기/전자적인 작동 상태를 확인하고 제어하는 과정에서 이더넷 단자(34)를 통해 차량 진단 장치(20)를 연결할 수도 있다.
또한, 입출력 수단(25)으로서 차량(20)에 탑재된 텔레매틱스 장치(36)가 사용될 수 있다. 텔레매틱스 장치(36)는 위치정보와 무선통신망을 이용한 차량용 종합 멀티미디어 서비스를 제공할 수 있는 장치의 예로서, 운전자에게는 안전운전, 긴급구난, 교통안내 서비스 등을 제공할 수 있고, 동승자에게는 인터넷, 영화, 게임, 멀티미디어 등 인포테인먼트 서비스 등을 제공할 수 있다. 또한 텔레매틱스 장치(30)는 차량 내 장치 들의 동작을 진단하기 위한 네트워크 서버와 연동하여, 차량에 탑재된 복수의 전자 제어 모듈(22_1~22_n) 및 복수의 입력 모듈(28_1~28_m)을 점검하고 데이터를 수집하기 위한 진단 메시지를 전달하고, 차량에 탑재된 복수의 전자 제어 모듈(22_1~22_n) 및 복수의 입력 모듈(28_1~28_m)로부터 전달된 데이터들을 네트워크 서버로 전송할 수 있다.
차량(20) 내 네트워크는 이더넷(Ethernet) 통신, CAN(Controller Area Network) 통신, CAN-FD(CAN with Flexible Data-Rate), LIN(Local Interconnect Network) 통신, MOST(Media Oriented Systems Transport) 통신 등을 포함할 수 있다. 여기서, 입출력 수단(25)은 ODB단자(32), 이더넷 단자(34), 및 텔레매틱스 장치(36) 중 적어도 하나를 포함할 수 있다.
차량(20)이 서로 다른 통신 방식의 복수의 차량용 네트워크를 포함할 수 있고, 그에 따라 입출력 수단(25)과 적어도 하나의 차량용 게이트 웨이(24) 사이의 연결도 서로 상이할 수 있다. 예를 들어, 이더넷 단자(28) 및 텔레매틱스 장치(30) 중 적어도 하나의 경우 적어도 하나의 차량용 게이트 웨이(24)와의 연결은 이더넷 통신 방식을 바탕으로 이루어질 수 있다. 반면, 입출력 수단으로서 OBD 단자(26)의 경우 적어도 하나의 게이트 웨이(24)와의 연결은 CAN 통신 방식을 바탕으로 이루어질 수 있다.
제어 시스템(24)은 차량(20)의 주행을 제어하는 장치로서, 복수의 전자 제어 모듈(22_1~22_n) 및 복수의 입력 모듈(28_1~28_m)과 연동하여 데이터, 명령을 입출력할 수 있다. 제어 시스템(24)은 복수의 함수를 포함하는 적어도 하나의 프로그램을 수행하는 전자 제어 장치일 수 있다. 제어 시스템(24)은 적어도 하나의 프로그램을 저장하는 적어도 하나의 제1저장부, 적어도 하나의 프로그램을 실행하는 적어도 하나의 프로세서, 및 제1저장부에 저장된 상기 적어도 하나의 프로그램을 실행하는 과정에서 발생하거나 요구되는 데이터 혹은 값을 저장하는 제2저장부를 포함할 수 있다.
도2는 차량의 제어 시스템과 연결된 차량 내 장치들을 설명한다. 구체적으로, 도2는 도1에 도시된 제어 시스템(24)과 연동하는 제1전장 장치(22) 및 제2전장 장치(28)를 구성하는 복수의 전자 제어 모듈(22_1~22_n) 및 복수의 입력 모듈(28_1~28_m)의 일례를 설명할 수 있다. 예를 들어, (a)는 제어 시스템(electrical control unit, ECU)에 데이터를 입력하는 장치 혹은 모듈을 설명하고, (b)는 제어 시스템(ECU)이 제어하거나 데이터를 전달하는 장치 혹은 모듈을 설명한다.
도2의 (a)를 참조하면, 제어 시스템(ECU)은 공조장치 스위치(106), 공기유량계(airflow meter, 108), 전자기기 스위치(110), 파워스티어링 압력 스위치(power-steering pressure switch, 112), 스로틀 센서(throttle sensor, 114), 냉각수 온도 센서(coolant thermos sensor, 116), 산소 센서(oxygen sensor, 118), 공기 흡입량 센서(air-intake sensor, 120), 진단 연결부(diagnosis connector, 122), 클러치 스위치(clutch switch, 124), 브레이크 등 스위치(stop light switch, 126), 점화 스위치(ignition switch, 128), 배터리(130), 분배기(distributor, 132), 노크 센서(knock sensor, 102), 노크 센서 제어기(104) 등과 연동할 수 있다. 각각의 장치들이 보내오는 상태 정보를 인지하여 차량의 상태, 운전자의 조작에 대한 정보를 수집할 수 있다.
도2의 (b)를 참조하면, 수집된 정보를 바탕으로 제어 시스템(ECU)은 공회전 제어 벨브(idle speed controller/actuator (ISC, ISA) valve, 152), 터보차저 표시기(turbocharger indicator, 154), 오버부스트 경고 부저(overboost warning buzzer, 134), 릴레이 회로(circuit-opening relay, 136), 연료 주입기(fuel injector, 138), 진단 연결부(122), 연료 펌프 압력 조절을 위한 솔레노이드 밸브(pressure-regulator control solenoid value, 140), 웨스트 게이트 밸브(wastegate value, 142), 증발 가스 제어를 위한 솔레노이드 밸브(purge control solenoid value, 144), 연료 펌프 저항기/중계기(fuel pump resistor/relay, 146), 점화기(igniter, 148), 공조 중계기(air-conditioning relay, 150) 등을 제어할 수 있다.
도1 및 도2를 참조하면, 실시예에 따라 제어 시스템(도2의 ECU, 도1의 24)은 차량의 엔진, 모터, 브레이크, 변속기 등의 대부분의 장치들을 감시하고 제어할 수 있다. 제어 시스템은 적어도 하나의 프로세서와 적어도 하나의 메모리를 포함하는 컴퓨팅 장치로 구현될 수 있으며, 도1 및 도2에서 설명한 차량 내 복수의 장치들과의 연동을 위한 적어도 하나의 프로그램이 저장될 수 있다.
도3은 제어 시스템의 프로그램 구조를 설명한다. 제어 시스템에 포함된 적어도 하나의 프로그램은 복수의 함수를 포함할 수 있다. 여기서, 함수는 수집된 정보를 통해 특정한 정보, 데이터 등을 생성하거나 입력되는 정보, 데이터에 대응하여 차량 내 기기들을 제어하는 등의 특정 동작을 수행하기 위해 호출될 수 있는 부분 코드 혹은 프로그램 단위로 생각할 수 있다. 구체적으로, (a)는 프로그램이 수행되는 과정에서 함수들이 순차적으로 호출되는 경우를 설명하고, (b)는 프로그램이 수행되는 과정에서 함수들이 여러 호출 경로로 호출될 수 있는 경우를 설명한다.
도3의 (a)에서 도시된 바와 같이, 차량의 주행 중 주행 환경 또는 운전자의 조작에 대응하여 프로그램 내 함수(1, 2, 3, 4)는 순차적으로 호출되어 수행될 수 있다. 하지만, 차량의 주행 환경 및 운전자의 조작은 매우 복잡하여 (a)와 같이 프로그램 내 함수들이 순차적으로 호출되어 수행되는 경우는 일반적이지 않을 수도 있다.
도3의 (b)를 참조하면, 차량의 주행 중 주행 환경 또는 운전자의 조작에 대응하여 프로그램 내 함수(1, 2, 3, 4, 5, 6, 7, 8)는 다양항 경로와 다양한 순서로 호출될 수 있다. 도1 및 도2를 참조하면, 제어 시스템과 연동하는 기기 및 장치는 매우 복잡하고, 이러한 기기 및 장치를 제어하기 위한 함수 역시 매우 복잡할 수 있다.
도4는 제어 시스템 내 메모리 구조를 설명한다.
도시된 바와 같이, 제어 시스템 내 메모리는 코드(code) 영역, 데이터(data) 영역, BSS(block started by symbol) 영역, 힙(heap) 영역 및 스택(stack) 영역을 포함하는 복수의 영역으로 구성될 수 있다.
구체적으로, 코드 영역은 프로그램의 코드 자체를 구성하는 메모리 영역으로 기계어 코드, 함수 등을 포함하는 Hex파일이나 BIN파일 등이 저장될 수 있다. 데이터 영역은 전역변수(global), 정적변수(static), 배열(array), 구조체(structure) 등이 저장되는 영역(initialized data segment)으로, 초기화된 데이터가 저장될 수 있다. 초기화 되지 않은 데이터(uninitialized variables)는 BSS(Block Stated Symbol) 영역에 저장될 수 있다. 여기서, 코드 영역, 데이터 영역, BSS 영역은 프로그램의 컴파일 시 크기가 결정될 수 있다. 예를 들어, 데이터 영역은 프로그램이 실행 될 때 생성되고 프로그램이 종료 되면 시스템에 반환될 수 있다.
한편, 힙(Heap) 영역 및 스택(stack) 영역은 프로그램이 수행 될 때(run time) 메모리 내 차지하는 영역의 크기가 결정될 수 있다. 힙 영역은 필요에 의해 동적으로 메모리를 할당 하고자 할 때 위치하는 메모리 영역으로 동적 데이터 영역이라고 부르며, 메모리 주소 값에 의해서만 참조되고 사용되는 영역이다. 스택 영역은 프로그램이 사용하는 임시 메모리 영역으로, 지역(local) 변수, 매개변수(parameter), 리턴 값 등 잠시 사용되었다가 사라지는 데이터를 저장하는 영역이다. 스택 영역은 함수 호출 시 생성되고, 함수가 끝나면 시스템에 반환 될 수 있다. 스택 영역의 크기는 각 프로세스마다 할당 되지만 프로세스가 메모리에 로드 될 때 스택 사이즈가 고정되어 있어, 런타임 시에 스택 사이즈를 바꿀 수는 없고, 명령 실행 시 자동으로 증가/감소할 수 있기 때문에 보통 메모리의 마지막 번지를 위치로 지정하고 메모리의 뒤부터 앞으로 함수에 배정될 수 있다.
메모리의 스택 영역의 위와 같은 특징으로 인하여, 함수가 수행될 때 함수에 배정된 메모리 공간을 넘어서는 경우(예, 프로그램이 호출 스택에서 이용 가능한 공간 이상을 사용하려고 시도하는 경우)가 발생하는데, 이를 스택 오버플로우(stack overflow)라고 한다. 함수에 배정되는 메모리 위치인 스택 포인터가 스택 영역의 경계를 넘어서는 경우에도 오버플로우가 발생할 수 있다.
도3의 (b)에서 설명하고 있는 것과 같이, 각각의 함수는 한번 수행되고 끝나는 것이 아니라 다른 함수의 동작 후 다시 수행될 수도 있다. 또한, 프로그램에 자신을 정의할 때 자기 자신을 재참조하는 방법을 채용하는 재귀(再歸, Recursion) 함수 등을 포함하고 있는 경우에는 스택 영역에서 해당 함수가 차지하는 범위를 확보하기 어려울 수가 있다.
도5는 제어 시스템의 동작 방법의 제1예를 설명한다.
도1 내지 도4에서 설명한 바와 같이, 제어 시스템은 차량에 포함된 장치 및 기기와 연동할 수 있는 복수의 함수를 포함하는 적어도 하나의 프로그램을 포함하고, 수행할 수 있다. 제어 시스템의 동작 방법은 복수의 함수의 함수 호출 깊이를 인지하는 단계(12), 함수 호출 깊이가 최대값인 최대 깊이 함수 및 인터럽트 서비스 루틴(Interrupt Service Routine, ISR)에 탐침 코드를 삽입하는 단계(14), 탐침 코드가 삽입된 최대 깊이 함수를 수행할 때, 메모리 영역의 사용량을 계산하는 단계(16), 및 탐침 코드가 수행될 때, 최대 깊이 함수의 함수 호출 깊이 또는 인터럽트 서비스 루틴(ISR)이 수행될 때의 함수 호출 깊이와 상기 사용량을 출력하는 단계(18)를 포함할 수 있다.
실시예에 따라, 프로그램에 포함되는 탐침 코드(probe code)는 최대 깊이 함수 및 인터럽트 서비스 루틴(Interrupt Service Routine, ISR)의 시작과 끝에 삽입될 수 있다. 여기서, 인터럽트 서비스 루틴은 인터럽트 접수에 의해 발생되는 인터럽트에 대응하여 특정 기능을 처리하는 기계어 코드 루틴으로서, 제어 시스템에서 수행되는 프로그램으로부터 독립적으로 실행될 수 있다. 예를 들면, 프로그램 내 복수의 함수가 순차적, 병렬적, 임의적으로 수행되는 동안, 함수 호출 깊이가 가장 깊은 함수 또는 임의적으로 수행될 수 있는 인터럽트 서비스 루틴에 포함되는 탐침 코드는 메모리 장치의 사용을 확인하여 출력할 수 있다.
도4에서 설명한 바와 같이, 메모리 내 스택 영역은 프로그램 내 함수들이 호출된 후 수행되는 과정에서 데이터 등을 저장하기 위해 사용되며, 스택 포인터(위치)는 계속 변해할 수 있다. 스택 영역의 전체 크기는 정해져 있으므로, 스택 포인터의 위치를 이용하여 스택 영역 중 얼마가 사용되고 있는지 인지할 수 있다.
한편, 도시되지 않았지만, 제어 시스템의 동작 방법은 전송된 함수 호출 깊이에 대응하여 설정된 사용량의 임계값과 전송된 사용량을 비교하는 단계, 및 비교 결과에 대응하여 페일 세이프(fail safe) 로직을 수행하는 단계를 더 포함할 수 있다. 스택 영역의 사용량을 확인하고, 프로그램 수행 시 권장되는 혹은 추천되는 수준의 사용량을 초과하여 사용되는 경우, 제어 시스템은 스택 오버플로우가 발생하는 것을 예방하기 위해 페일 세이프 로직을 수행할 수 있다. 예를 들어, 프로그램에서 호출된 함수의 깊이가 5인 경우, 메모리 사용량의 임계값은 70%라고 기 설정될 수 있다. 실제 깊이가 5인 함수가 호출되었을 때 메모리 사용량을 확인하고, 실제 사용량이 70%가 초과한 경우 프로그램이 수행되면서 예상보다 많은 스택 영역을 사용하고 있음을 알 수 있다.
오버플로우 현상과 같이 제어 시스템의 메모리 내 오류가 발생하는 경우, 도1 및 도2에서 설명한 차량 내 장치와 기기에 대한 제어 시스템의 통제가 원활하지 않을 수 있다. 이 경우, 스로틀 밸브의 제어가 제대로 이루어지지 않아 급발진 등의 오류가 발생할 수도 있다.
실시예에 따라, 페일 세이프 로직은 실제 사용량이 90%, 95% 등의 상대적이 아닌 기 설정된 고정된 기준을 초과했을 때, 수행될 수도 있다. 즉, 메모리의 사용량이 메모리 총량의 대부분을 차지하는 경우, 프로그램에서 수행되어야 하는 함수 등의 추가 수행을 중지하고, 메모리 사용량을 낮추기 위한 루틴을 수행함으로써 오버플로우 현상의 발생을 예방할 수 있다.
또한, 도시되지 않았지만, 제어 시스템의 동작 방법은 페일 세이프 로직이 수행되면 페일 세이프 로직의 수행 원인과 결과를 표시하는 단계를 더 포함할 수 있다. 차량의 운전자 또는 차량의 유지, 보수, 관리를 위한 경우, 페일 세이프 로직의 수행과 함께 차량 내 제어 시스템이 수행하는 절차가 원활하게 수행되는 지를 점검할 수 있다.
실시예에 따라, 메모리 내 스택 영역의 사용량을 계산하기 위해서는, 스택 영역의 할당된 시작 주소 및 끝 주소로 총량을 먼저 결정한다. 이후, 메모리의 끝(시작 주소)부터 스택 포인트인 현재 주소까지를 현재 사용량으로 결정할 수 있다. 이후, 총량에 대한 현재 사용량의 비율을 결정할 수 있다.
한편, 탐침 코드를 통해 메모리 내 스택 영역의 현재 사용량을 인지할 수 있는 경우, 현재 호출되어 수행되는 함수의 함수 호출 깊이, 현재 사용량 및 현재 시각정보 등을 표시할 수 있다. 이러한 정보들을 표, 그래프 등의 시각화를 통하여 사용자(운전자 혹은 관리자 등)에게 표시함으로써, 제어 시스템 내의 메모리 사용의 실시간 현황을 전달할 수 있다. 제어 시스템 내의 메모리 사용의 실시간 현황을 피드백할 수 있는 경우, 차량의 제조사 또는 제어 시스템의 개발자 등인 현재 차량에 탑재된 제어 시스템의 문제점, 개선점 등을 보다 용이하게 파악할 수 있고, 리콜, 펌웨어 업그레드 등의 방법을 통해 개선된 프로그램을 차량의 소유자, 운전자에게 제공할 수 있다.
도6은 제어 시스템의 프로그램 내 탐침 코드가 삽입되는 위치의 제1예를 설명한다.
도시된 바와 같이, 프로그램(40)은 복수의 함수(42, 44)를 포함할 수 있다. 또한 제어 시스템은 프로그램(40)과 독립적으로 실행되는 복수의 인터럽트 서비스 루틴(46, 50)을 포함할 수 있다.
프로그램 내 탐침 코드(66)는 프로그램(40)에서 함수 호출 깊이가 가장 깊은 최대 깊이 함수(44)의 시작 위치에 포함될 수 있다. 또한, 복수의 인터럽트 서비스 루틴(46, 50)에 포함된 함수(48, 52)의 시작 위치에도 포함될 수 있다.
통상적으로, 제어 시스템에 포함되는 프로그램은 여러 번의 시뮬레이션과 디버깅 작업을 통해 완성된 것으로, 메모리에서 오버플로우가 발생하는 경우가 흔하지 않을 수 있다. 또한, 프로그램을 위해 할당할 수 있는 메모리의 양을 늘려 오버플로우를 예방할 수도 있다. 그럼에도 불구하고, 오버플로우가 발생한다면 프로그램 내 호출되는 함수의 호출 깊이가 가장 깊은 최대 깊이 함수(44)를 수행하는 과정에서 오버플로우가 발생할 가능성이 매우 높다. 따라서, 오버플로우를 감지하기 위한 탐침 코드(66)를 함수 호출 깊이가 가장 깊은 최대 깊이 함수(44)에 포함시킬 수 있다. 이는 프로그램 내 복수의 함수마다 탐침 코드를 포함시킬 경우, 제어 시스템의 자원(resource)이 낭비되는 것을 방지할 수 있다.
또한, 복수의 인터럽트 서비스 루틴(46, 50)에 포함된 함수(48, 52)의 시작 위치에 탐침 코드(68, 70)를 포함시킬 경우, 인터럽트 서비스 루틴이 수행될 때마다 제어 시스템 내 메모리의 사용 현황을 모니터링할 수 있는 장점이 있다.
도7은 제어 시스템의 프로그램 내 탐침 코드가 삽입되는 위치의 제2예를 설명한다.
도시된 바와 같이, 프로그램(40)은 복수의 함수(42, 44)를 포함할 수 있다. 또한 제어 시스템은 프로그램(40)과 독립적으로 실행되는 복수의 인터럽트 서비스 루틴(46, 50)을 포함할 수 있다. 실시예에서 탐침 코드(54, 56)는 프로그램(40)의 시작과 끝에 배치될 수 있다. 또한, 탐침 코드(58, 60, 62, 54)는 복수의 인터럽트 서비스 루틴(46, 50)의 시작과 끝에도 포함될 수 있다.
실시예에 따라, 제어 시스템에서 수행되는 프로그램(40)은 복수 개로서 멀티 프로세스일 수 있다. 또한, 각각의 프로그램은 하나의 스레드를 가지고 있지만, 환경에 따라 둘 이상의 스레드를 동시에 실행하는 멀티 스레드(thread)를 실행할 수도 있다. 멀티 프로세스 또는 멀티 스레드가 실행되면, 각각의 프로세스 또는 각각의 스레드에서 시작과 끝에 포함된 탐침 코드를 통해 메모리 사용에 관련한 현재 상황을 인지할 수 있다.
도6 및 도7을 참조하면, 탐침 코드의 삽입 위치에 따라 메모리 사용에 대한 상황을 감지하는 데 효율성의 차이가 크게 발생할 수 있다. 따라서, 제어 시스템에 포함되는 프로그램의 동작에 대응하여 탐침 코드의 삽입 위치를 결정할 필요가 있다. 반면, 각 프로그램에서 호출되는 함수마다 탐침 코드를 배치시키는 것은 제어 시스템의 전체 성능에 저하를 불러올 수 있다.
도8은 차량 제어 시스템의 프로그램에 포함된 함수들의 함수 호출 깊이를 판단하는 방법의 예를 설명한다. 실시예에 따라, 함수 호출 깊이를 판단하는 방법은 다양하게 적용될 수 있으나, 메모리의 스택 영역의 사용 현황과 관련한 함수 호출 깊이를 판단하기 위해서 깊이 우선 탐색(Depth First Search, DFS) 알고리즘을 채용할 수 있다.
도시된 바와 같이, 프로그램에 8개의 함수(1, 2, 3, 4, 5, 6, 7, 8)가 포함되는 경우를 가정할 수 있다. 또한, 8개의 함수 간 이동 혹은 호출(함수 내 조건 등에 따라)은 서로를 잇는 선에 따라 이루어질 수 있다고 가정할 수 있다. 깊이 우선 탐색(DFS) 알고리즘은 가릴 것 없이, 방문했던 길이 아니라면 아무 곳이나 이동하여 판단할 수 있다. 먼저, 최대 깊이 함수(1)부터 시작하여 제2함수(2)로 이동하고 제2함수(2)부터 순차적으로 호출될 수 있다고 가정할 수 있다.
구체적으로, 도시된 바와 같이, 함수 간 방문 순서를 보시면 '1 -> 2 -> 4 -> 8 -> 5 -> 6 -> 3 -> 7'과 같은 순서로 방문되고 있다. 먼저, 현재 위치는 함수 1이고, 함수 2, 3을 방문하지 않았으므로 우선은 함수 2로 이동한다(①). 이후, 현재 위치는 함수 2이고, 함수 1을 방문했으며, 함수 4, 5를 방문하지 않았으므로 우선은 함수 4로 이동한다(②). 이후, 현재 위치는 함수 4이고, 함수 2를 방문했으며, 함수 8을 방문하지 않았으므로 함수 8로 이동한다(③). 이후, 현재 위치는 함수 8이고, 함수 4를 방문했으며, 함수 5, 6, 7을 방문하지 않았으므로 우선은 함수 5로 이동한다(④). 이후, 함수 5로 이동한 후에 함수 2와 함수 8은 이미 방문된 곳이므로 더 이상 갈 곳이 없으니 전에 방문한 정점으로 돌아간다. 이후, 현재 위치는 함수 8이고, 함수 4, 5를 방문했으며, 함수 6, 7을 방문하지 않았으므로 우선은 함수 6로 이동한다(⑤). 이후, 현재 위치는 함수 6이고, 함수 8을 방문했으며, 함수 3을 방문하지 않았으므로 함수 3으로 이동한다(⑥). 이후, 현재 위치는 함수 3이고, 함수 1, 6을 방문했으며, 함수 7을 방문하지 않았으므로 함수 7로 이동한다(⑦). 이후, 현재 위치는 함수 7이고, 함수 3을 방문했으며, 함수 8번 노드도 이미 방문된 곳이므로 더 이상 진행하지 않는다(⑧). 전술한 깊이 우선 탐색(DFS) 알고리즘은 스택 영역을 이용하고, 트리 혹은 그래프 같은 자료구조에서 함수의 호출 깊이를 탐색할 때 유용하게 사용될 수 있다.
도9는 제어 시스템의 프로그램 내 함수들이 메모리 권장 사용량을 초과한 경우를 설명한다. 구체적으로, 탐침 코드를 통해 메모리의 사용 현황을 감지하고 프로그램의 요구 사양을 초과하는지 판단하는 과정을 설명한다.
도시된 바와 같이, 제어 시스템에서 도 6 및 7에서 설명한 프로그램(40)과 복수의 인터럽트 서비스 루틴(46, 50)의 실행을 가정한다. 또한, 프로그램(40)과 복수의 인터럽트 서비스 루틴(46, 50)의 호출 순서는 프로그램(40), 프로그램(40) 내 함수(42) 및 함수(44), 인터럽트 서비스 루틴(46), 인터럽트 서비스 루틴(46) 내 함수(50), 인터럽트 서비스 루틴(52), 인터럽트 서비스 루틴(52) 내 함수 (54)의 순이라고 가정한다.
메모리의 스택 영역은 호출 순서에 따라 뒤부터 앞으로(주소의 역순) 각 프로그램, 인터럽트 서비스 루틴, 함수에 순차적으로 할당될 수 있다. 여기서, 프로그램의 함수의 수행으로 인하여 할당된 스택 영역의 89%를 사용할 수 있는 경우를 가정한다. 예를 들어, 도6에서 설명한 탐침 코드(68)에 대응하여 스택 영역에서 메모리 사용량을 확인할 수 있다. 여기서, 해당 함수(48) 및 인터럽트 서비스 루틴(46)이 수행된 경우에 요구 사향이 70%(임계값) 미만인 상황이라고 가정한다. 도시된 바와 같이, 해당 함수(48)의 호출에 대응하여 스택 영역이 할당된 후 메모리 사용 영역을 확인하는 시점에서, 인터럽트 서비스 루틴(46) 내 함수(48)에 포함된 탐침 코드(68)를 통해 메모리의 스택 영역이 임계값을 넘어 사용되고 있음(75%)이 확인되면 해당 시점의 현재 할당된 위치(스택 포인트)에서 요구사향의 초과가 발생함을 인지할 수 있다.
이러한 정보를 표시함으로써, 사용자(운전자, 관리자) 등은 제어 시스템에서 기 설정된 사용량에 비하여 더 많은 스택 영역을 사용하거나 사용할 수 있음(예, 프로그램의 함수의 수행으로 인하여 할당된 스택 영역의 89%를 사용)을 예측할 수 있고, 오류가 발생하지 않도록 미리 조처하거나 지속적인 모니터링을 통해 오류에 대비할 수 있다.
도10은 제어 시스템의 프로그램 내 함수들이 오버 플로우가 예상되는 메모리 사용량을 초과한 경우를 설명한다. 도10은 도9과 실질적으로 동일한 프로그램과 인터럽트 서비스 루틴이 수행되는 경우를 가정한다. 다만, 도9에서와 같이 메모리 내 스택 영역에 메모리 사용 현황이 기 설정된 임계값을 넘었음을 인지하지 못하거나 인지하더라도 아무런 조치가 없이 지속적으로 프로그램 및 인터럽트 서비스 루틴이 수행되어 메모리 사용량이 계속 증가하였다고 가정할 수 있다.
제어 시스템이 프로그램과 인터럽트 서비스 루틴을 지속적으로 수행하고, 도6에서 설명하는 탐침 코드(70)에 의하여 메모리 내 스택 영역의 현재 사용량이 89%에 이르렀다고 가정한다. 임계값은 70%임에도 사용량이 89%까지 증가하였으므로, 오버플로우와 같은 오류가 발생할 가능성이 매우 높다고 판단할 수 있다. 이 경우 최악 시나리오를 추정하여 페일 세이프 로직과 같은 오류 방지를 위한 절차 또는 프로세스가 수행될 필요가 있음을 표시할 수 있다.
도11은 제어 시스템의 동작 방법의 제2예를 설명한다.
도시된 바와 같이, 제어 시스템에서 수행되는 함수 혹은 인터럽트 서비스 루틴의 시작 위치에 탐침 코드를 삽입하고(72), 최대 호출 깊이의 함수에 탐침 코드를 삽입할 수 있다(76).
제어 시스템에서 수행되는 함수 또는 인터럽트 서비스 루틴의 수행 정보를 전송한다(74). 이때, 수행 정보에는 함수 또는 인터럽트 서비스 루틴의 아이디(ID), 호출될 때 함수 또는 인터럽트 서비스 루틴에 메모리의 스택 영역이 배정된 뒤 메모리에서의 위치 정보(예, 스택 포인트) 등이 포함될 수 있다. 함수 또는 인터럽트 서비스 루틴이 호출되어 수행될 때마다 수행 정보를 전송하면, 함수 또는 인터럽트 서비스 루틴이 호출될 때마다 메모리 내 스택 영역의 사용량을 지속적으로 모니터링할 수 있다.
이후, 최대 호출 깊이의 함수가 수행되는 지의 여부를 전송할 수 있다(78). 최대 호출 깊이의 함수가 수행되는 경우, 메모리 내 스택 영역의 사용량이 가장 클 수 있다.
최대 호출 깊이의 함수가 호출되어 수행되면, 메모리 내 스택 영역의 현재 사용량을 확인할 수 있다(80). 이때, 현재 사용량은 스택 영역 내 현재 주소와 스택 영역의 시작 주소(예, 메모리의 마지막 주소)의 차이(예, 절대값)를 통해 산출될 수 있다.
산출된 현재 사용량을 기 설정된 임계값(예, 요구사항 메모리의 양)과 비교하여 현재 사용량이 더 많은지를 확인한다. 만약 현재 사용량이 임계값보다 작은 경우, 현재 수행되는 함수 또는 인터럽트 서비스 루틴의 수행 경로를 시각화하여 표시할 수 있다(88). 이 경우, 메모리 내 스택 영역의 오버플로우 가능성은 매우 낮아진다.
한편, 현재 사용량이 임계값보다 큰 경우, 현재 사용량이 최악 시나리오를 수행할 수 있을 정도에 이렀거나 초과했는지를 판단할 수 있다(84). 만약 메모리 내 스택 영역의 사용량이 스택 영역의 총량에 가까워 사용량을 낮추어야 할 정도가 아니라면 현재 수행되는 함수 또는 인터럽트 서비스 루틴의 수행 경로를 시각화(예, 표, 그래프 등, 도9 및 10 참조)하여 표시할 수도 있다(88).
하지만, 현재 사용량이 최악 시나리오를 수행할 수 있을 정도에 이르렀다면, 메모리 내 스택 영역의 현재 사용량과 관련하여 메모리 사용량이 초과되었음을 감지하고 오버플로우 등의 문제를 예방하기 위해 최악 시나리오(예, 페일 세이프(fail safe) 로직 등)의 수행을 고지할 수 있다(86).
이후, 메모리 내 스택 영역의 현재 사용량에 관련하여 현재 수행되는 로직, 함수 또는 인터럽트 서비스 루틴의 수행 경로를 시각화하여 표시할 수도 있다(88).
도12는 제어 시스템의 구성을 설명한다. 여기서, 제어 시스템은 복수의 함수를 포함하는 적어도 하나의 프로그램을 수행할 수 있는 컴퓨팅 장치일 수 있다.
도시된 바와 같이, 제어 시스템은 적어도 하나의 프로그램을 저장하는 적어도 하나의 제1저장부(92), 적어도 하나의 프로그램을 실행하는 적어도 하나의 프로세서(94), 및 제1저장부(92)에 저장된 적어도 하나의 프로그램을 실행하는 과정에서 발생하거나 요구되는 데이터 혹은 값을 저장하는 제2저장부(96)를 포함할 수 있다.
실시예에 따라, 제1저장부(92)는 전원이 공급되지 않아도 프로그램 등을 저장할 수 있는 장치일 수 있으며, 제2저장부(96)는 제어 시스템에 전원이 공급된 경우에 프로세서(94)에 의해 수행되는 프로그램에 의해 생성되는 데이터 및 정보 등을 저장하는 장치일 수 있다.
한편, 실시예에 따라, 제1저장부(92)와 제2저장부(96)는 하나의 메모리 장치로 구현될 수도 있고, 물리적으로 분리된 복수의 메모리 장치로 구현될 수도 있다.
한편, 제어 시스템(90)은 차량용 네트워크(100)를 통해 차량에 탑재된 기기 혹은 진단 장치 등(98)과 연동할 수 있다.
제어 시스템(90) 내 적어도 하나의 프로세서(94)를 통하여, 프로그램에서 실행되는 함수의 함수 호출 깊이가 인지될 수 있다. 또한, 프로세서(94)는 함수 호출 깊이가 최대값인 최대 깊이 함수 및 인터럽트 서비스 루틴(Interrupt Service Routine, ISR)에 삽입된 탐침 코드를 실행할 수 있고, 탐침 코드가 삽입된 상기 최대 깊이 함수를 수행할 때 제2저장부 내 메모리 영역의 사용량을 산출할 수 있다. 또한, 탐침 코드가 수행될 때, 프로세서(94)는 최대 깊이 함수의 함수 호출 깊이 또는 인터럽트 서비스 루틴(ISR)이 수행될 때의 함수 호출 깊이와 현재 사용량을 출력할 수 있다.
실시예에 따라, 탐침 코드는 최대 깊이 함수 및 인터럽트 서비스 루틴(ISR)의 시작과 끝에 삽입될 수 있다. 여기서, 인터럽트 서비스 루틴은 프로그램으로부터 독립적으로 실행될 수 있다.
또한, 적어도 하나의 프로세서(94)를 통하여, 전송된 함수 호출 깊이에 대응하여 설정된 사용량의 임계값과 전송된 사용량이 비교될 수 있다. 비교 결과에 대응하여, 적어도 하나의 프로세서(94)는 페일 세이프(fail safe) 로직을 수행할 수 있다. 여기서 적어도 하나의 프로세서(94)는 멀티 프로세서 또는 멀티 스레드를 수행할 수 있다.
도시되지 않았지만, 차량 혹은 진단 장치는 적어도 하나의 프로세서(94)에 의해 수행된 페일 세이프 로직의 원인과 결과를 표시하거나 함수 호출 깊이, 사용량 및 시각정보를 표시하는 표시장치를 더 포함할 수 있다.
여기서 메모리 내 사용량을 감시하는 영역은 스택(stack) 영역일 수 있다. 프로그램에서 실행되는 함수가 적어도 하나의 프로세서(94)에 의해 호출되면, 해당 함수에 스택 영역이 할당되고, 함수가 종료되면 할당되었던 스택은 시스템에 반환될 수 있다.
또한, 적어도 하나의 프로세서(94)를 통하여, 스택 영역의 할당된 시작 주소 및 끝 주소로 총량이 결정되고, 시작 주소부터 현재 주소까지로 현재 사용량이 결정될 수 있다. 이후, 적어도 하나의 프로세서(94)는 총량에 대한 현재 사용량의 비율로 사용량을 결정할 수 있다.
한편, 도시되지 않았지만, 차량 혹은 제어 시스템은 최대 깊이 함수 및 상기 인터럽트 서비스 루틴의 함수 식별자, 함수 호출 깊이, 사용량 및 시각정보를 무선통신망을 통해 전송하는 전송부, 및 최대 깊이 함수 및 인터럽트 서비스 루틴의 함수 식별자, 함수 호출 깊이, 사용량 및 시각정보를 전달할 수 있는 이더넷 포트(Ethernet port)를 더 포함할 수 있다.
전술한 바와 같이, 실시예는 메모리 사용량에 대한 요구사양에 초과가 발생하는 오류를 사전에 예방할 수 있다. 또한, 실시예는 최악 시나리오 수행 여부 알림을 위한 최악 조건의 메모리 사용량을 측정할 수 있어, 제어 시스템에서 오류가 발생하는 것을 차단할 수 있다. 또한, 실시예는 소프트웨어 수행경로 시각화를 통한 메모리 요구사양에서 오류의 발생 원인을 분석하는 데 용이한 데이터와 자료를 제공할 수 있다.
상술한 실시예에 따른 방법은 컴퓨터에서 실행되기 위한 프로그램으로 제작되어 컴퓨터가 읽을 수 있는 기록 매체에 저장될 수 있으며, 컴퓨터가 읽을 수 있는 기록 매체의 예로는 ROM, RAM, CD-ROM, 자기 테이프, 플로피디스크, 광 데이터 저장장치 등이 포함된다.
컴퓨터가 읽을 수 있는 기록 매체는 네트워크로 연결된 컴퓨터 시스템에 분산되어, 분산방식으로 컴퓨터가 읽을 수 있는 코드가 저장되고 실행될 수 있다. 그리고, 상술한 방법을 구현하기 위한 기능적인(function) 프로그램, 코드 및 코드 세그먼트들은 실시예가 속하는 기술분야의 프로그래머들에 의해 용이하게 추론될 수 있다.
본 발명은 본 발명의 정신 및 필수적 특징을 벗어나지 않는 범위에서 다른 특정한 형태로 구체화될 수 있음은 당업자에게 자명하다.
따라서, 상기의 상세한 설명은 모든 면에서 제한적으로 해석되어서는 아니되고 예시적인 것으로 고려되어야 한다. 본 발명의 범위는 첨부된 청구항의 합리적 해석에 의해 결정되어야 하고, 본 발명의 등가적 범위 내에서의 모든 변경은 본 발명의 범위에 포함된다.
24, 90: 제어 시스템
30: 차량 진단 장치
54, 56, 58, 60, 62, 64, 66, 68, 70: 탐침 코드

Claims (20)

  1. 복수의 함수를 포함하는 적어도 하나의 프로그램을 수행하는 전자 제어 장치에 있어서,
    상기 복수의 함수의 함수 호출 깊이를 인지하는 단계;
    상기 함수 호출 깊이가 최대값인 최대 깊이 함수 및 인터럽트 서비스 루틴(Interrupt Service Routine, ISR)에 탐침 코드를 삽입하는 단계;
    상기 탐침 코드가 삽입된 상기 최대 깊이 함수를 수행할 때, 메모리 영역의 사용량을 계산하는 단계; 및
    상기 탐침 코드가 수행될 때, 상기 최대 깊이 함수의 함수 호출 깊이 또는 상기 인터럽트 서비스 루틴(ISR)이 수행될 때의 함수 호출 깊이와 상기 사용량을 출력하는 단계
    를 포함하는, 전자 제어 장치의 동작 방법.
  2. 제1항에 있어서,
    상기 탐침 코드는 상기 최대 깊이 함수 및 상기 인터럽트 서비스 루틴(ISR)의 시작과 끝에 삽입된, 전자 제어 장치의 동작 방법.
  3. 제1항에 있어서,
    상기 인터럽트 서비스 루틴은 상기 프로그램으로부터 독립적으로 실행되는, 전자 제어 장치의 동작 방법.
  4. 제1항에 있어서,
    전송된 상기 함수 호출 깊이에 대응하여 설정된 상기 사용량의 임계값과 전송된 상기 사용량을 비교하는 단계; 및
    비교 결과에 대응하여, 페일 세이프(fail safe) 로직을 수행하는 단계
    를 더 포함하는, 전자 제어 장치의 동작 방법.
  5. 제4항에 있어서,
    상기 페일 세이프 로직의 수행 원인과 결과를 표시하는 단계
    를 더 포함하는, 전자 제어 장치의 동작 방법.
  6. 제1항에 있어서,
    상기 메모리 영역은 스택(stack) 영역인, 전자 제어 장치의 동작 방법.
  7. 제6항에 있어서,
    상기 사용량을 계산하는 단계는
    상기 사용량은 상기 스택 영역의 할당된 시작 주소 및 끝 주소로 총량을 결정하는 단계;
    상기 시작 주소부터 현재 주소까지로 현재 사용량을 결정하는 단계; 및
    상기 총량에 대한 상기 현재 사용량의 비율을 결정하는 단계
    를 포함하는, 전자 제어 장치의 동작 방법.
  8. 제1항에 있어서,
    상기 함수 호출 깊이, 상기 사용량 및 시각정보를 표시하는 단계
    를 더 포함하는, 전자 제어 장치의 동작 방법.
  9. 프로세서에 의해 실행되는 것을 통하여, 청구항 제1항 내지 제8항 중 어느 한 항에 기재된 전자 제어 장치의 동작 방법을 실현하도록 컴퓨터 판독 가능한 기록매체에 기록된 응용 프로그램.
  10. 프로세서에 의해 실행되는 것을 통하여, 청구항 제1항 내지 제8항 중 어느 한 항에 기재된 전자 제어 장치의 동작 방법을 실현하는 응용 프로그램이 기록된 컴퓨터 판독 가능한 기록매체.
  11. 복수의 함수를 포함하는 적어도 하나의 프로그램을 수행하는 전자 제어 장치에 있어서,
    상기 적어도 하나의 프로그램을 저장하는 적어도 하나의 제1저장부;
    상기 적어도 하나의 프로그램을 실행하는 적어도 하나의 프로세서; 및
    상기 제1저장부에 저장된 상기 적어도 하나의 프로그램을 실행하는 과정에서 발생하거나 요구되는 데이터 혹은 값을 저장하는 제2저장부를 포함하고,
    상기 적어도 하나의 프로세서를 통하여,
    상기 프로그램에서 실행되는 함수의 함수 호출 깊이를 인지하고,
    상기 함수 호출 깊이가 최대값인 최대 깊이 함수 및 인터럽트 서비스 루틴(Interrupt Service Routine, ISR)에 삽입된 탐침 코드를 실행하며,
    상기 탐침 코드가 삽입된 상기 최대 깊이 함수를 수행할 때, 상기 제2저장부 내 메모리 영역의 사용량을 계산하고,
    상기 탐침 코드가 수행될 때, 상기 최대 깊이 함수의 함수 호출 깊이 또는 상기 인터럽트 서비스 루틴(ISR)이 수행될 때의 함수 호출 깊이와 상기 사용량을 출력하는, 전자 제어 장치.
  12. 제11항에 있어서,
    상기 탐침 코드는 상기 최대 깊이 함수 및 상기 인터럽트 서비스 루틴(ISR)의 시작과 끝에 삽입된, 전자 제어 장치.
  13. 제11항에 있어서,
    상기 인터럽트 서비스 루틴은 상기 프로그램으로부터 독립적으로 실행되는, 전자 제어 장치.
  14. 제11항에 있어서,
    상기 적어도 하나의 프로세서를 통하여,
    전송된 상기 함수 호출 깊이에 대응하여 설정된 상기 사용량의 임계값과 전송된 상기 사용량을 비교하고,
    비교 결과에 대응하여, 페일 세이프(fail safe) 로직을 수행하는, 전자 제어 장치.
  15. 제14항에 있어서,
    상기 페일 세이프 로직의 수행 원인과 결과를 표시하거나 상기 함수 호출 깊이, 상기 사용량 및 시각정보를 표시하는 표시장치
    를 더 포함하는, 전자 제어 장치.
  16. 제11항에 있어서,
    상기 메모리 영역은 스택(stack) 영역인, 전자 제어 장치.
  17. 제16항에 있어서,
    상기 프로그램에서 실행되는 함수가 상기 프로세서에 의해 호출되면, 상기 스택 영역은 생성되고, 상기 함수가 종료되면 상기 스택 영역이 반환되는, 전자 제어 장치.
  18. 제16항에 있어서,
    상기 적어도 하나의 프로세서를 통하여,
    상기 스택 영역의 할당된 시작 주소 및 끝 주소로 총량을 결정하고,
    상기 시작 주소부터 현재 주소까지로 현재 사용량을 결정하며,
    상기 총량에 대한 상기 현재 사용량의 비율로 상기 사용량이 결정되는, 전자 제어 장치.
  19. 제11항에 있어서,
    상기 최대 깊이 함수 및 상기 인터럽트 서비스 루틴의 함수 식별자, 상기 함수 호출 깊이, 상기 사용량 및 시각정보를 무선통신망을 통해 전송하는 전송부; 및
    상기 최대 깊이 함수 및 상기 인터럽트 서비스 루틴의 함수 식별자, 상기 함수 호출 깊이, 상기 사용량 및 시각정보를 전달할 수 있는 이더넷 포트(Ethernet port)
    를 더 포함하는, 전자 제어 장치.
  20. 제11항에 있어서,
    상기 제2저장부는 전역변수(global), 정적변수(static), 배열(array), 또는 구조체(structure)가 저장되는 데이터 영역 및 필요에 의해 동적으로 할당될 수 있는 힙(heap) 영역을 더 포함하고,
    상기 함수 호출 깊이는 깊이 우선 탐색(Depth First Search, DFS) 알고리즘을 통해 인지되는, 전자 제어 장치.
KR1020170172033A 2017-12-14 2017-12-14 전자 제어 장치용 메모리 감시 및 사용 표시 방법 및 장치 KR102435347B1 (ko)

Priority Applications (3)

Application Number Priority Date Filing Date Title
KR1020170172033A KR102435347B1 (ko) 2017-12-14 2017-12-14 전자 제어 장치용 메모리 감시 및 사용 표시 방법 및 장치
US15/985,956 US10740204B2 (en) 2017-12-14 2018-05-22 Method and apparatus for monitoring memory and for displaying use in electronic control device
CN201810775717.1A CN109960627B (zh) 2017-12-14 2018-07-16 电子控制设备及其操作方法与计算机可读记录介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020170172033A KR102435347B1 (ko) 2017-12-14 2017-12-14 전자 제어 장치용 메모리 감시 및 사용 표시 방법 및 장치

Publications (2)

Publication Number Publication Date
KR20190071208A true KR20190071208A (ko) 2019-06-24
KR102435347B1 KR102435347B1 (ko) 2022-08-23

Family

ID=66815135

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020170172033A KR102435347B1 (ko) 2017-12-14 2017-12-14 전자 제어 장치용 메모리 감시 및 사용 표시 방법 및 장치

Country Status (3)

Country Link
US (1) US10740204B2 (ko)
KR (1) KR102435347B1 (ko)
CN (1) CN109960627B (ko)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111464417A (zh) * 2020-04-09 2020-07-28 东风汽车集团有限公司 基于千兆以太网总线的车载网络架构及通讯方法

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20080054324A (ko) * 2006-12-12 2008-06-17 한국전자통신연구원 멀티 쓰레드 기반 센서 운영체제 환경에서의 스택 할당방법
US20120096441A1 (en) * 2005-10-21 2012-04-19 Gregory Edward Warwick Law System and method for debugging of computer programs
US20120144241A1 (en) * 2010-12-06 2012-06-07 Hyundai Motor Company Device for dynamic analysis of embedded software of vehicle
KR20120126873A (ko) * 2011-05-13 2012-11-21 현대자동차주식회사 Uds 통신 기반의 자동차용 소프트웨어 동적 분석 장치
KR20130111027A (ko) * 2012-03-30 2013-10-10 국방과학연구소 임베디드 시스템에서의 동적 메모리 관리방법
KR101470162B1 (ko) 2013-05-30 2014-12-05 현대자동차주식회사 메모리 스택 사이즈 모니터링 방법

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7458078B2 (en) * 2003-11-06 2008-11-25 International Business Machines Corporation Apparatus and method for autonomic hardware assisted thread stack tracking
US7711988B2 (en) * 2005-06-15 2010-05-04 The Board Of Trustees Of The University Of Illinois Architecture support system and method for memory monitoring
CN101067798A (zh) * 2007-06-14 2007-11-07 华南理工大学 一种动态探针方法及其在嵌入式系统中的应用
US8370821B2 (en) * 2007-08-21 2013-02-05 International Business Machines Corporation Method for enabling profile-based call site tailor-ing using profile gathering of cloned functions
US20100131803A1 (en) * 2008-11-25 2010-05-27 Express Logic Computation of stack usage in embedded computing systems
US8359584B2 (en) * 2009-12-18 2013-01-22 Microsoft Corporation Debugging from a call graph
US8769233B2 (en) * 2011-06-14 2014-07-01 International Business Machines Corporation Adjusting the amount of memory allocated to a call stack
US8850408B2 (en) * 2011-08-10 2014-09-30 Nintendo Of America, Inc. Methods and/or systems for determining a series of return callstacks
KR20130061449A (ko) 2011-12-01 2013-06-11 대림산업 주식회사 콘크리트 강도 발현 촉진용 무기질 혼합재료, 및 이를 포함하는 조강형 해양콘크리트
JP2017162026A (ja) * 2016-03-07 2017-09-14 富士通株式会社 情報処理装置、プログラム実行状態表示方法、およびプログラム実行状態表示プログラム

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20120096441A1 (en) * 2005-10-21 2012-04-19 Gregory Edward Warwick Law System and method for debugging of computer programs
KR20080054324A (ko) * 2006-12-12 2008-06-17 한국전자통신연구원 멀티 쓰레드 기반 센서 운영체제 환경에서의 스택 할당방법
US20120144241A1 (en) * 2010-12-06 2012-06-07 Hyundai Motor Company Device for dynamic analysis of embedded software of vehicle
KR20120126873A (ko) * 2011-05-13 2012-11-21 현대자동차주식회사 Uds 통신 기반의 자동차용 소프트웨어 동적 분석 장치
KR20130111027A (ko) * 2012-03-30 2013-10-10 국방과학연구소 임베디드 시스템에서의 동적 메모리 관리방법
KR101470162B1 (ko) 2013-05-30 2014-12-05 현대자동차주식회사 메모리 스택 사이즈 모니터링 방법

Also Published As

Publication number Publication date
KR102435347B1 (ko) 2022-08-23
CN109960627B (zh) 2023-10-20
US10740204B2 (en) 2020-08-11
US20190188104A1 (en) 2019-06-20
CN109960627A (zh) 2019-07-02

Similar Documents

Publication Publication Date Title
JP4155198B2 (ja) 車両の制御システムの異常検知装置
US7689334B2 (en) Engine diagnostic method
CN112302817A (zh) 一种进气压力传感器故障诊断方法、装置、设备及存储介质
US9494073B2 (en) Method and device for monitoring the function of an exhaust-gas sensor
CN111927640B (zh) 发动机故障检测方法、装置、设备及计算机可读存储介质
CN111591281B (zh) 一种怠速控制方法、装置、车辆和存储介质
CN112394282B (zh) 碳罐电磁阀诊断方法、装置、设备及存储介质
CN112650201B (zh) 车辆故障诊断方法、装置、车辆及存储介质
RU2593737C2 (ru) Способ и система для диагностики рабочей функции кузова, относящейся к транспортным средствам
CN109116830B (zh) 预测故障的方法及系统
CN111612937A (zh) 车载诊断监测程序规划和执行
JPH06241105A (ja) 内燃機関の制御方法及び装置
EP1712424B1 (en) Vehicle control apparatus
KR20190071208A (ko) 전자 제어 장치용 메모리 감시 및 사용 표시 방법 및 장치
CN111077390B (zh) 电控发动机服务测试方法、装置、设备以及存储介质
KR101888630B1 (ko) 제어 시스템에서 결함 코드를 활성화시키는 방법 및 시스템, 및 상기 시스템을 포함하는 차량
JP4178146B2 (ja) エンジンの故障を特定する方法およびコンピュータプログラム
CN114263550B (zh) 一种混动车脱附诊断方法、装置、介质、监测器及车辆
CN105422290A (zh) 小油门故障识别及处理、发动机和油门信号处理方法
CN110535920A (zh) 上报故障的方法、装置、存储介质以及车辆
KR100897086B1 (ko) 하이브리드 차량용 브레이크 스위치 고장진단방법
KR100802587B1 (ko) 차량용 캔 라인 진단방법
CN113218643B (zh) 摩托车二次补气电磁阀的性能检测方法、装置、终端、存储介质及摩托车
CN113898468B (zh) 一种辅助制动系统故障诊断方法和装置
CN114384887B (zh) 一种排放诊断方法、装置与电子设备

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