CANdevStudio
Linux

CANdevStudio

728x90

CANdevStudio는 CAN 네트워크를 구성하고 시뮬레이션 할 수 있는 오픈소스 크로스 플랫폼 CAN 시뮬레이션 소프트웨어다. CANdevStudio 를 사용하여 자동차의 점화 상태, 도어 상태 또는 후진 기어와 같은 CAN 신호를 시뮬레이션 할 수 있다.

 

CAN 하드웨어 인터페이스(예: Microchip, Vector, PEAK-Systems)와 함께 작동하거나 심지어 Linux에서는 내장 에뮬레이션으로(vcan 및 cannelloni) 실제 CAN 하드웨어없이도 사용할 수 있다.

 

SocketCAN 사용

SocketCAN은 Linux용 CAN 프로토콜(Controller Area Network)의 구현이다. 다른 네트워크 장치와 유사한 방식으로 다른 CAN 버스 장치와 커뮤니케이션 할 수 있는 인터페이스를 제공한다. 즉 네트워크 소켓 프로그래밍 인터페이스를 통해서 CAN 버스에 접근하는 애플리케이션을 개발할 수 있다. 

 

CANdevStudio의 CAN 버스에 대한 액세스는 Qt 프레임 워크를 기반으로한다. Linux의 SocketCAN 내장 에뮬레이션 덕분에 실제 CAN 하드웨어 없이도 사용할 수 있으며 Qt의 SocketCAN 플러그인은 CAN 장치에 액세스하기위한 Linux 소켓 API를 캡슐화한다. 

 

SocketCAN 과 호환되는 장치 목록 (Linux 만 해당)은 여기에서 찾을 수 있다.

 

여기서는 리눅스에서 가상 CAN 버스를 설정하여 간단하게 사용해본다. SocketCAN 을 백엔드를 사용하므로 CAN 하드웨어가 필요하지 않다.

 

SocketCAN 을 사용하려면 해당 Linux 커널 모듈을 로드하고 네트워크 인터페이스를 구성해야한다. 다음의 명령을 차례로 실행한다.

sudo modprobe vcan
sudo ip link add dev can0 type vcan
sudo ip link set can0 up

 

다음의 주소에서 미리 빌드된 리눅스용 CANdevStudio를 다운로드 받을 수 있다.

https://github.com/GENIVI/CANdevStudio/releases

 

Releases · GENIVI/CANdevStudio

Development tool for CAN bus simulation. Contribute to GENIVI/CANdevStudio development by creating an account on GitHub.

github.com

 

우분투 20.04 기준 위 주소에 파일들 중 standalone 파일을 다운 받은 뒤 압축을 풀어준다. 그 후 밑에 사진과 같은 경로에서 ./CANdevStudio.sh 명령어를 실행시켜 주면 오른쪽과 같이 툴이 나오게 된다.

 

 

이제 New Project 를 선택한다.

 

Device Layer 에서 CanDevice를 드래그하여 오른쪽에 추가하고 Raw Layer 에서 CanRawSender, CanRawView 를 각각 드래그하여 추가하고 다음과 같이 각 블럭을 연결한다.

 

CanDevice를 마우스 오른쪽 버튼으로 클릭하여 Properties 설정에서 다음과 같이 구성한다.

backend : socketcan

interface : can0

CanRawSender 를 열고 + 버튼을 클릭하여 ID, 데이터, 루프, 간격과 같은 영역을 채운다. 루프를 사용하지 않는 경우 매번 수동으로 전송 버튼을 눌러줘야 합니다. 다른 Data를 보내고 싶으면 + 버튼을 추가로 눌러줍니다. 그러면 ID 값을 다르게 주어 다른 Data를 보내는 것도 가능합니다.

 

 

시뮬레이션 ▶(Play) 버튼을 클릭하고 CanRawView 에서 결과를 볼 수있다.

 

 

SocketCAN 유틸리티

장치가 활성화되면 사용할 수 있는 여러 유틸리티가 있다. Ubuntu에서 유틸리티를 사용하려면 다음의 명령줄로 can-utils를 설치해야 한다.

sudo apt-get install can-utils

설치가 완료되면 candump 를 실행하여 버스의 메시지를 실시간으로 확인할 수 있다. can0 기기에서 모든 트래픽을 실시간으로 표시하려면 다음과 같이 할 수 있다.

candump can0

▲ 시뮬레이션 시작과 함께 can0 의 메세지를 확인 할 수 있다.

 

 

728x90

'Linux' 카테고리의 다른 글

PCIe ASPM Error  (0) 2023.07.02
i2c-tools  (0) 2023.01.28
SSD 자동 인식  (0) 2023.01.28
리눅스 커널 소스의 구조  (0) 2022.12.03
Memory mapping  (0) 2022.11.27