2015년 8월 15일 토요일
RK3188 관련
개발환경 설정하기
http://linux-rockchip.info/mw/index.php?title=Building_Kernel_for_Linux_Distribution
Android에서 Serial 통신하기
- 준비물
Teraterm
Virtual Serial Port : Com2Com, VSPE
Seiral API : android_serial_api
기타 : android studio, ndk
2. 에뮬레이터 사용하기
Emulator @AVDNAME -qemu -serial COM1
Tip: Windows8 인 경우에는 "드라이버 서명 적용 사용 안 함"을 반드시 해줘야한다.
> Solution : http://codesystem.co.kr/ttboard/data/FILES/Windows%208%20OR%208_1%20VirtualSerial.pdf
> Very Important!!
3. 시리얼 드라이버 확인
/proc/tty/drivers
> 에뮬레이터에서, 포트 정보가 없는 경우에는, VirtualBox를 사용한다.
> /dev/ttyS1 을 보통 사용하는데, 권한이 666으로 되어 있어야 한다. root권한이 있는 경우에는 강제로 chmod 666 /dev/ttyS1 을 해서, 접근한다.
4. 시리얼 포트 설정
SerialPort.c 에서 포트 설정을 할 수 있다.
포트 설정은 반드시 해주는 것이 좋을 것으로 보임.
termios cfg; // 설정하기
참고 URL : http://pubs.opengroup.org/onlinepubs/7908799/xsh/termios.h.html
> 다음과 같이 3개의 구조체를 설정할 수 있다.
> 사용한 설정
cfg.c_cflag |=CS8|CREAD|CLOCAL;
cfg.c_lflag &= ~ICANON;
cfg.c_cflag &= ~CRTSCTS; // disable CTS/RTScfg.c_cflag &= ~CSTOPB; // Stop bit 1 bitcfg.c_cflag &= ~PARENB; //No parity
cfg.c_cflag &= ~CRTSCTS; // disable CTS/RTScfg.c_cflag &= ~CSTOPB; // Stop bit 1 bitcfg.c_cflag &= ~PARENB; //No parity
> CANONICAL 모드로 사용하는 경우에 제어문자를 초기화할 필요가 있다.
cfg.c_cc[VEOF] = 0; /* Ctrl-d */
cfg.c_cc[VEOL] = 0; ///* '\0' */
/
cfg.c_cc[VINTR] = 0; /* Ctrl-c *///
cfg.c_cc[VQUIT] = 0; /* Ctrl-\ *///
cfg.c_cc[VERASE] = 0; /* del *///
cfg.c_cc[VKILL] = 0; /* @ */
cfg.c_cc[VSWTC] = 0; /* '\0' *///
cfg.c_cc[VSTART] = 0; /* Ctrl-q *///
cfg.c_cc[VSTOP] = 0; /* Ctrl-s *///
cfg.c_cc[VSUSP] = 0; /* Ctrl-z */
cfg.c_cc[VREPRINT] = 0; /* Ctrl-r *///
cfg.c_cc[VDISCARD] = 0; /* Ctrl-u *///
cfg.c_cc[VWERASE] = 0; /* Ctrl-w */
cfg.c_cc[VLNEXT] = 0; /* Ctrl-v */
cfg.c_cc[VEOL2] = 0; /* '\0' */
Subscript Usage |
| |
---|---|---|
Canonical Mode | Non-canonical Mode | Description
|
VEOF | | EOF character
|
VEOL | | EOL character
|
VERASE | | ERASE character
|
VINTR | VINTR | INTR character
|
VKILL | | KILL character
|
| VMIN | MIN value
|
VQUIT | VQUIT | QUIT character
|
VSTART | VSTART | START character
|
VSTOP | VSTOP | STOP character
|
VSUSP | VSUSP | SUSP character
|
VTIME | TIME value |
Canonical 모드를 사용하면, 0x0a와 같은 문자가 줄바꿈 처리되기 때문에 별도의 처리가 필요할 것으로 예상된다.
> 입력 버퍼의 사이즈를 설정하는 경우, 해당 사이즈만큼 버퍼가 찰때까지 기다린다.
cfg.c_cc[VMIN] = 45;
> 속도 설정
speed_t speed = B115200;
cfsetispeed(&cfg, speed); cfsetospeed(&cfg, speed);
피드 구독하기:
글 (Atom)