일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- 파이썬
- 비트코인
- 아마존 웹 서비스
- Cloud
- 퀀트
- 백테스트
- probability
- 블록체인
- 토플
- 개발자
- AWS
- backtest
- python
- 백트레이더
- 자동차sw
- 토플 라이팅
- 자동매매
- GeorgiaTech
- 암호화폐
- 클라우드
- Bitcoin
- toefl writing
- 확률
- it
- 프로그래밍
- TOEFL
- AUTOSAR
- backtrader
- can
- 오토사
- Today
- Total
목록전체 글 (668)
Leo's Garage
AUTOSAR CAN 통신 스택을 이용해서 CAN 통신을 구현하기 위해 필요한 정보를 정리해보고자 한다. AUTOSAR는 기본적으로 하드웨어 독립적으로 구축하는 것을 목표로 하기 때문에 하위 레이어에 HW 종속적인 모듈이 위치하고, 상위로 갈수록 HW에 독립적인 모듈이 위치하게 된다. BSW를 개발하는 입장에서는 이러한 계층 구조와 각 모듈간의 서로 필요한 정보가 무엇인지 아는 것이 중요하다. 개인적으로 어떤 AUTOSAR Tool을 사용하여 BSW를 Configuration한다고 하더라도 가장 중요한 것은 역시 Communication DB(DataBase)일 것이다. 일반적으로 차량용 제어기는 통신 네트워크 구조를 기반으로 설계가 되어진다. 따라서 어떤 제어기든 개발에 앞서서 가장 중요한 건 바로 이..
AUTOSAR에서는 message를 대략적으로 PDU(Protocol Data Unit)이라고 부른다. 이렇게 대략적이라는 말을 붙이는 이유는 PDU 내부에는 송신 또는 수신 상, 각각 하위 계층 혹은 상위 계층에서 사용하거나 추출하는 데이터 이외의 정보가 포함되어 있기 때문이다. PDU는 크기가 다양하게 n개 있을 수 있고 기본적으로 하위 계층 정보와 함께 Packing된 Signal의 그룹이다. AUTOSAR COM은 송수신 시 각각 PDU 안팎에서 신호의 Packing, Unpacking을 수행하며, 모든 PDU에는 고유한 Identifier가 있다. PDU에는 SDU(Service Data Unit)와 PCI(Protocol Control Information)가 포함된다. SDU는 전송해야 하는..
CAN 통신 스택은 AUTOSAR에서 CAN 버스를 활용한 차량 통신 시스템 모듈 그룹이다. 이는 애플리케이션에서 프로토콜 및 메시지 속성을 숨기는 것과 함께 CAN 네트워크에 대한 균일한 Interface를 제공한다. Low Level은 통신 스택에서 처리되며, CAN 통신 스택은 표준 CAN 및 CAN FD(하드웨어에서 지원하는 경우)을 지원한다. 위의 불록도는 AUTOSAR 의 CAN 통신과 관련된 세부 레이어를 간략하게 보여주고 있다. 다만 해당 블록도가 전부는 아니다. 이 블록도에서는 통신 서비스, 통신 하드웨어 추상화, 통신 드라이버만 고려하고 있다. 1. CAN NM: CAN Network Manager, CAN 종속 모듈이긴 하지만, HW에 대해서는 독립적인 모듈이다. 주요 목적은 CAN ..
Multiplex message는 일반적으로 메시지의 DLC가 허용하는 것보다 더 많은 Signal을 전달할 수 있게 한다. Multiplex message를 정의하려면 포함된 signal이 "multiflexor"로 설정된 경우 해당 값(index)은 message의 나머지 바이트에서 어떤 데이터가 전송되는지를 나타낸다. ECU는 현재 Multiplex message를 사용하고 있다. Signal1는 모든 경우 전송되는 고정 Signal이다. 그리고 multiplexor signal에 따라서 나머지 두 Byte의 Signal의 경우 서로 다른 내용을 송신할 수 있게 된다. 즉, 제한적인 DLC를 최대한 활용해보고자 하는 방안이라고 생각할 수 있다. 물론 CAN FD의 경우에는 DLC를 최대 64Byte..
배경은 역시나 일반 CAN의 한계 때문이다. 자동차가 발전 됨에 따라서 더 많은 기능과 제어기가 들어가게 되었다. 따라서 CAN의 네트워크 속도는 한계에 직면했고 돌파구가 필요했다. 그래서 CAN을 개발한 Bosch는 2012년에 CAN의 확장 형태인 CAN FD(CAN with Flexible Data rate)의 사양을 발표했다. 표준 CAN 네트워크는 Frame 당 최대 payload가 8bytes인 1Mbit/s로 제한된다. CAN FD는 CAN의 physical layer를 변경하지 않고도 Frame당 최대 64bytes까지 더 긴 Data Field를 허용하여 유효 데이터 전송률을 높인다. 또한 CAN FD는 일반적인 CAN bus arbitration을 유지하여 Arbitration이 끝날 ..
Error Handling은 CAN protocol에 정의되어 있으며, CAN 시스템 성능에 매우 중요한 역할을 한다. Error Handling은 CAN 버스의 메시지의 오류를 감지하여 일반적으로는 송신기가 오류 메시지를 재전송할 수 있게 하는 것을 목표로 하고 있다. 따라서 버스 내의 모든 CAN controller는 메시지 내에서 오류를 감지하려고 시도한다. 일단 오류가 발견되면, 오류를 발견한 노드는 Error Flag를 전송하여 Bus traffic을 파괴한다. 다른 노드는 이 Error flag를 통해서 오류를 감지하고 현재 메시지를 폐기하는 등의 조치를 취한다. 각 노드는 두 개의 Error Counter, 전송 Error Counter와 수신 Error Counter를 가지고 있다. 이 C..
CAN bus의 각 bit는 Timing을 위해 최소 4개의 Quanta로 나뉜다. 이 Quanta는 논리적으로 4개의 그룹 또는 세그먼트로 나뉘게 된다. 1. Synchronization Segment : 동기화 세그먼트 2. Propagation Segment : 전파 세그먼트 3. Phase Segment 1 : 위상 세그먼트 1 4. Phase Segment 2 : 위상 세그먼트 2 이 Segment들은 소위 Time Quantum이라고 불리는 단위 시간의 정수 배를 의미한다. Time Quantum은 CAN system의 Clock 주기와 동일하다. 이는 MCU에 의해 구현되는 것이다. 결국 이것들은 CAN message의 1bit가 날아갈 때, CAN clock의 몇 배가 각 영역에 할당되어야..
9 pin DSUB 이 커넥터는 CiA에서 권장하며 거의 산업 표준이나 다름 없다. 전원이 공급되는 경우에는 +7...+13V, 100mA 범위 내에서 공급되면 된다. 보통 2번 핀에 CAN_L, 7번 핀에 CAN_H를 연결한다.
CAN 버스는 Bit-Stuffing과 함께 NRZ(Non-Return To Zero)를 사용한다. Bit Stuffing이란 수신기에 Signal 정보를 제공하기 위한 방법 중 하나인데, Data 내에 하나 이상의 Bit를 삽입하는 것을 의미하며 일반적으로 수싯기는 이렇게 채워진 Bit를 감지하고 제거 또는 무시하는 방법을 알고 있다. 이는 동기화를 유지하기 위함으로 동일한 극성의 5 bit가 연속되면 반대 극성의 Bit가 삽입되는 것이다. NRZ Bit Coding은 전송된 Binary Signal을 직접 다룬다는 의미이고, Logic 1은 High, Logic 0는 Low에 해당한다. 그런데 이 방식의 특징 중 하나는 같은 극성을 가진 연속적인 비트의 경우 레벨의 변화가 없다는 점이다. 따라서 NR..
CAN에는 명시적인 주소가 없다는 점은 기억해야 한다. 이런 점때문에 각 CAN Controller는 Bus에서 모든 트래픽을 수집하고 HW Filter와 SW 조합으로 해당 메시지가 해당 Node에 있어서 의미있는 메시지인지 아닌지를 판단할 뿐이다. 그래서 사실 CAN에는 message 주소라는 개념은 없다. 대신에 메시지에 존재하는 Identifier를 통해서 메시지의 내용을 식별할 뿐이다. CAN 메시지는 따라서 contents-addressed로 분류한다. conventional message address는 일반적으로 Node X에 대한 메시지가 여기 있다. 라는 식으로 정보를 준다. 하지만 Contents - address의 경우에는 여기 X라는 label이 붙은 데이터가 포함된 메시지가 있다..