Jump to content
Форум по продукции MOXA

Recommended Posts

Возник небольшой вопрос в части использования 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

Здравствуйте,

Получили Ваше письмо и по электронной почте тоже.

Сходу ответить не можем, нам понадобится пара дней на уточнение у R&D. Дадим знать, как только будет информация.

Link to comment

Не уверен. Мне понадобится день-два на пристройку, по результату отвечу в теме. Но за ответ спасибо.

Link to comment

Итак, посмотрел исходник и попробовал его прикрутить. Исходник, конечно, хороший, но он именно описывает назначение интерфейса на порт (что собственно, понятно и описано в мануале). Но интересует не смена режима работы порта, а именно поддержка конкретных 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

Здравствуйте,

Увы, не получится сделать так, как Вы планируете. Вот примерный ответ от инженеров головной Moxa:

 

 

К сожалению поддержки «стандартными» ioctl (TIOCSRS485 ,TIOCGRS485 и serial_rs485) сейчас нет , и будет ли она – не известно.

ioctl нужно использовать как в приведенном примере. Поскольку поскольку оборудование построено на основе микросхемы Moxa, то надо следовать рекомендациям Moxa и действовать с использованием MOXA_SET_OP_MODE.

Link to comment

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 account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...