Hi,
This is Darshan ([email protected]).
I have a Linux based board which has one serial port (so, stdin == stdout == stderr == /dev/ttyS0). I want to send Firmware over a serial port using Y-Modem protocol. But, when I poll on given fd (after sending ASCII 'C') its got time out. Please tell me what could be problem here. I am using HyperTerminal which is connected to my board's serial port. So, neither the HyperTerminal (only when it has launched dialogue box to send firmware to the board using Y-Modem) able to read data send by the board nor board able to read data send by the HyperTerminal. But when I type on HyperTeminal then the board got the key-strokes (thats why I can atleast browse through the GUI).
The same serial port is being used to render (VT100 based) GUI. I have managed to disable printk(s) after user-mode is up & running.
Yes one more thing, I have also tried rz(1) but still facing the same problem.
My current serial port settings is,
int serial_init()
{
int serial_port_fd = -1;
tcflag_t serial_baud = B115200;
struct termios old_attr,new_attr;
memset(&new_attr,'0',sizeof(new_attr));
memset(&old_attr,'0',sizeof(old_attr));
serial_port_fd = open(SERIAL_PORT,O_RDWR | O_NOCTTY);
if(serial_port_fd == -1) {
log_msg(MODULE("serial_init : %s"),strerror(errno));
return -1;
}
if(tcgetattr(serial_port_fd,&old_attr) == -1) {
log_msg(MODULE("serial_init : %s"),strerror(errno));
close(serial_port_fd);
serial_port_fd = -1;
return -1;
}
new_attr.c_cflag = serial_baud | CRTSCTS | CLOCAL | CREAD | CS8;
new_attr.c_iflag = IGNPAR; //| ICRNL;
new_attr.c_cc[VEOF] = 4;
new_attr.c_cc[VMIN] = 1;
if(tcflush(serial_port_fd,TCIOFLUSH) == -1) {
log_msg(MODULE("serial_init : %s"),strerror(errno));
close(serial_port_fd);
serial_port_fd = -1;
return -1;
}
if(tcsetattr(serial_port_fd,TCSANOW,&new_attr) == -1) {
log_msg(MODULE("serial_init : %s"),strerror(errno));
close(serial_port_fd);
serial_port_fd = -1;
return -1;
}
if(set_nonblocking(serial_port_fd) == -1) {
log_msg(MODULE("serial_init : Not able to set fd non-blocking"));
close(serial_port_fd);
serial_port_fd = -1;
return -1;
}
if(init_pollfd_slot(SERV_SERIAL_CONN,serial_port_fd,(POLLIN | POLLRDNORM | POLLRDBAND)) != 0) {
log_msg("%s: Not able to init pollfd slots.\n",__FUNCTION__);
close(serial_port_fd);
serial_port_fd = -1;
return -1;
}
dup(0);
dup(0);
printf("(%s:%d)%d END\n", __FUNCTION__, __LINE__, fcntl(serial_port_fd, F_GETFL));
return 0;
}
Thank you in anticipation.
Regards
Darshan
--
This message was sent on behalf of [email protected] at openSubscriber.com
http://www.opensubscriber.com/messages/[email protected]/topic.html
--
To unsubscribe from this list: send the line "unsubscribe linux-c-programming" in
the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html
lmpx.com only provides a reader for public news (NNTP) servers. It is not
affiliated with the servers or forums shown here and is not responsible for
the content of articles, which is written by their respective authors.