Техническая поддержка пользователей > Тион, Тион-Про, Тион-Про 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

Навигация

[0] Главная страница сообщений

Перейти к полной версии