Перейти к содержанию
    

linux & cp210x

Доброго времени суток, форумчане!

 

Есть чип от silabs cp2102. (К нему есть силабовский драйверы, которыми я не пользуюсь, потому что при некоторых обстоятельствах они вешают мне систему...)

Есть открытые драйверы в ядра линукса. cp210x.ko называеться модуль. Находиться в kernel-source/drivers/usb/serial/cp210x.c.

 

"Устройство" мое - это просто один cp2102 чип на плате и usb шнурочек. На чипе Rx и Tx запаяны между собой.

Тобишь, я в чип/порт/ttyUSB0 записываю что-то и это-же получаю (по идее).

 

Кто-то пользуеться этим драйвером, очень хочеться услышать как он работает у Вас, работает ли правильно.

 

Дело в том, что когда я записываю первый раз в порт - я получаю это же значение обратно. Для всех последующих попыток поведение не определено.

Возможные случаи - это вываливаеться полностью буфер, тоесть, я туда буквы "х", а мне обратно содржимое буфера чипа с буквой "х" на конце.

Или же он просто выдает перевод строки...

 

Функции чтения и записи в чип модуль использует стандартные (из файла generic.c) - это usbserial модуль.

я сделал modprobe usbserial debug=1 и понял, что после того, как я туда записываю символ "а", я его получаю обратно, но ведь потом

я (драйвер) пишет туда '\r' и получает... и так бесконечно, пока есть хоть один процесс, который читает из ttyUSB0.

 

 

Вопросы:

Это он только у меня так работает, или еще у когото???

 

Я понимаю (или думаю, что понимаю) что это где-то глюк в ядра... ведь у меня один чип с закорочеными Рх и Тх...

Может быть, надо чип сначала как-то настроить программой конфигурации последовательных портов, такой как minicom например???

 

Большое спасибо за время и внимение!

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Дело в том, что когда я записываю первый раз в порт - я получаю это же значение обратно.
Может замкнуты RX/TX ?

использую преобразователь на этом чипе в программаторе AVR910 (avrdude) и через модуль serial в Питоне - все работает отлично.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Может замкнуты RX/TX ?

 

"Устройство" мое - это просто один cp2102 чип на плате и usb шнурочек. На чипе Rx и Tx запаяны между собой.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Rx и Tx замкнуты.

 

Просто я ожидаю того, что я туда что-то записал - тоже и считал.

Первый раз так и получаеться, но после (я незнаю где затык, возможно в драйвере),

драйвер сам! записывает '\r' в чип, естественно, его же и получает... и так в каком-то бесконечном цикле...

А я думаю, что правильно было-бы (опять таки... я думаю...) чтобы я туда пакет данных записал, чип мне обратно этот же

пакет. И все. Ждет следующего, а не пишет туда символы возврата каретки...

 

 

Спасибо, что быстро ответили!

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Есть открытые драйверы в ядра линукса. cp210x.ko называеться модуль. Находиться в kernel-source/drivers/usb/serial/cp210x.c.

"Устройство" мое - это просто один cp2102 чип на плате и usb шнурочек. На чипе Rx и Tx запаяны между собой.

Тобишь, я в чип/порт/ttyUSB0 записываю что-то и это-же получаю (по идее).

Дело в том, что когда я записываю первый раз в порт - я получаю это же значение обратно.

 

Чем пишите/читаете - какая-то своя программа или стандартные утилиты типа echo/cat ?

 

Я понимаю (или думаю, что понимаю) что это где-то глюк в ядра... ведь у меня один чип с закорочеными Рх и Тх...

 

Поспешные выводы. Обычно в ванильном ядре драйверы все же работают немнога :)

 

Может быть, надо чип сначала как-то настроить программой конфигурации последовательных портов, такой как minicom например???

 

Для начала попробуйте настроить raw режим например так

#stty -F /dev/ttyUSB0 raw

потом пробуйте писать/читать. текущее состояние можно посмотреть например так

#stty -F /dev/ttyUSB0 -a

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

to sasamy:

читаю

cat /dev/ttyUSB0

пишу

cat > /dev/ttyUSB0 << EOF

с помощью echo что-то не получаеться.

 

 

 

патылся настроить чип как Вы советовали... stty -F /dev/ttyUSB0 raw

вот что выдает при stty ... -a

 

speed 115200 baud; rows 0; columns 0; line = 0;

intr = ^C; quit = ^\; erase = ^?; kill = ^U; eof = ^D; eol = <undef>; eol2 = <undef>; swtch = <undef>; start = ^Q; stop = ^S; susp = ^Z;

rprnt = ^R; werase = ^W; lnext = ^V; flush = ^O; min = 1; time = 0;

-parenb -parodd cs8 hupcl -cstopb cread clocal -crtscts

-ignbrk -brkint -ignpar -parmrk -inpck -istrip -inlcr -igncr icrnl ixon -ixoff -iuclc -ixany -imaxbel -iutf8

opost -olcuc -ocrnl onlcr -onocr -onlret -ofill -ofdel nl0 cr0 tab0 bs0 vt0 ff0

isig icanon iexten echo echoe echok -echonl -noflsh -xcase -tostop -echoprt echoctl echoke

 

попробовал на 9600, без результата : (

 

Последовательность моих действий:

tail -f /var/log/kern.log | tee kern.log

в другом окне терминала

cat /dev/ttyUSB0

- открываем и читаем из порта

cat > /dev/ttyUSB0 << EOF
> hello world
> EOF

- записываем в порт (echo и echo -n не работали...)

В окне лога ядра я вижу, что в порт я записал, пижу, что я из него прочитал,

а также я еще вижу, что он туда еще что-то (символ возврата каретки '\r') записывает...

Потом читает.

Потом пустое туда пишет... и еще кучу непонятно чего туда валит, чего я не просил...

 

прикрепляю лог (kernlog.txt)

 

Может быть нужно еще какие-то настройки модемные поменять?

 

Заранее огромнейшее спасибо за внимание и советы.

kernlog.txt

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

с помощью echo что-то не получаеться.

 

патылся настроить чип как Вы советовали... stty -F /dev/ttyUSB0 raw

вот что выдает при stty ... -a

 

speed 115200 baud; rows 0; columns 0; line = 0;

intr = ^C; quit = ^\; erase = ^?; kill = ^U; eof = ^D; eol = <undef>; eol2 = <undef>; swtch = <undef>; start = ^Q; stop = ^S; susp = ^Z;

rprnt = ^R; werase = ^W; lnext = ^V; flush = ^O; min = 1; time = 0;

-parenb -parodd cs8 hupcl -cstopb cread clocal -crtscts

-ignbrk -brkint -ignpar -parmrk -inpck -istrip -inlcr -igncr icrnl ixon -ixoff -iuclc -ixany -imaxbel -iutf8

opost -olcuc -ocrnl onlcr -onocr -onlret -ofill -ofdel nl0 cr0 tab0 bs0 vt0 ff0

isig icanon iexten echo echoe echok -echonl -noflsh -xcase -tostop -echoprt echoctl echoke

 

Может быть нужно еще какие-то настройки модемные поменять?

 

Судя по выхлопу вашего stty -a - это не raw режим и потом что значит не работает echo ?

 

1 В первом терминале

#stty -F /dev/ttyUSB0 raw -echo

#cat /dev/ttyUSB0

 

2 Во втором терминале

#echo "hello world" > /dev/ttyUSB0

 

смотрим что вылезло в первом. в вашем случае проблема в том что включено локальное echo (то что добавлено -echo в stty его отключает).

во время этих действий не должны работать другие программы с этим портом иначе они могут переопределить настройки так как будут для него управляющим терминалом.

 

PS если по каким то неизвестным причинам echo все же не работает (хотя с чего бы это :) можно и так как вы раньше делали через cat

Изменено пользователем sasamy

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

to Sasamy:

Заработало! *куча радостного вопля*

Очень очень большое спасибо!

 

Заработало после того, как установил raw режим и -echo (раньше я echo не отключал, и не думал отключать).

Даже echo, не только cat теперь работает.

 

Проблема решена! Спасибо!

Еще один вопрос, где мне начать читать про настройки терминалов/модемов и т.д.

Просто работать с stty не умею и надо где-то почерпнуть информацию об этом.

Если подскажите, как эта тема называеться, буду рад.

 

Огромное спасибо!

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Еще один вопрос, где мне начать читать про настройки терминалов/модемов и т.д.

Просто работать с stty не умею и надо где-то почерпнуть информацию об этом.

 

Я не специалист в этом, по stty как и практически любой команде в linux можно смотереть man

#man stty

короткую подсказку можно и так

#stty --help

 

Последовательные порты/терминалы такие же древние как и сами ос, так что информации море, правда в основном на английском. Что-то советовать не могу, потому что не занимаюсь этим. Имхо поиск можно начать тут

http://tldp.org/HOWTO/Serial-HOWTO.html

кое-что есть на русском - при наличии интернета найдете быстро.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

to Sasamy:

Уже и нашел и почитал. :)

 

Поспешные выводы. Обычно в ванильном ядре драйверы все же работают немнога

 

Действительно поспешные! :)

 

Большое спасибо!

Тему можно закрывать.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Что-то я погорячился...

Или тему закрывать, или новую открывать... : (

Вообщем, *плакаю*... Дали мне готовое устройство... на этом, cp2102, чипе.

Пустышка отлично работала.

А готовое не работает...

 

Позволяет в него записывать, но обратно ничего не выдает...

Я в логе не вижу *read_bulk_callback...

 

Под виндой, говорят, работает...

 

Как-то раз товарищь запулил туда из /dev/urandom'а, что-то выдало.

Очень был удивлен... Посмотрели dmesg - 8250.ko запустился и отрабатывал

как com port. Вытянули и опять вставили - запустился уже cp210x... который ничего нам не выдал.

 

Я откровенно незнаю куда лезть... Ведь и спецификации нету : (

И спаришать где незнаю...

 

Буду баловаться с параметрами, скоростью и т.д....

И даже незнаю, куда держать ориентир для того, чтобы решить эту задачу...

Толи в драйверы разные лезть, толь с stty баловаться (а вдруг что получитсья)

Где почитать я тоже без понятия...

В гугле тоже не нашел чего-либо стоящего... : (

Поэтому у меня опять кризис жанра и неизвестно куда копать... : (

 

Вообщем, если кто подскажет, куда копать, когда непонятно куда копать... : (((

буду очень и очень благодарен и признателен!

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

А с утра оказалось, что девайс надо устанавливать на 4800 бит/секунду.

И все начало работать.

 

Всем спасибо за внимание и терпение!

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...