i.MX Linux Reference Manual - Connectivity - FlexCAN
4.5 FlexCAN
4.5.1 Introduction
FlexCAN은 CAN 2.0B 프로토콜 사양에 따라 CAN 프로토콜을 구현한 통신 컨트롤러이다.
CAN 프로토콜은 주로 실시간 처리, 차량의 EMI 환경에서 안정적인 작동, 비용 효율성, 필요한 대역폭과 같은 이 분야의 특정 요구 사항을 충족하는 차량용 시리얼 데이터 버스로 사용할 수 있도록 설계되었다. 표준과 확장 메시지 프레임이 지원된다. 최대 메시지 버퍼는 64이다. 드라이버는 PF_CAN 프로토콜 체계의 네트워크 디바이스 드라이버이다.
자세한 내용은 lwn.net/Articles/253425나 Linux 소스 디렉토리에서 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 인터페이스를 통해 bit-timing(비트 타이밍) 파라미터 설정과 같은 CAN 디바이스를 구성할 수 있다.
CAN 네트워크 디바이스를 시작하거나 중지한다.
CAN 네트워크 디바이스는 "ifconfig canX up/down"나 "ip link set canX up/down" 커맨드로 평소(일반적인 네트워크 인터페이스와 마찬가지로)와 같이 시작하거나 중지한다. 오류가 발생하기 쉬운 기본 설정을 피하기 위해 시작하기 전에, 실제 CAN 디바이스에 대해 적절한 bit-timing(비트 타이밍) 파라미터를 반드시 정의해야 한다.
- ip link set canX up type can bitrate 125000
iproute2 도구는 bit-timing(비트 타이밍) 설정과 같은 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 CAN-ID 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