목록전체 글 (102)
Automotive Software
지금이야 고속의 이더넷이 차량 네트워크에 적용되고 있지만 10여 년 전만 해도 캔 통신이 차량 내 신호 교환, 진단 그리고 리프로그래밍등의 서비스를 제공할 수 있는 가장 대표적인 수단이었다. 현재는 자율주행 그리고 운전자 보조 시스템을 지원하기 위해 대용량의 데이터를 신속하게 처리할 수 있는 이더넷의 사용이 확산되는 추세이지만 여전히 캔 통신은 대부분의 차량 내 제어기에서 사용되는 기본적이고 효과적인 통신 수단이다. 상기 블록 다이어그램은 캔 통신에 필요한 기본적인 오토사 모듈을 나타내고 있다. 사실 캔 통신을 위해서는 하위 계층의 캔 드라이버와 캔 트랜시버 모듈만으로도 물리적인 통신을 수행하기에는 문제가 없다. 하지만, 제어기의 상태, 모드 등을 고려하여 논리적인 통신절차를 수립하고자 한다면 다이어그램..
라즈베리파이에 우분투(또는 mate)를 설치하여 사용하는 경우 아래와 같이 우선 자바 설치 후 파이썬 개발도구인 PyCharm을 사용할 수 있다. 1. 자바(JDK) 설치 // 업데이트 apt-get update && apt-get upgrade // 설치 apt-get install default-jdk // 설치된 자바 버전 확인 java -version 2. PyCharm 설치 // 1. 스냅을 통한 설치도 지원하지만 아키텍쳐 지원 에러가 발생 sudo snap install pycharm-community --classic // 2. 아래 사이트에서 파일을 다운받아 직접 실행 tar -xzf pycharm-community-2020.3.3.tar.gz cd pycharm-community-2020..
함수명은 배열명과 같이 해당 개체(함수 또는 배열)의 주소를 가리키는 상수형 포인터 함수 호출은 포인터가 가리키는 개체(함수)를 주어진 매개변수와 함께 실행하는 것 함수를 가리키는 포인터 가리키고자 하는 함수의 반환형과 원형부(매개변수형)가 동일한 포인터 변수 동일한 반환형을 가지며 동일한 매개변수형을 가진 함수만을 포인팅 함수 호출시 함수명 대신 포인터가 사용 멤버 함수에 대한 포인터 클래스 이름과 범위 연산자(:::)를 함수명 앞에 명시 class cMyClass { public: void memFunc(); }; bool myFunc1(int data); bool myFunc2(int data); bool myFunc3(int data); int main() { int selected; bool (..
일반적인 멤버 변수는 비정적인(Non-static) 변수로 선언되어 클래스의 객체 생성 시 메모리를 할당받아 생성됨 객체가 생성되지 않으면 메모리내에 상주하지 않아 비정적인 멤버 변수는 접근 불가 접근 범위가 객체내부에 한정되므로 외부에서 선언이 불필요함 인스턴스(객체) 멤버 : 객체별 독립된 메모리 할당 정적(Static) 멤버 변수는 전역 변수와 같이 프로그램 실행 시 메모리를 할당받아 생성됨 객체가 생성되지 않더라도 이미 메모리에 상주하므로 정적인 멤버 변수는 접근 가능 일반적인 전역 변수와 같이 클래스 외부에서 직접적인 선언이 있어야 함 클래스 멤버 : 동일 클래스의 모든 객체(인스턴스)에서 공유 접근 클래스 객채를 통한 멤버 접근 방식은 일반적인 멤버 접근과 동일 클래스 객체를 통하지 않은 멤버..
다형성의 기본 : 프로그램 실행 시에 필요로 하는 파생 클래스(들)의 객체를 베이스 클래스의 객체 포인터에 연결하는 기능 단일 상속 (Single Inheritance) 하나의 베이스 클래스로부터 상속받아 파생 클래스 생성 확장성에서 제한을 가질 수 있으나, 명확한 클래스 간의 관계를 나타낼 수 있음 주의 사항 파생 클래스 멤버 메소드의 상향 흡수 (Percolating Upward) 몇몇 파생 클래스에서만 필요한 메소드를 최소화가 중요한 공통 베이스 클래스에 구현 베이스 클래스 포인터의 하향 형변환 (Casting Down) 베이스 클래스를 가리키는 포인터가 파생 클래스 내에 구현된 메소드를 호출하기 위해 파생 클래스의 포인터 형으로 변환하는 것 실행 시 형 식별(RTTI : Run Time Type ..