marcusyarr Posted June 2, 2014 Share Posted June 2, 2014 Возник небольшой вопрос в части использования RS-485 в UC 8410 LX: Есть ли поддержка TIOCSRS485 и типа serial_rs485{} в устройстве ? Или же управление именно RS-485 осуществляется через другие структуры ? Искал определения и структуры в файлах заголовков тулчейна и ядра (т.е. serial.h, где прописан тип serial_rs485{...} и ioctls.h, где определяются TIOCSRS485 и TIOGRS485), но так их и не нашел. Читал, что поддержка именно такого обращения к RS-485 ввелась с версии ядра 2.6.38, в то время, как в устройстве (по крайней мере, судя по версии ядра в исходниках) - версия ядра 2.6.23. Надо ли для поддержки функций поднимать версию ядра или же сам чип не поддерживает данного типа обращений ? Link to comment
Komantsev Posted June 2, 2014 Share Posted June 2, 2014 Здравствуйте, Получили Ваше письмо и по электронной почте тоже. Сходу ответить не можем, нам понадобится пара дней на уточнение у R&D. Дадим знать, как только будет информация. Link to comment
Komantsev Posted June 10, 2014 Share Posted June 10, 2014 Добрый день, Посмотрите исходик во вложении. То ли это, что Вам нужно? setinterface.rar Link to comment
marcusyarr Posted June 10, 2014 Author Share Posted June 10, 2014 Не уверен. Мне понадобится день-два на пристройку, по результату отвечу в теме. Но за ответ спасибо. Link to comment
Komantsev Posted June 10, 2014 Share Posted June 10, 2014 Да, обязательно сообщите по результатам. Если что не так, будем работать дальше. Link to comment
marcusyarr Posted June 18, 2014 Author Share Posted June 18, 2014 Итак, посмотрел исходник и попробовал его прикрутить. Исходник, конечно, хороший, но он именно описывает назначение интерфейса на порт (что собственно, понятно и описано в мануале). Но интересует не смена режима работы порта, а именно поддержка конкретных ioctl TIOCSRS485( из доков к ядру : This ioctl is used to enable/disable RS485 mode from user-space) и TIOCGRS485 (из доков : to get RS485 mode from kernel-space (i.e., driver) to user-space.) и типа данных : serial_rs485{} Выдержка из <linux/serial.h>, начиная с версии 2.6.38 struct serial_rs485 { __u32 flags; /* RS485 feature flags */ #define SER_RS485_ENABLED (1 << 0) /* If enabled */ #define SER_RS485_RTS_ON_SEND (1 << 1) /* Logical level for RTS pin when sending */ #define SER_RS485_RTS_AFTER_SEND (1 << 2) /* Logical level for RTS pin after sent*/ #define SER_RS485_RX_DURING_TX (1 << 4) __u32 delay_rts_before_send; /* Delay before send (milliseconds) */ __u32 delay_rts_after_send; /* Delay after send (milliseconds) */ __u32 padding[5]; /* Memory is cheap, new structs are a royal PITA .. */ }; Разумеется, можно изобрести велосипед и самому, привязав данные стандартные функции для RS-485 и тип к используемым в UC-8410,заново их определив . Например, нечто на подобие: #define TIOCSRS485 MOXA_SET_OP_MODE #define TIOCGRS485 MOXA_GET_OP_MODE И т.д. Выходит немного криво и не совсем то, что имелось в виду. Хотелось бы их поддержку прямо в модуле ядра, дабы не заморачиваться. Если нужно поднимать версию ядра, то необходимо знать, поддержит ли чип такого рода обращения ? Или необходимо в коде для UC-8410 отказаться от данных стандартных определений и пользоваться иными конструкциями ? Link to comment
Komantsev Posted June 24, 2014 Share Posted June 24, 2014 Здравствуйте, Увы, не получится сделать так, как Вы планируете. Вот примерный ответ от инженеров головной Moxa: К сожалению поддержки «стандартными» ioctl (TIOCSRS485 ,TIOCGRS485 и serial_rs485) сейчас нет , и будет ли она – не известно. ioctl нужно использовать как в приведенном примере. Поскольку поскольку оборудование построено на основе микросхемы Moxa, то надо следовать рекомендациям Moxa и действовать с использованием MOXA_SET_OP_MODE. Link to comment
marcusyarr Posted June 25, 2014 Author Share Posted June 25, 2014 Спасибо огромное за ответ. Буду действовать согласно рекомендациям. Link to comment
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now