Jump to content

    

nik.laus

Участник
  • Content Count

    11
  • Joined

  • Last visited

Community Reputation

0 Обычный
  1. linux & cp210x

    А с утра оказалось, что девайс надо устанавливать на 4800 бит/секунду. И все начало работать. Всем спасибо за внимание и терпение!
  2. linux & cp210x

    Что-то я погорячился... Или тему закрывать, или новую открывать... : ( Вообщем, *плакаю*... Дали мне готовое устройство... на этом, cp2102, чипе. Пустышка отлично работала. А готовое не работает... Позволяет в него записывать, но обратно ничего не выдает... Я в логе не вижу *read_bulk_callback... Под виндой, говорят, работает... Как-то раз товарищь запулил туда из /dev/urandom'а, что-то выдало. Очень был удивлен... Посмотрели dmesg - 8250.ko запустился и отрабатывал как com port. Вытянули и опять вставили - запустился уже cp210x... который ничего нам не выдал. Я откровенно незнаю куда лезть... Ведь и спецификации нету : ( И спаришать где незнаю... Буду баловаться с параметрами, скоростью и т.д.... И даже незнаю, куда держать ориентир для того, чтобы решить эту задачу... Толи в драйверы разные лезть, толь с stty баловаться (а вдруг что получитсья) Где почитать я тоже без понятия... В гугле тоже не нашел чего-либо стоящего... : ( Поэтому у меня опять кризис жанра и неизвестно куда копать... : ( Вообщем, если кто подскажет, куда копать, когда непонятно куда копать... : ((( буду очень и очень благодарен и признателен!
  3. linux & cp210x

    to Sasamy: Уже и нашел и почитал. ЦитатаПоспешные выводы. Обычно в ванильном ядре драйверы все же работают немнога Действительно поспешные! Большое спасибо! Тему можно закрывать.
  4. linux & cp210x

    to Sasamy: Заработало! *куча радостного вопля* Очень очень большое спасибо! Заработало после того, как установил raw режим и -echo (раньше я echo не отключал, и не думал отключать). Даже echo, не только cat теперь работает. Проблема решена! Спасибо! Еще один вопрос, где мне начать читать про настройки терминалов/модемов и т.д. Просто работать с stty не умею и надо где-то почерпнуть информацию об этом. Если подскажите, как эта тема называеться, буду рад. Огромное спасибо!
  5. linux & cp210x

    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) Может быть нужно еще какие-то настройки модемные поменять? Заранее огромнейшее спасибо за внимание и советы.
  6. linux & cp210x

    Rx и Tx замкнуты. Просто я ожидаю того, что я туда что-то записал - тоже и считал. Первый раз так и получаеться, но после (я незнаю где затык, возможно в драйвере), драйвер сам! записывает '\r' в чип, естественно, его же и получает... и так в каком-то бесконечном цикле... А я думаю, что правильно было-бы (опять таки... я думаю...) чтобы я туда пакет данных записал, чип мне обратно этот же пакет. И все. Ждет следующего, а не пишет туда символы возврата каретки... Спасибо, что быстро ответили!
  7. 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 например??? Большое спасибо за время и внимение!
  8. Нужна помощь специалистов

    Добрый день снова! По поводу int 37 - оно в дос драйвере было... (int 0x0D) Нужно оно там было для того, чтобы проц запустил обработчик прерывания, свежеустановленный, наш. В конце обработчика есть команда записать в порт 20h 0x20 - команда pic1, которая что-то там делает, чтобы потом можно было снова это прерывание принимать... Но, в недавнем времени ситуация изменилась... При очередном... третьем или четвертом... пререписывании драйвера, оно мна начало давать прерывания... Ведут они себя немножко странно... Пробую и так и сяк и смотрю на них. Хочу добиться от них стабильности появления, ну и понять все тонкости... То так ее инициализирую, то так... Смотрю на поведение... Int не использую, и так генерит... Всем БОЛЬШОЕ спасибо за помощь и внимание .
  9. Нужна помощь специалистов

    ЦитатаЭтот самый int 37, он кем предоставлятся? То есть фактический обработчик int 37 находится в BIOS, BIOS Вашей платы, или Вы должны туда подсунуть свою функцию? Это действительно программное прерывание? Или вывод IRQ платы "разведен" на это прерывание? Если это BIOS платы - то нужно убедится что BIOS вашего ПК при старте обнаружил и инициализировал BIOS платы. Надеюсь соответствующие сообщения предусмотрены в плате. amw, а можно по конкретнее данную тему, где о ней можно почитать? (если можно и есть, ссылку на статью по данной теме..., я о ней ни малейшего представления не имею и даже ниразу не слышал, кроме этого форума) А вообще вроде там ничего такого нету... а что касается int 37 - "ну, это ,как-бы..." эмуляция 5 hardварного прерывания, внутри проца, если он в защищенном режиме работает... в реальном режиме это будет int 13 (8 зарезервировано, а не 32...) вот из этого я и исхожу... И действительно, в Кодcat /proc/stat | grep intr появляется 5 прерывание (становится 1 после того, как было 0, и увеличивается на 1 кажный раз, когда я делаю int 37). Поэтому я думаю, что int 37 это тоже самое что и "железное 5тое", за исключением того, что это программный муляж. А плата генерит 5 irq, а биосом на плате вроде и не пахнет (только io ports) (в доке к чипу об этом даже не упоминается, а все остальные чипы на плате - простые наборы вентилей, выполняющих свою функцию, ниче умного, вроде...). Дайте ссылку, где про биос на плате и тому подобные темы почитать можно. Спасибо.
  10. Нужна помощь специалистов

    Приятно, что ответили. Спасибо mdmitry и amw. По поводу "Linux Device Drivers third edition" - это я знаю. Дя и про isa у них там достаточно мало, так, для программистов и все... но это не "это самое". За посыл в ядро посмотреть на isa драйвера спасибо. Касательно printk() знаю, только оно выводит в буфер а не на консоль, на консоль еще и приоритет должен быть достаточный и еще что-то...( в LDD 3ed это написано, главу непомню ). Регистрируется ли модуль ядром. insmod выполняется, драйвер в ядре висит, успешно выгружается. Обработчик прерываний тоже успешно устанавливается ( $cat /proc/interrupts ). Сообщения тоже успешно выводит в буфер и я с помощью dmesg их читаю. Касательно отладчиков я имел ввиду не gdb и к ядру модули отладочные. Я имел ввиду что-то, что можно в шину воткнуть (осцилограф...) и посмотреть, идут ли сигналы, не сбиваются ли фронты. Или это бред??? В досе вызывается int 0x0D (irq5 в real mode), мне в линуксе надо делать int 37 (irq5 protected mode) правильно? И что эта команда делает?, прото передает управление обработчику прерывания и все? Железо никак не трогает? Стоит ли читать по железу (PC)? если стоит, то подскажите стоящую книгу, пожалуйста. Если в моем русском есть ошибки, исправляйте!!! А жаргона вроде нет... Оч большое спасибо за внимание! Решил открыть ящик, посмотреть на схемы, оказалось там не i82530, а Z85C30[08PSC]... В ядре есть драйвер от Alan'a Cox'a, для этой симейки чипов... Будем ковырять и надеятся на успех
  11. Добрый день. Нужен ваш совет. У меня проблема. Пишу драйвер под linux (2.6.18) для платы, которуй сами и разработали (на чипе intel 82530 scc). Есть драйвер под дос на паскале, и под дос плата работает. Я делаю теже шажи, пишу в теже регистры теже значения в линукс, собираю модуль и у меня она не работает... проявляется это так: читать и писать в порты ввода/вывода я могу и это работает, но плата прерываний не генерирует абсолютно : (((. Это мой первый драйвер (драйвер для паралельного порта, та который напаяны светодиоды, и который генерирует прерывания я не беру в расчет), поэтому здесь у меня даже життейской мудрости нету, которую хотелось бы тоже обрести. Есть вопрос, каким образом можно (нужно) это отлаживать, что-бы хотя-бы быть уверенным в том, где и что не работает... Средства диагностики какие-нибуть... Забыл сказать, плата на isa шине, драйвер в ядре (не user space application) и естественно под дос это все работает ((. Модуль загружается работает, карточку инициализирует (или якобы инициализирует...), устанавливается обработчик прерываний, делается soft interrupt ( __asm__("int $37") )... а фреймы данных карта не получает... Вот, прошу помощи специалистов. Кто в таких ситуациях как поступает и что порекомендуете... Вообщем, куда и что мне надо копать, учить??? Заранее очень благодарен за ЛЮБЫЕ ответы.