linux uart 커널 설정 및 non-blocking 모드 시리얼 통신 example c code
본 포스트는 uart 드라이버의 linux 커널 설정 방법과 linux user mode에서 동작하는 uart 통신 예제를 싣고 있다. 1. Kernel configuration uart serial 드라이버는 보통 사용할 수 있도록 설정되어 있다. 만약 확인이 필요하다면, 아래 리눅스 커널 menuconfig 이미지와 같이 Device Drivers의 Character devices가 활성화되어 있는지, Character devices내의 Serial drivers 내의 uart controller가 제대로 선택되었는지 보면 된다. uart 세부 설정을 변경하고 싶으면, linux 커널의 dts(device tree script)파일이나 칩 제조사가 제공하는 설정 방법으로 변경할 수 있다. 아래 이미지는 allwinner사의 sys_config.fex파일에서의 설정 예이다. 아래 이미지는 dtsi 파일에의 uart 설정 예이다. dtsi파일은 arm 계열의 경우 /linux/arch/arm/boot/dts 폴더에 있다. 2. uart example code 2.1. uart 드라이버 설정 및 read/write 함수 아래 예제 코드는 non-blocking 방식으로 동작하도록 설정되어 있다. select 문을 사용해 수신된 데이터가 있는지 체크하도록 했다. #ifndef __uart_h__ #define __uart_h__ #ifdef __cplusplus extern "C"{ #endif int uart_open(char *dev, int baud_rate); void uart_close(int uartd); int u...