목록분류 전체보기 (45)
Nnnnnnnnn
Communication Specifications Communicaton은 크게 두가지로 나눌 수 있다. Sender-Receiver 방식과 Client-Server 방식이다. Sender-Receiver는 다시 implicit과 explicit 방식으로 나뉜다. explict은 polling과 interrupt(Event)로 나뉘며 interrupt는 blocking(API)과 non blocking(API)으로 나뉜다. polling 은 데이터를 받았을 때 계속 체크하여, 받을 시 RE가 구동된다. interrupt는 데이터가 도착했을 때에 event를 발생시킨다. 만약 event가 없을 시, RE가 데이터를 읽으러가서 port에 만약 데이터가 없다면, 정보가 올때까지 기다린다. 이를 blockin..
RTE & Internal behavior 각 컴포넌트 에는 IB라는 것이 있다. IB안에 실질적으로 코드가 있다. IB 모델은 이 내부코드(내부동작)가 어떻게 동작하는 지에 대한 방식을 모델 형태로 기술한 것이다. 이것에 따라 RTE API와 Event가 결정된다. 각 컴포넌트들은 서로 직접 interaction하는 것이 아니라, 자신과 연결된 port하고만 interaction하여, 서로 port끼리 interaction이 가능하게 되어 정보를 주고받을 수 있다. port는 실질적으로 RTE에 위치해있다. IB에서 규정을 해주면, RTE API대로 A 컴포넌트의 내부코딩이 이루어진다. RTE port도 그 규정대로 구성되어, 서로 interaction이 가능한 것이다. 컴포넌트들 중, paramete..
MDE MDE(Model Driven Engineering) is a set of well defined practices based on tools that use at the same time metamodeling and model transformaitons, to achieve some automated goals in the production, maintenance or operation of software intensive systems. Model Transformaions의 기본적인 전제 조건은 meta model, 즉 규칙을 공유하는 것이다. 만약 사용하고 있는 ETAS Tool과 다른 Tool을 이용한다고 해도, 서로 호환이 가능하다. Transformation rules는 XML..
Layerd SW Architecture 가장 많이 쓰이는 SW Architecture의 하나인 Layered SW Architecture를 살펴보면, 제일 윗 단 Application Layer부터 순서대로 AUTOSAR Runtime Environment(RTE), Service Layer, ECU Abstraction Layer, Microcontroller Abstraction Layer(MCAL), Microcontroller이다. Application Layer은 Application Software Components(SW-C)이다. 상위층은 아래층에 대해 dependent하지만, 아래층은 윗층에 dependent 하지않다. Service Layer가 아래층인 ECU Abstraction과 ..
AUTOSAR AUTOSAR 개요 Automotive Open System Architecture - An open standardized software architecture for the automotive industry. 자동차 ECU에 내장되는 SW의 표준 체계로서 SW의 표준 구조 및 표준 개발 방법론을 규정하는 체계이다. 2000년대 초반부터 유럽의 주요 자동차 벤더들이 중심이 되어 개발이 시작되었으며 현재는 Version 4.2 Spec 까지 공개되어 있다. 모든 기기적인 동력장치로만 움직였던 것이, 사람의 동작으로 발생된 전자신호가 ECU로 전달되는 형태로 바뀐 것이다. 향후 유럽의 자동차 업계는 ISO26262(기능 안전 표준)와 함께 AUTOSAR 의 적용이 선택이 아닌 필수가 될 ..
Inception Focuses on the core application logic layer with some secondary discussion of the other layers. 이해를 위해 신속하게 필요한 것만 Inception 단계에서 진행한다. UP(United Process)나 Agile을 활용한다. 개발 제품의 범위를 정하고(계획), rough한 최상의 case를 계획한다. use case의 대략 10% ~ 15% 정도 진행한다. 용어를 정의하는 Glossary, Risk list, Prototypes, Development case, Phase plan, Iteration plan이 포함된다. 개발 사례의 경우, 성공 사례라 하더라도 현재의 경우에 맞게 커스터마이징이 필요하다. (t..
Vector 2차원 배열 배열을 사용하는 경우는 상당히 많은데, vector를 사용하면 굉장히 편리한 것 같다. C 같은 경우 정적 할당 외에 동적 할당을 하려면 malloc이나 calloc을 사용하는데, C++에서 vector STL을 사용하면 내가 원하는 크기로 매우 간편하게 배열로 사용할 수 있다. 2차원 vector를 생각할 때 컨테이너라고 생각하면 이해하기 쉬울 것 같다. 컨테이너 틀 안에 한 줄 한 줄의 vector 요소들을 담는다고 생각할 수 있다. int k;cin >> k;vector tmp; =====> 2차원 vector 생성for(int i=0; i 입력받은 k 개수만큼의 크기인 1차원 배열을 tmp.push_back(a); =====> 2차원 vector 컨테이너..
cin / scanf 알고리즘 문제를 풀다가 시간 초과가 나는 경우가 많다. 오늘 계속 시간 초과가 떠서 코드를 수정하던 중, 입력을 받을 시 cin 대신 scanf를 사용하니 시간 초과가 나타나지 않았다. cin과 scanf의 속도 차이를 알아보니, 입력 크기에 따라 그 속도가 많게는 8배 정도가 차이나는 것 같다. 코드 앞에 sync_with_stdio(false) 를 쓰면 cin의 속도가 빨라지지만, 어떤 경우에는 똑같이 시간 초과가 발생하였다. 또한 cout의 경우에도 endl 사용 시 많이 느리다는 것도 알 수 있었다. 출처 : https://algospot.com/forum/read/2496/