분류 전체보기 썸네일형 리스트형 [AUTOSAR_4] AUTOSAR RTE RTE를 알아보기 전에, 위의 그림을 통해 개발 방법 첫번째 단계인 Configure System 단계에 대해서 상세히 알아보자 - Configure System Concept (1) 애플리케이션 개발 - 서로 연결된 컴포넌트(SW-C)들의 집합을 통해 어플리케이션을 설계한다. - 이 때, 제어기를 고려하지는 않는다. (2) Virtual Functional Bus (VFB) Design - 연결된 컴포넌트들이 교류하는 가상의 통신 구조(통로)를 의미한다. - VFB 상에서 SWC를 설계한다. SWC간 Data이동은 Port와 Interface로 정의해서 디자인한다. (3) 제어기 할당 - 제어기를 고려하여, 컴포넌트를 특정 제어기에 배치한다. => 가상의 컴포넌트 간의 연결이 실제 연결로 분류된다. 즉.. 더보기 [AUTOSAR_3] AUTOSAR Methodology AUTOSAR Methodology : AUTOSAR에서 정의한 AUTOSAR를 이용한 SW 개발 순서 1. 시스템 구성 [Configure System] - 시스템 설정 단계로 컴포넌트의 구성/연결들을 정의한다. - Software Component Description을 개발 - 개발 단계 1) VFB(Virtual Functional Bus) level - 최상위 (가장 추상화된) 단계 - 컴포넌트 및 컴포넌트 간의 연결을 기술 (포트, 인터페이스) - 컴포넌트의 통신 속성 및 서로의 관계를 표현 - 구성 요소 : Component / Composition / Port / Interface / Assembly / Delegation Connector 2) RTE(Run-Time Environment.. 더보기 [AUTOSAR_2] AUTOSAR Architecture 저번 글에서 언급했다시피 아래와 같이 HW가 바뀌더라도 AUTOSAR 표준을 이용해 BSW를 일부 바꾸고 ASW를 재사용하는 것이 목표이다. 어떻게 BSW를 일부 바꾸어 HW와의 연결을 가능하게 할까? 이는 AUTOSAR의 Layered Architecture 구조 때문이다. 이를 단계별로 상세해지는 그림들을 통해 설명해 보겠다. 1. AUTOSAR는 아래와 같이 ASW(SWC[SoftWare Component]) - RTE[Run-Time Environment]-BSW(MCAL)-HW 순으로 연결되어 있다. SWC : 하나의 ECU에서만 사용되는 기능의 단위이다. 다른 ECU에는 들어가지 않는다. 2. 아래의 그림은 각 Layer들 간에 어떤 Interface로 이루어져 있는지 나타내는 그림이다. - .. 더보기 [AUTOSAR_1] AUTOSAR의 개념 및 배경 AUTOSAR [AUTomotive Open System Architecture] - 한글로 해석하면 "자동차 개방형 시스템 구조"임. AUTOSAR는 자동차 부품을 제어하기 위한 SW의 표준화를 목표로 하는 단체로, 주로 소프트웨어 플랫폼을 이야기하는데도 쓰임. 이 플랫폼은 자동차를 구성하는 많은 ECU에 공통적으로 적용할 수 있도록 설계됨. 배경 : 자동차에 들어가는 복잡한 SW들이 증가하면서 탑재되는 ECU들이 점점 증가함, 이로 인해 기능간의 충돌을 포함해 다양한 문제들을 발생시킴. 이에 대한 안정성을 검증하는 것과 매 번 자동차마다 달라지는 SW를 새로 구축하는 것에 많은 리소스가 할당됨. 해결책 : 자동차 업계들 사이에 SW 표준을 정의한 것이 AUTOSAR 왜 해결책이 SW의 표준을 정하는 .. 더보기 [Embedded SW] RISC/CISC CPU 구조 CPU에서는 메모리에서 Binary 명령을 읽어와 해석하고 실행한다. 이때 사용되는 Instruction은 Memory에 저장되어 있어야 한다. 이때 어떤 명령어 구조를 사용하느냐에 따라 RISC와 CISC로 나뉜다. CISC : Complex Instruction Set Computer 장점 컴파일러 작성이 쉽다. 호환성이 좋다. 단점 하나의 명령어가 복잡하여 해석(디코딩)에 시간이 오래걸리며, 해석에 필요한 회로가 복잡하다. 적은 수의 일부 명령어만 주로 쓰인다. 명령어의 길이가 달라서 동시의 여러개의 명령처리는 어렵다. RISC : Reduced Instruction Set Computer 장점 각 명령어가 한 클럭에 실행되도록 고정되어, 파이프라인 성능에 최적화 됨 고정된 명령어이기 때문에 해석(.. 더보기 [Embedded SW] Memory Mapped I/O And I/O Mapped I/O 우선 간단하게 위키피디아에 따르면 Memory Mapped I/O : 마이크로프로세서(CPU)가 입출력 장치를 접근할 때, 입출력과 메모리의 주소 공간을 분리하지 않고 하나의 메모리 공간에 취급하여 배치하는 방식 I/O Mapped I/O : 메모리와 입출력의 주소 공간을 분리하여 접근 하는 방식 이라고 적혀있지만 우리가 실제로 이런 문구만을보고 왜 주소공간을 분리하는지 어떻게 분리되어 있는지 이해하기 힘들다. 자세히 알아보자 1. Memory Mapped I/O 메모리의 일부 공간을 I/O포트에 할당 메모리와 입출력번지 사이의 구별이 없음 메모리 명령으로 사용가능 기억장치 이용효율이 낮고 H/W가 간단 2. I/O Mapped I/O I/O인터페이스 번지와 메모리 번지를 구별가능 메모리 명령과 I/O명.. 더보기 [Embedded SW] __IO , volatile Type Qualifier[한정자] 임베디드 SW 프로그래밍을 하다보면 __IO, __O로 선언된 것들을 볼 수 있는데 일반적으로 이것들을 define된 곳으로 들어가보면 volatile 또는 const volatile type인 것을 확인할 수 있다. 일반적으로 Volatile type을 붙이면 해당 변수를 최적화에서 제외하여 항상 메모리에서 접근하도록 한다. 즉, volatile 변수를 참조할 경우 레지스터에 로드된 값을 사용하지 않고 매번 메모리를 참조한다. Volatile이 필요한 이유 *(unsigned int *)0x888F = 0x0001; *(unsigned int *)0x888F = 0x0002; *(unsigned int *)0x888F = 0x0003; *(unsigned int *)0x888F = 0x0004; *(u.. 더보기 [Embedded SW] Bit Mask (비트 손쉽게 조작하기) 펌웨어 프로그래밍을 할때 우리가 원하는 기능을 사용하려면 해당 Memory Map의 Bit를 조작하는 것이 중요하다. 이때 Bit Mask를 많이 사용하는데 정수의 이진수 표현을 자료구조로 쓰는 기법을 말한다. 우리가 프로그래밍을 하면서 32bit와 16bit를 주로 조작하는 경우가 많은데 초기값을 아래와 같이 설정한다. 1. 원하는 Bit를 1로 만들기 ==> "|=" 연산을 사용하여 1로 원하는 Bit는 1로 만들고 나머지는 0으로 만든다. 3, 7, 11, 15번 bit를 1로 만듦 해당하는 Bit만 1로 바뀐것을 확인할 수 있다. 2. 원하는 Bit를 0으로 만들기 ==> "&=" r과 "~"연산 사용. 내가끄고 싶은 비트는 0 # 별첨 "^=" 연산사용 => 비트를 토글시킴 더보기 이전 1 2 3 4 5 다음