사수가 회사에서 설계한 arm보드에서 구동되는 간단한 시리얼 통신 프로그램을 짜달라고 말해서
그거 짜는 중입니다.
프로세서는 arm 계열에 os는 데비안, 통신 포트는 rs232 시리얼 통신, 언어는 c언어 기반이구요...
코드는 이렇습니다.
#include <unistd.h>
#include <fcntl.h>
#include <assert.h>
#include <termio.h>
#include <string.h>
int main(void)
{
int fd;
fd=open("/dev/ttyS1", O_RDWR | O_NOCTTY);
assert(fd != -1);
struct termios newtio;
memset(&newtio, 0, sizeof(struct termios));
newtio.c_cflag = B115200 | CS8 | CLOCAL | CREAD;
newtio.c_iflag = IGNPAR | ICRNL;
newtio.c_oflag = 0;
newtio.c_lflag = ~(ICANON | ECHO | ECHOE);
tcflush(fd, TCIFLUSH);
tcsetattr(fd, TCSANOW, &newtio);
const char *str = "Serial port connected. \n";
write(fd, str, strlen(str)+1);
close(fd);
return 0;
}
세팅은 115200 속도 8비트 데이터를 보내는건데
코드 상으로만 보면 저도 그렇고 사수도 그렇고 문제는 없다는 반응인데...
역시 gcc로 컴파일 해봐도 그렇구요... 오류는 검출 안됐습니다.
포트 세팅을 아무리 바꿔도 받는 쪽에서는 아무 패킷이 안들어오네요...
pc랑 arm보드간에 통신인데
pc에서 보내는거는 가능하나 arm보드에서 신호를 주는거는 안됩니다.
보드 설계 담당하는 과장님한테 물어서 해당 핀을 기판에 아예 납땜하고 다시 코딩해봐도 여전히 신호가 안오는데
혹시 기글분들이 보시기에 코드 자체 문제는 없어보일까요??
USB 와치독이 STM 마이컴기반에 시리얼 통신하는놈이라 Linux에서 시리얼 통신 부분이 표함되어 있는 소스입니다.
한번 참고해보세요!
https://gist.github.com/prodeveloper0/412b68ad794e7a0c1b60e4016d4ec66a