LINUX.ORG.RU

blackfin serial port

 ,


0

1

Такая проблема. Данные приходят на synchronous serial port(он же sport). Судя по /proc/config.gz в ядре включен «Blackfin SPORT driver for direct raw access», и вроде этого достаточно. Но в /dev ничего нет. Вот что находится в /dev

  • console
  • network_throughput
  • ram15
  • rtc0
  • cpu_dma_latency
  • null
  • ram2
  • stderr
  • fd
  • ptmx
  • ram3
  • stdin
  • full
  • pts
  • ram4
  • stdout
  • kmsg
  • ram0
  • ram5
  • tty
  • log
  • ram1
  • ram6
  • ttyBF0
  • mdev.seq
  • ram10
  • ram7
  • urandom
  • mem
  • ram11
  • ram8
  • watchdog
  • mmcblk0
  • ram12
  • ram9
  • zero
  • mmcblk0p1
  • ram13
  • random
  • network_latency
  • ram14
  • root

Судя по примеру, должено быть что-то вроде /dev/sport0. Почему он не появляется, как его туда вернуть?



Последнее исправление: nexus86 (всего исправлений: 1)

ядро модульное? модуль bfin_sport_uart загружен? Если не модульное - читать вывод dmesg. Устройство скорее всего называется /dev/ttySS0 (кстати ttyBF0 тоже может быть оно)

sigurd ★★★★★
()
Последнее исправление: sigurd (всего исправлений: 1)
Ответ на: комментарий от sigurd

нет, не модульное. Это «Blackfin SPORT driver for direct raw access» собрано не модулем. Модуль «bfin_sport_uart» отсутствует,да и не нужен он мне.

Устройство скорее всего называется /dev/ttySS0 (кстати ttyBF0 тоже может быть оно)

ttySS0 отсутвует, а ttyBFO это уарт, через который идет вывод

nexus86
() автор топика
Ответ на: комментарий от nexus86

Тогда читайте лог запуска ядра (dmesg) - если драйвер инициализируется при старте - будет сообщение. А создавать самому устройство бесполезно - если со стороны ядра его никто не слушает.

sigurd ★★★★★
()
Ответ на: комментарий от I-Love-Microsoft

кажеться я понял в чем проблема. Модуль хоть и включен в ядро, но его никто не инициализирует, точнее они написали инициализацию только для 537. Для 533 в mach-bf533/stamp.c дописал

static struct platform_device *stamp_devices[] __initdata = {

	...
#if defined(CONFIG_BFIN_SPORT) || defined(CONFIG_BFIN_SPORT_MODULE)
	&bfin_sport0_device,
...
}
#endif
, теперь с моим ядром появился /dev/sport0. Но я не могу использовать свое ядро, потому что у меня перестает зашиваться cyclone. Я вот вообще незнаком с програмированием модулей ядра, можно ли как-то уже с текущим ядром, инициализировать sport0 или проще взять код из ядра и написать свой собственный модуль?

nexus86
() автор топика
Ответ на: комментарий от nexus86

Не можешь свое ядро потому что после твоей сборки что-то ломается? Ты попробуй взять в точности те же исходники (ту же версию и патчи, если они есть), взять тот же конфиг. А может в работающем ядре есть /proc/config.gz - посмотри - это нужный конфиг.

И если это уже не удастся, то может и свой модуль. Только надо вообще всё копипастить из того что определяется CONFIG_BFIN_SPORT или CONFIG_BFIN_SPORT_MODULE

I-Love-Microsoft ★★★★★
()
Ответ на: комментарий от I-Love-Microsoft

Не можешь свое ядро потому что после твоей сборки что-то ломается? Ты попробуй взять в точности те же исходники (ту же версию и патчи, если они есть), взять тот же конфиг. А может в работающем ядре есть /proc/config.gz - посмотри - это нужный конфиг.

К сожалению не могу взять исходники того ядра, что сейчас работает. Я брал стандартное ядро для blackfin, и вставил конфиг с /proc/config.gz (просто скопировал). С моим ядром почему-то не работает, зашивка cyclone по JTAG, возможно разобравшись как происходит заливка, я смогу написать патч, но это уже другая история.

И если это уже не удастся, то может и свой модуль. Только надо вообще всё копипастить из того что определяется CONFIG_BFIN_SPORT или CONFIG_BFIN_SPORT_MODULE

Понятно, буду разбираться, с написанием своего модуля

nexus86
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.