[rapa3기][2조][실시간 운영체제 기반 차량 제어 시스템]

[D3-G] 우분투를 올린 상태에서 SPI to CAN(MCP2515) 모듈 사용 방법 문의

안녕하세요. RAPA에서 TOPST 보드를 활용하여 ‘실시간 운영체제 기반 차량 제어 시스템’ 주제로 프로젝트를 진행하고 있는 2조 교육생입니다. 우분투 환경에서 MCP2515 모듈을 이용한 CAN 통신을 진행 과정에서 해결되지 않는 문제가 있어 질문을 하고자 글을 씁니다.

1. 시스템 환경

  • Target Board: TOPST D3-G (Telechips TCC8050 Main Core)

  • OS: Ubuntu 22.04 LTS (Kernel 5.10.205-tcc)

  • Build Env: Telechips SDK (Yocto 기반) / WSL2 Ubuntu

  • HW: SPI0번에 MCP2515 CAN 컨트롤러 연결 시도

2. 목표

  • Device Tree(DTS)를 수정하여 MCP2515 노드를 추가하고, can0 인터페이스를 활성화하는 것.

3. 주요 작업 및 시도 과정 - 1

  • tcc8050-topst-d3-g.dts 수정 : spi@16900000 노드에 mcp2515@0 추가, 전용 클럭(oscillator) 및 인터럽트 핀(gpio@14200000) 설정 완료.

  • 빌드를 통해 커널 이미지 및 DTB 생성 성공 후 시리얼 보드 터미널로 전송

  • 부트 파티션(p2)에 구운 후 커널 이미지 확인 시 생성 시각이 맞지 않음

  • can0 인터페이스도 나오지 않음

3. 주요 작업 및 시도 과정 - 2

  • SDK 커널 옵션 설정(menuconfig)에서 MCP2515를 위한 항목 활성화
  • 모듈 생성 및 보드 시리얼로 전송 후 드라이버 로드 시도
  • can0 인터페이스 여전히 비활성화 상태

4.요청사항 및 정보

  • 우분투 환경에서 SPI to CAN 모듈을 사용할 수 있는 가이드가 필요합니다.
  • tcc-8050-topst-d3-g.dts 파일 경로 → ~/topst-sdk/build/d3-g-topst-main/tmp/work/d3_g_topst_main-telechips-linux/linux-topst/5.10.205-r0/git/arch/arm64/boot/dts/telechips/tcc805x$
  • 로그 상태’
root@TOPST:~# ip link show

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1000

    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00

2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP mode DEFAULT group default qlen 1000

    link/ether 42:ea:c2:93:75:8c brd ff:ff:ff:ff:ff:ff

3: sit0@NONE: <NOARP> mtu 1480 qdisc noop state DOWN mode DEFAULT group default qlen 1000

    link/sit 0.0.0.0 brd 0.0.0.0

root@TOPST:~# lsmod | grep mcp

mcp251x                28672  0

can_dev                36864  1 mcp251x

root@TOPST:~# dmesg | grep -i mcp251x

[  363.039082] mcp251x: Unknown symbol can_free_echo_skb (err -2)

[  363.039094] mcp251x: Unknown symbol can_put_echo_skb (err -2)

[  363.039101] mcp251x: Unknown symbol can_get_echo_skb (err -2)

[  363.039127] mcp251x: Unknown symbol open_candev (err -2)

[  363.039147] mcp251x: Unknown symbol alloc_can_skb (err -2)

바쁜 와중에 확인해 주셔서 감사합니다.

안녕하세요.

우선 저희는 CAN pin을 사용하여 직접 can 통신을 한 이력이 있었고, spi to can 모듈을 사용한 적이 없어 가이드는 어려울 듯 합니다. 다만 커널에서 올바르게 설정하신 후 빌드 및 fwdn하시면 됩니다.
우분투 환경은 따로 빌드 할 수 없기 때문에, 커널 혹은 dtb만 빌드하여 fwdn 진행해주시면 됩니다.
명령어는 bitbake -C compile linux-topst로 진행해주시면 됩니다.
{build_dir}/build/d3-g-topst-main/tmp/deploy/images/d3-g-topst-main에 생성된 “d3-g-topst-main-tc-boot-5.10.205-r0.img” 파일, “tcc8050-topst-d3-g–5.10.205-r0-d3-g-topst-main-20260123090218.dtb” 파일만 fwdn해주시면 됩니다.
이 때 파일이 생성된 시점이 빌드 시점과 일치하는지 확인해주셔야 합니다.

img,dtb파일을 windows에 있는 fwdn폴더로 옮겨주신 후 fwdn명령어를 아래와 같이 실행해주시면 됩니다.

fwdn.exe -w d3-g-topst-main-tc-boot-5.10.205-r0.img --storage emmc --area user --part boot
fwdn.exe -w tcc8050-topst-d3-g--5.10.205-r0-d3-g-topst-main-20260123090218.dtb --storage emmc --area user --part dtb

추가로 ko파일이 아닌 빌드된 deb파일을 보드로 전송하여 dpkg -i 하여 실행 부탁드립니다.

감사합니다.