Проблемы, возникаемые на RPI
Данные отправляются, но не принимаются
Шаг 1. Проверьте настроенные скорости на принимающем и отправляющем устройствах
на Raspberry Pi можно использовать команду
ip -details link show can0
На Raspberry Pi скорости задаются при запуске интерфейса. Для CAN-FD:
sudo ip link set can0 up txqueuelen 65535 type can bitrate 1000000 dbitrate 8000000 fd on
Здесь заданы скорости 1000000 и 8000000.
Для CAN:
sudo ip link set can0 up txqueuelen 65535 type can bitrate 1000000
Здесь скорость 1000000
Чаще всего данные не принимаются именно из-за несовпадения скоростей.
Шаг 2. Если скорости у вас совпадают, а данные все еще не принимаются, проверьте тип ID сообщения. Он может быть Standard, а может быть Extended. Несовпадение типов тоже может быть причиной неполучения данных. Рекомендуется использовать FDCAN_EXTENDED_ID.
Segmentation Fault
При установке новой версии ОС на Raspberry Pi, с версии 2024 года, при установке can-utils и изменении файла /boot/firmware/config.txt (раньше он был /boot/config.txt) при поднятии can шины стала возникать ошибка Segmentation fault. Пока единственное рабочее решение — ставить в качестве операционной системы Ubuntu Server 20.04. Чтобы подключиться к вайфаю, измените файл с расширением yaml в папке /etc/netplan/. У меня этот файл назывался 50-cloud-init.yaml. Вот как он примерно должен выглядеть:
network:
version: 2
wifis:
renderer: networkd
wlan0:
dhcp4: true
optional: true
access-points:
TurtleBro:
password: turtlew001
TurtleBro5G:
password: turtlew001
Здесь название сети вайфай TurtleBro и TurtleBro5G, а пароль к ним turtlew001. Обратите внимание, что при редактировании файла НЕЛЬЗЯ ИСПОЛЬЗОВАТЬ ТАБУЛЯЦИЮ. Используйте только пробелы!
Подробнее о том, как настроить интернет, можно почитать здесь. Там может возникнуть еще ряд проблем при обновлении и установке новых пакетов, но в целом они решаются поиском дополнительной информации.
Например, может быть такая проблема:
Waiting for cache lock: Could not get lock /var/lib/dpkg/lock-frontend. It is held by process 1247 (unattended-upgr)
Ее решить мне помогла команда ниже. Подробнее о решении почитать можно тут
sudo dpkg-reconfigure -plow unattended-upgrades
Raspberry PI не подключается к сети
Если Raspberry Pi не подключается к сети, а перезапись образа и замена SD-карты не помогает, обратите внимание, как мигает зеленая лампочка:
Основные диагностические коды мигания зеленого светодиода:
- 4 длинных, 5 коротких: Ошибка загрузчика (EEPROM)
- 3 вспышки: loader.bin не найден
- 4 вспышки: loader.bin не загружается
- 5 вспышек: start.elf не найден
- 6 вспышек: start.elf не загружается
В первом случае необходимо перепрошить EEPROM, используя специальный инструмент «Raspberry Pi Imager». На SD-карту запишем восстановительный образ, для этого скачивать отдельно его не нужно. Откройте Raspberry Pi Imager, во вкладке Device выберите Raspberry Pi 5, а во вкладке OS — «Misc utility images», далее «Bootloader» -> Network Boot.
Вставьте SD-карту с восстановительным образом в Raspberry Pi. Как только зеленый светодиод на Raspberry Pi начнет часто мигать, образ сработал.