Включение SPI • Драйвер spidev
- СКИФ
- 1892ВМ14Я
Руководство иллюстрирует использование порта SPI0 микросхемы СКИФ с драйвером spidev. Пример применим только к отладочному модулю ELV-SMARC-CB r2.10.3 с установленным ELV-MC03-SMARC r1.1.
Руководство иллюстрирует использование порта SPI1 микросхемы 1892ВМ14Я с драйвером spidev. Пример применим только к отладочному модулю Салют-ЭЛ24ОМ1 с установленным Салют-ЭЛ24ПМ2.
Для конфигурации DTS для других модулей необходимо руководствоватся схемой электрической на выбранный модуль и учитывать схему подключения процессора к периферийным устройствам.
Добавить в файл DTS описание spidev
- СКИФ
- 1892ВМ14Я
На разъем XP6 отладочного модуля выведены два CS (CS0 и CS1) а также сигналы CLK, MOSI, MISO.
- CS0 - Используется для общения с микросхемой w25q128jw.
- CS1 - Свободен.
-
Скачать необходимую версию buildroot с сайта.
-
Распаковать и перейти в папку mcom03-defconfig-src.
-
Распаковать архив
./buildroot/dl/linux/linux-mcom03-5.10.y-br1.tar.gz
в произвольную папку. Далее по тексту эта папка обозначенаCUSTOM_LINUX_PATH
. -
В файле
CUSTOM_LINUX_PATH/linux-headers-mcom03-5.10.y/arch/arm64/boot/dts/elvees/mcom03-elvmc03smarc-r1.0-elvsmarccb-r2.10.dts
, в блок&spi0{ ... }
добавить:spidev: spidev@1{
status = "okay";
compatible = "linux,spidev";
reg = <1>;
#address-cells = <1>;
#size-cells = <0>;
spi-max-frequency = <500000>;
}; -
Сохранить изменения.
-
Создать файл
./buildroot/local.mk
. -
Прописать в него
LINUX_OVERRIDE_SRCDIR = <CUSTOM_LINUX_PATH>/linux-headers-mcom03-5.10.y
. -
Применить defconfig
./docker-build.sh make mcom03_defconfig
-
Войти в menuconfig
./docker-build.sh make menuconfig
-
Добавить spidev_test: Target packages → Debugging, profiling and benchmark → [*] spidev_test.
-
Сохранить конфигурацию и выйти.
-
Запустить сборку
./docker-build.sh make
Либо пересобрать только ядро
./docker-build.sh 'linux-rebuild && make'
-
Записать полученный образ
buildroot/output/images/rootfs.tar.gz
на uSD. -
Запустить модуль и проверить наличие файла вида /dev/spidevX.Y
На разъем XP5 отладочного модуля выведены два CS (CS0 и CS1) а также сигналы CLK, MOSI, MISO.
-
Скачать последнюю версию buildroot с сайта.
-
Распаковать архив и перейти в папку mcom02-buildroot-v3.1.4-111-*.
-
В файле
./u-boot/arch/arm/dts/mcom02-salute-el24om1-r1.1-1.2.dtsi
, после блока&spi0{ ... }
добавить:&spi1 {
num-cs = <2>;
cs-gpios = <&gpioa 25 0>,<&gpioa 26 0>; //nCS0 GPIO -> SPI
status = "okay";
spidev: spidev@0{
compatible = "linux,spidev";
reg = <0>;
#address-cells = <1>;
#size-cells = <0>;
spi-max-frequency = <6000000>;
status = "okay";
};
}; -
Дописать
spi1 = &spi1
в блок aliases:aliases {
spi0 = &spi0;
spi1 = &spi1;
}; -
Сохранить изменения в файле.
-
Собрать загрузчик U-Boot командой:
make toolchain && make -f Makefile.u-boot salutepm2
-
Полученный файл uboot-images/mcom02-salute-el24pm2-r1.0-1.1-om1-r1.2-uboot.img прошить в SPI-Flash.
-
Необходимо вызвать конфигуратор ядра Linux
make linux-menuconfig
-
Выбрать пункт (клавиша
M
)Device Drivers → SPI support → User mode SPI device driver support (перемещение по меню — стрелки, перейти в пункт — пробел).
-
Выйти из menuconfig, согласиться с сохранением конфига.
-
Войти в конфигуратор buildroot
make menuconfig
. -
Включить тесты
Target packages → Debugging, profiling and benchmark → [*] spidev_test.
-
(Опционально) Включить Python-модуль:
Target packages → Interpreter languages and scripting → External python modules → [*] python-spidev
-
Сохранить и выйти.
-
Запустить сборку Linux:
make
Либо пересобрать ядро и pythonmake linux-rebuild && \
make python-rebuild && \
make -
Полученный образ
buildroot/output/images/mcom02-buildroot-sdcard.img
записать на SD-карту.ls -la /dev/sd*
dd if=buildroot/output/images/mcom02-buildroot-sdcard.img of=/dev/sdX bs=4M; sync -
Запустить модуль и проверить наличие файла вида /dev/spidevX.Y
Тестирование интерфейса
spidev_test
-
Соединить контакты MISO и MOSI.
- СКИФ
- 1892ВМ14Я
Распиновка разъема GPIO HEADER на отладочной плате Фото GPIO HEADER Распиновка разъема GPIO HEADER на отладочной плате Фото GPIO HEADER -
Запуск приложения:
spidev_test -D /dev/spidevX.Y
Вывод командыspi mode: 0x0
bits per word: 8
max speed: 500000 Hz (500 KHz)
RX | FF FF FF FF FF FF 40 00 00 00 00 95 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
F0 0D -
Для проверки работоспособности создайте файл test.bin и внести в него любые данные:
echo "1234-hello-from-spi-000123" > test.bin
-
Запуск теста:
spidev_test -D /dev/spidevX.Y -i test.bin -o result.bin