Техническая поддержка пользователей > Тион, Тион-Про, Тион-Про v2, Сириус
Тион-Про2 SPI+Ethernet
(1/1)
benvaflick:
Добрый день!
Я являюсь обладателем Тиона-Про2 rev.3 с Linux 2.6.20 на борту. Знакомлюсь с ним и unix-подобными системами, в частности, пока только пятый день, поэтому достиг немного:
установил Ubuntu на виртуальной машине, компилятор gcc-4.3.4 с вашего сайта на эту Ubuntu поставил, сделал "Hello-world" на одноплатнике, отправил байтики микроконтроллеру через COM'ы c CMOS-уровнем и ПК через разъем X6, подправил /etc/inittab, чтобы по умолчанию выводился на монитор shell, а не gui, настроил сеть, подрубил кнопку и через /dev/mem поморгал светодиодами.
Сейчас задача состоит в том, чтобы сделать парсер, который будет принимать команду через ethernet и перенаправлять по SPI микроконтроллеру, которому эта команда предназначается. Очевидно, что одноплатник здесь избыточен, но он брался для других целей, заодно с которыми он должен был общаться с микроконтроллерами.
На данном этапе меня интересует, есть ли какие-то драйвера или примеры, чтобы обойтись без mem'а для работы с GPIO (в примерах к распберри и подобным, я видел, как создают файлы для работы с пинами в /sys/class/gpio/..) и следовательно, как воспользоваться услугами SSP и Ethernet?
miks:
Насколько я понимаю вы хотите работать на этом этапе на уровне написания скриптов, которые буду вызывать утилиты(которые в свою очередь работают с драйверами железки напрямую)
По Ethernet могу посоветовать собрать в rootfs и поиграться с netcat(nc)
benvaflick:
Ну пока что да, так и планировал.
SPI решил через mem делать. Не получилось=)
--- Код: --- spi = (unsigned int*)(mmap(0,getpagesize(), PROT_READ|PROT_WRITE, MAP_SHARED, fd, 0x808A0000));
SSPCR0 = (unsigned int*)spi + 0x00;
SSPCR1 = (unsigned char*)spi + 0x04;
SSPDR = (unsigned int*)spi + 0x08;
SSPSR = (unsigned char*)spi + 0x0C;
SSPCPSR = (unsigned char*)spi + 0x10;
*SSPCR1 = 0x10; //SSP Enable
*SSPCR0 = 0x0fc7; //SCR = 0x0f, SPH = 1, SPO = 1, Format - SPI, 8-bit
*SSPCPSR = 0x04; //Prescaler = 4
*SSPCR1 = 0x00; //SSP Disable
*SSPCR1 = 0x10; //SSP Enable
while(*SSPSR & 0x10 == 0x10); //Busy flag
*SSPDR = 0xAA;
--- Конец кода ---
Но разъем X17 молчит. Как узнать, может SPI чем-то уже занят? Дело в том, что он из ожидания сброса флага занятости не выходит.
Есть такая утилита nc, но у неё из ключей есть только -l, -p, -i, -w.
Upd: Отправил на Тион файл (на Тионе nc -l -p port > file, на хосте nc ip port < file), но это не совсем то, ведь.
Upd2: Сделал сокет сетевой, всё работает, спасибо=) Но с SPI ещё нуждаюсь в помощи.
Danila:
Добрый день.
С SPI не работал, поэтому подсказать не могу.
Документацию Linux по работе с spi читали? https://www.kernel.org/doc/Documentation/spi/spi-summary
Навигация
Перейти к полной версии