CAPL 활용의 기초, 팁과 트릭 (part1)

Similar documents
슬라이드 1

K-Line: 클래식 프로토콜을 위한 유연한 솔루션

AUTOSAR, 멀티코어와 기능 안전을 추구하다

Microsoft PowerPoint - ch09 - 연결형리스트, Stack, Queue와 응용 pm0100

임베디드시스템설계강의자료 6 system call 2/2 (2014 년도 1 학기 ) 김영진 아주대학교전자공학과

11장 포인터

Microsoft PowerPoint - ch07 - 포인터 pm0415

Microsoft PowerPoint - chap02-C프로그램시작하기.pptx

MATLAB/Simulink 및 CANoe 를 사용한 소프트웨어 시뮬레이션

무인 트랙터 개발에 대한 고찰

슬라이드 1

Microsoft PowerPoint - chap06-2pointer.ppt

을지웹용뉴스레터201411월(1101).indd

PathEye 공식 블로그 다운로드 받으세요!! 지속적으로 업그래이드 됩니다. 여러분의 의견을 주시면 개발에 반영하겠 습니다.

Headline Technical Article

11장 포인터

Microsoft PowerPoint - chap01-C언어개요.pptx

PowerPoint Presentation

이번장에서학습할내용 동적메모리란? malloc() 와 calloc() 연결리스트 파일을이용하면보다많은데이터를유용하고지속적으로사용및관리할수있습니다. 2

Frama-C/JESSIS 사용법 소개

H3250_Wi-Fi_E.book

금오공대 컴퓨터공학전공 강의자료

학습목차 2.1 다차원배열이란 차원배열의주소와값의참조

1. auto_ptr 다음프로그램의문제점은무엇인가? void func(void) int *p = new int; cout << " 양수입력 : "; cin >> *p; if (*p <= 0) cout << " 양수를입력해야합니다 " << endl; return; 동적할

Chapter #01 Subject

SNU =10100 =minusby by1000 ÇÁto0.03exÇÁto0.03exÇÁ=10100 =minusby by1000 ·Îto0.03ex·Îto0.03ex·Î=10100 =minusby by1000

PART

Part Part

£01¦4Àå-2

½ºÅ丮ÅÚ¸µ3_³»Áö

272*406OSAKAÃÖÁ¾-¼öÁ¤b64ٽÚ

Microsoft Word - NAT_1_.doc

PowerPoint 프레젠테이션

½Å¹®319È£

Microsoft PowerPoint - CSharp-10-예외처리

10 강. 쉘스크립트 l 쉘스크립트 Ÿ 쉘은명령어들을연속적으로실행하는인터프리터환경을제공 Ÿ 쉘스크립트는제어문과변수선언등이가능하며프로그래밍언어와유사 Ÿ 프로그래밍언어와스크립트언어 -프로그래밍언어를사용하는경우소스코드를컴파일하여실행가능한파일로만들어야함 -일반적으로실행파일은다

Microsoft PowerPoint - C프로그래밍-chap03.ppt [호환 모드]

학습목표 함수프로시저, 서브프로시저의의미를안다. 매개변수전달방식을학습한다. 함수를이용한프로그래밍한다. 2

좀비프로세스 2

PowerPoint Template

슬라이드 1

[ 마이크로프로세서 1] 2 주차 3 차시. 포인터와구조체 2 주차 3 차시포인터와구조체 학습목표 1. C 언어에서가장어려운포인터와구조체를설명할수있다. 2. Call By Value 와 Call By Reference 를구분할수있다. 학습내용 1 : 함수 (Functi

설계란 무엇인가?

제이쿼리 (JQuery) 정의 자바스크립트함수를쉽게사용하기위해만든자바스크립트라이브러리. 웹페이지를즉석에서변경하는기능에특화된자바스크립트라이브러리. 사용법 $( 제이쿼리객체 ) 혹은 $( 엘리먼트 ) 참고 ) $() 이기호를제이쿼리래퍼라고한다. 즉, 제이쿼리를호출하는기호

스마트 충전을 위한 스마트 테스트

<4D F736F F D20C0CCBEBEC1A6BEEE5FC3A5BCD2B0B35F >

슬라이드 1

U.Tu System Application DW Service AGENDA 1. 개요 4. 솔루션 모음 1.1. 제안의 배경 및 목적 4.1. 고객정의 DW구축에 필요한 메타정보 생성 1.2. 제품 개요 4.2. 사전 변경 관리 1.3. 제품 특장점 4.3. 부품화형

Microsoft PowerPoint - e pptx

Microsoft PowerPoint - additional01.ppt [호환 모드]

Microsoft PowerPoint UI-Event.Notification(1.5h).pptx

SOFTBASE XFRAME DEVELOPMENT GUIDE SERIES ActiveX 컴포넌트가이드 서울특별시구로구구로 3 동한신 IT 타워 1215 호 Phone Fax

Microsoft Word - BOMAG_CAN_Newsletter_200806_PressArticle_KO.doc

%eb%8f%99%ec%9d%b8-[NO_09]%20%ec%9d%98%ea%b3%bc%eb%8c%80%ed%95%99%20%ec%86%8c%ec%8b%9d%ec%a7%80_F(%ec%b5%9c%ec%a2%85)-2.pdf

Microsoft PowerPoint - 30.ppt [호환 모드]

Microsoft PowerPoint - [2009] 02.pptx

Microsoft PowerPoint - chap06-5 [호환 모드]

<342EBAAFBCF620B9D720B9D9C0CEB5F92E687770>

17장 클래스와 메소드

Microsoft PowerPoint - chap10-함수의활용.pptx

adfasdfasfdasfasfadf

금오공대 컴퓨터공학전공 강의자료


KMC.xlsm

<4D F736F F F696E74202D203137C0E55FBFACBDC0B9AEC1A6BCD6B7E7BCC72E707074>

C++ Programming

API 매뉴얼

DBMS & SQL Server Installation Database Laboratory

Tcl의 문법

슬라이드 1

슬라이드 1

Microsoft PowerPoint 세션.ppt

UI TASK & KEY EVENT

2주차: 입출력 제어 복습

<322EBCF8C8AF28BFACBDC0B9AEC1A6292E687770>

PowerPoint 프레젠테이션

Microsoft PowerPoint 자바스크립트(1).pptx

<4D F736F F F696E74202D C61645FB3EDB8AEC7D5BCBA20B9D720C5F8BBE7BFEBB9FD2E BC8A3C8AF20B8F0B5E55D>

The C++ Programming Language 4 장타입과선언 4.11 연습문제 Hello,world! 프로그램을실행시킨다. 프로그램이컴파일되지않으면 B3.1 을참고하자. #include<iostream> //#include 문, 헤더파일, 전처리지시

CANoe(내지)1~5장.qxp

C# Programming Guide - Types

다른 JSP 페이지호출 forward() 메서드 - 하나의 JSP 페이지실행이끝나고다른 JSP 페이지를호출할때사용한다. 예 ) <% RequestDispatcher dispatcher = request.getrequestdispatcher(" 실행할페이지.jsp");

Microsoft PowerPoint - 제11장 포인터(강의)

쉽게 풀어쓴 C 프로그래밍

WINDOW FUNCTION 의이해와활용방법 엑셈컨설팅본부 / DB 컨설팅팀정동기 개요 Window Function 이란행과행간의관계를쉽게정의할수있도록만든함수이다. 윈도우함수를활용하면복잡한 SQL 들을하나의 SQL 문장으로변경할수있으며반복적으로 ACCESS 하는비효율역

Microsoft PowerPoint - chap06-1Array.ppt

Microsoft PowerPoint - 제11장 포인터

제8장 자바 GUI 프로그래밍 II

ez-shv manual

Research & Technique Apache Tomcat RCE 취약점 (CVE ) 취약점개요 지난 4월 15일전세계적으로가장많이사용되는웹애플리케이션서버인 Apache Tomcat에서 RCE 취약점이공개되었다. CVE 취약점은 W

리눅스 프로세스 관리

C# 언어 사양

자바에서 Swig를이용하기위해서는필요한파일은사용하고자하는 C/C++ 소스파일과 interface파일이필요합니다. 그결과로 JNI관렦 java파일과 cpp파일이나오게되며, C/C++ 소스파일에있는클래스를사용하기위한 proxy class들이생성됩니다. 다음부터 Swig를사

untitled

IRISCard Anywhere 5

PowerPoint 프레젠테이션

*노인학회지회보-2006년 가을

Microsoft PowerPoint - 3ÀÏ°_º¯¼ö¿Í »ó¼ö.ppt

Visual Basic 반복문

Vector Differential: 벡터 미분 Yonghee Lee October 17, 벡터미분의 표기 스칼라미분 벡터미분(Vector diffrential) 또는 행렬미분(Matrix differential)은 벡터와 행렬의 미분식에 대 한 표

Transcription:

ECU 테스트를더욱효과적으로프로그래밍하기 CAPL 활용의기초, 팁과트릭 CAPL 은벡터에서개발된프로그래밍언어로서, 널리사용되고있는소프트웨어툴인 CANoe 와 CANalyzer 에서지원된다. 3 개의연속기사에서모든수준의사용자이해를돕기위해 CAPL 의 기본뿐만아니라팁과트릭을다룰예정이다. 첫번째파트에서는 CAPL 의기초를집중적으로다룬다. CAPL 을처음사용하는사람들을주대상으로하지만이미 CAPL 을알고있는사용자들에게도개별적인 CAPL 구조를넘어서는부분에대한동기부여를통해약간의이해를제공할것이다. 두번째파트는 CAPL 의고급기능에대해서다룬다. 마지막으로세번째파트는성능과메모리요구에대해언급하며데이터베이스와 associative array 의사용에관한팁과트릭을제공한다. Part 1: CAPL 기초 CAPL 은 20 년이상 (CAPL 은 DOS 용 CANalyser 에서최초로사용됨 ) 간단한신호생성에서복잡한버스노드의시뮬레이션에이르는광범위한작업을효율적으로구현하는데사용되어왔다. 이후로 CANoe 와 CANalyzer 2 개의제품을 CANoe 로예를들어지칭하겠다. 특정작업을가능한한단순하게해결하는것이 CAPL 의일관된목표였다. 대표적인수행되는작업은수신된메시지에대해특정동작을하거나, 시그널값을체크하고설정하고메시지를송신하는것이다. 프로그램은이러한작업에정확하게제한되어야하고, 추가적인오버헤드를필요하지않아야한다. 물론많은경우가그렇게단순한형태는아니지만, CANoe 사용자들이일반적으로수행하는많은프로그래밍작업은실제로아래제시된예제와같이단순하고사소한형태일것이다. 이것이 " 최대한단순화 " 라는원칙에따라복잡한작업을해결할수있는툴로서 CAPL 이수년동안지속적해서확장되어온이유이다. ECU 테스트를더욱효과적으로프로그래밍하기 CAPL 활용의기초, 팁과트릭 1/6

"CAPL" 은 Communication Access Programming Language 의약어이다. CAN 에집중한초기 버전은오랜기간에걸쳐차량용버스시스템인 LIN, FlexRay, MOST, J1587 뿐만아니라 ARINC 및 CANopen 까지확장되어왔다. 다른많은언어와마찬가지로 CAPL 은 C 언어의문법에상당한바탕을두고있다. C, C# 혹은다양한최신스크립트언어에익숙한사용자는빠르게 CAPL 사용에친숙해진다. 하지만 C 프로그램과 CAPL 프로그램이대별되는몇가지독특한특성이있다 : CAPL 은 "event-driven" 방식이다. 프로그램은개별함수로구성되어있고, 각함수가메시지의수신, 신호의변화, 타이머만료및 " 환경 " 의변화등과같이분석대상인시스템내에서발생하는이벤트에따라동작하는것을의미한다. 예를들어 "EngineState" 메시지에대응하기위해서는 "On message EngineState 를사용할것이다. ( 그림 1) CAPL 프로그램은분석대상시스템의컨셉에대해특화된데이터베이스를사용한다. 메시지와시그널은데이터베이스내에서개별적인이름을가지며, 프로그램코드에서이를직접사용할수있다. 그림 1 에서메시지에대해 "EngineState" 와이메시지내의시그널에대해 "EngineSpeed" 가이에해당한다. CAPL 은 " 포인터타입 " 을지원하지않는다. 이때문에 C 언어에서자주발생하는수많은잠재적프로그래밍오류와프로그램의충돌을근본적으로예방한다. 하지만에러가발생하기쉬운특성을논외로한다면포인터는아주강력한컨셉을제공하기때문에 CAPL 에서도예를들면동적메모리대신에 associative array 와같은몇몇기능에대한대안을제공하고있다. CAPL 과 C 언어가공유하는중요한특징중하나는항상컴파일되는것이다. 즉, 효율적인실행코드와유연한머신코드로변환된다. 예제 : 간단한 CAPL 프로그램여기서는간단한 CAPL 프로그램을제시하였다 ( 그림 1). 이예제는버스모니터링툴의기본기능중하나인버스상의트래픽을수신하고사용자에의해서관측및모니터링되는버스상의몇개의이벤트를대비하는기능을수행한다. 본예제는생략된샘플 CANoe 프로그램이다 (Easy.cfg 샘플의 ECU 테스트를더욱효과적으로프로그래밍하기 CAPL 활용의기초, 팁과트릭 2/6

Display.can). 그림 1 이예제프로그램에해당한다. 이후로전체기능을간략하게요약하고, 영역별에 대해서상세하게설명하겠다. 1. variables 2. { 3. const long koff = 0; 4. const long kon = 1; 5. } 6. 7. on message EngineState { 8. @sysvar::engine::enginespeeddspmeter = this.enginespeed / 1000.0; 9. } 10. 11. on message LightState { 12. if (this.dir == RX) { 13. SetLightDsp(this.HeadLight,this.FlashLight); 14. } else { 15. write("error: LightState TX received by node %NODE_NAME%"); 16. } 17. } 18. 19. SetLightDsp (long headlight, long hazardflasher) { 20. long tmplightdsp; 21. 22. tmplightdsp = 0; 23. if(headlight == kon) 24. tmplightdsp = 4; 25. if(hazardflasher == kon) 26. tmplightdsp += 3; 27. @sysvar::lights::lightdisplay = tmplightdsp; 28. } 그림 1: 간단한 CAPL 프로그램예제 작업설명 데이터베이스에기술된 CAN 버스의모든요소, 즉버스노드, 메시지와전송시그널을관측한다. EngineState 메시지가수신되면, 이메시지에포함된 EngineSpeed 시그널을디스플레이패널에 표시하기위해신호처리를수행한후시그널이패널로연결된다. LightState 메시지가수신되면, 이메시지에포함된 HeadLight 와 FlashLight 시그널을 디스플레이패널에표시하기위해신호처리를수행한후시그널이패널로연결된다. ECU 테스트를더욱효과적으로프로그래밍하기 CAPL 활용의기초, 팁과트릭 3/6

프로그램의상세설명 행번호는 CAPL 프로그램일부분이아니며, 각행과구역에대한참조를용이하게하기위해 추가되었다. 여기에서는컴팩트한표현을위해중괄호를별도의행에배치하지는않았다. CAPL 프로그램에서는전역변수와상수를정의할수있다. 이는 "variables" 영역에서이루어진다 (1~5 행 ). 이상수와변수는이프로그램에서전역으로정의되며프로그램의모든곳에서사용이가능하지만 CANoe 의다른프로그램에서는사용할수없다. 다른영역은이벤트에대한처리 (7~17 행 ) 와보조함수 (19~28 행 ) 를정의하고있다. 7~9 행에서는최소형태의메시지이벤트처리를보여준다. 이함수는이메시지가버스상에전송될때마다호출된다. CAN 통신의경우, 이에대한정확한시점은 CAN 컨트롤러의 TX 혹은 RX 인터럽트시점, 즉메시지의정확한전송완료직후에해당한다. 이벤트내에서메시지명은 this 라는문법으로사용된다. 8 행에서는 EngineSpeed 시그널의값은수신된메시지 (this) 로부터읽히며, 시그널변환 (/1000.0) 을 거쳐시스템변수에할당된다. 11~17 행은 LightState 메시지에대해메시지이벤트처리를보여주며, 여기에서방향지시등과관련된정보를송신하게된다. 이에대한처리는다음설명할내용을제외하고는앞서설명한 EngineState 메시지의처리방법과유사하다. 12 행에서전송된메시지의방향플래그 (.dir) 를검사한다. 이프로그램에서는수신된메시지 ( 값이 RX) 만을처리하여야한다. 노드에서송신된메시지 ( 값이 TX) 에의해서도이벤트가트리거되기때문에, 이경우 15 행에서오류메시지가출력될것이다. ECU 테스트를더욱효과적으로프로그래밍하기 CAPL 활용의기초, 팁과트릭 4/6

유저인터페이스의표시를 ( 시그널의값에따라 Bitmap 을변경하는패널 ) 위한시그널의처리는 다소복잡하기때문에, 이에대한구현은별도의함수로분리하였으며 13 행의 SetLightDsp 함수는 2 개의메시지시그널을인자로하여호출된다. 마지막으로 19~28 행은송신된시그널의값에따라 Lights 네임스페이스의시스템변수 LightDisplay 에다른값을쓰는별도의함수를정의하고있다. 본데모구성에서는이변수에의해 디스플레이패널에서적절한 Bitmap 이선택된다. [ 독자를위한 CAPL 에대한소개 ] CAPL 은 C 언어와유사한프로그래밍언이이며, Vector Informatik 에의해개발되었다. 프로그램블록의실행은이벤트에의해제어된다. 전용브라우저내에서 CAPL 프로그램을개발하고컴파일한다. 이를통해데이터베이스내에포함된오브젝트 ( 메시지, 시그널, 환경변수 ) 뿐만아니라시스템변수에접근할수있다. 또한 CAPL 에는개발 / 평가 / 시뮬레이션툴인 CANoe 와 CANalyzer 를다루기위한미리정의된많은수의함수가제공된다. 독일출판물 CAN Newsletter 2014 년 2 월호 CAPL 관련기사번역판 링크 : 벡터홈페이지 : www.vector.com 저자 : Marc Lobmeyer (Dipl.-Inf.) 1994 년부터 Vector Informatik 에서 CANoe 와 CANalyzer 의개발자로근무하고있다. ECU 테스트를더욱효과적으로프로그래밍하기 CAPL 활용의기초, 팁과트릭 5/6

Roman Marktl (Dipl.-Ing) 2012 년부터 Vector Informatik 에서 CANoe 와 CANalyzer 의 Product Manager 로근무하고있다. 본자료배포시최종인쇄물을당사에보내주시면감사하겠습니다. 배포와관련하여문의사항이있으시면언제든지연락주시기바랍니다. 벡터코리아편집자연락처 : 마케팅팀전은영서울특별시용산구한남대로 11 길 12 고뫄스빌딩 5 층 Tel. 02-807-0600 Ext.5014, Fax. 02-807-0601 E-mail: eunyoung.jeon@vector.com ECU 테스트를더욱효과적으로프로그래밍하기 CAPL 활용의기초, 팁과트릭 6/6