4.5 FlexCAN
4.5.1 Introduction
FlexCAN은 CAN 2.0B 프로토콜 사양에 따라 CAN 프로토콜을 구현한 통신 컨트롤러이다.
CAN 프로토콜은 주로 실시간 처리, 차량의 EMI 환경에서의 안정적인 작동, 비용 효울성 및 필요한 대역폭과 같은 이 분야의 특정 요구 사항을 충족하는 차량용 시리얼 데이터 버스로 사용되도록 디자인되어 있다. 표준과 확장 메시지 프레임이 지원되고 있다. 최대 메세지 버퍼는 64이다. 드라이버는 PF_CAN 프로토콜 제품군의 네트워크 디바이스 드라이버이다.
자세한 내용은 Linux 소스 디렉토리의 lwn.net/Articles/253425나 Documentation/networking/can.txt를 참조한다.
i.MX 8QuadMax/8QuadXPlus의 FlexCAN은 CAN FD 프로토콜을 지원한다.
4.5.1.1 Software Operation
CAN 드라이버는 네트워크 디바이스 드라이버이다. 소프트웨어 작동에 대한 일반적인 정보는 커널 소스 디렉토리 Documentation/networking/can.txt의 문서를 참조한다.
CAN 네트워크 디바이스 드라이버 인터페이스는 CAN 네트워크 디바이스를 설정, 구성 및 모니터링하기 위한 일반 인터페이스를 제공한다. 그리고 사용자는 "IPROUTE2" 유틸리티 모음의 "ip" 프로그램을 사용하여, netlink 인터페이스로 비트 타이밍 파라미터 설정과 같은 CAN 디바이스 구성을 할 수 있다.
CAN 네트워크 디바이스를 시작하고 중지한다.
CAN 네트워크 디바이스는 "ifconfig canX up/down"나 "ip link set canX up/down" 커맨드로 평소와 같이 시작하거나 중지한다. 오류가 발생하기 쉬운 기본 설정을 피하기 위해 시작하기 전에, 실제 CAN 디바이스에 대해 적절한 타이밍 파라미터를 반드시 정의해야 한다.
- ip link set canX up type can bitrate 125000
iproute2 툴은 비트 타이밍 설정과 같은 CAN 버스에 대한 다른 구성 기능도 제공한다. 자세한 내용은 커널 문서 Documentation/networking/can.txt를 참조한다.
4.5.1.2 Source Code Structure
아래 테이블은 drivers/net/can에서 사용 가능한 드라이버 소스 파일을 보여준다.
Table 42. FlexCAN Driver Files
File | Description |
---|---|
drivers/net/can/flexcan.c | FlexCAN 드라이버 |
4.5.1.3 Menu Configuration Options
이 모듈에는 아래와 같은 커널 구성 옵션이 제공되고 있다.
- CONFIG_CAN - PF_CAN 프로토콜 제품군에 대한 지원을 빌드한다. menuconfig에서 이 옵션은 아래에서 사용할 수 있다.
Networking > CAN bus subsystem support - CONFIG_CAN_RAW - Raw CAN 프로토콜에 대한 지원을 빌드한다. menuconfig에서 이 옵션은 아래에서 사용할 수 있다.
Networking > CAN bus subsystem support > Raw CAN Protocol (raw access with CANID filtering) - CONFIG_CAN_BCM - Broadcast Manager CAN 프로토콜에 대한 지원을 빌드한다. menuconfig에서 이 옵션은 아래에서 사용할 수 있다.
Networking > CAN bus subsystem support > Broadcast Manager CAN Protocol (with content filtering) - CONFIG_CAN_VCAN - Virtual Local CAN 인터페이스(Ethernet 인터페이스에도 있음)에 대한 지원을 빌드한다. menuconfig에서 이 옵션은 아래에서 사용할 수 있다.
Networking > CAN bus subsystem support > CAN Device Driver > Virtual Local CAN Interface (vcan) - CONFIG_CAN_DEBUG_DEVICES - 드라이버에서 시스템 로그에 디버그 메시지를 생성하기 위한 지원을 빌드한다. menuconfig에서 이 옵션은 아래에서 사용할 수 있다.
Networking > CAN bus subsystem support > CAN Device Driver > CAN devices debugging messages - CONFIG_CAN_FLEXCAN - FlexCAN 디바이스 드라이버에 대한 지원을 빌드한다. menuconfig에서 이 옵션은 아래에서 사용할 수 있다.
Networking > CAN bus subsystem support > CAN Device Driver > Freescale FlexCAN