분류 전체보기
-
VT터미널에서 컬러 사용하기프로그래밍/기타 2021. 3. 28. 10:30
디버깅 메시지를 보다보면 텍스트가 너무 많아서 원하는 메시지를 찾아 헤매는 경우가 많은데요. 정말 중요한 메시지에 색을 입히면 조금은 찾기 수월해집니다. VT100 이상 호환되는 터미널은 글씨와 배경에 색을 입힐 수 있습니다. 위의 프로그램의 소스 코드입니다. #include #define COLOR_END"\x1b[0m" #define COLOR_BOLD"\x1b[01m" #define COLOR_BLINK"\x1b[05m" #define COLOR_REVERSE"\x1b[07m" #define FG_BLACK"\x1b[30m" #define FG_RED"\x1b[31m" #define FG_GREEN"\x1b[32m" #define FG_YELLOW"\x1b[33m" #define FG_BLUE"\x..
-
리눅스 어플리케이션에서 RTC 사용하기프로그래밍/리눅스 2021. 3. 26. 15:58
제품을 만들어보면 시간이 꽤나 틀어지는 경우가 많이 있습니다. 그나마 네트워크나 GPS 등의 장치가 있으면 시간 동기화라도 할 수 있지만 단독 제품인 경우는 그럴 수가 없습니다. 그래도 시간에 민감한 제품이 아니라고 생각해서 그냥 시장에 내보냈다가 바이어나 소비자로 부터 시간이 자꾸 틀어진다는 컴플레인이 발생하지요. (하지만 요즘에는 원칩에 있는 RTC도 꽤 정확하더라구요. 모든 경우에 다그런 것은 아닙니다.) 그래서 외부 RTC를 사용해서 시간 오차가 적도록 설계하곤 하는데요. 외부 RTC가 잘 동작하는지 확인 할 수 있는 예제 코드입니다. #include #include #include #include #include #include #include #include #include int idx = ..
-
리눅스 어플리케이션에서 SPI 사용하기프로그래밍/리눅스 2021. 3. 24. 15:50
I2C에 이어서 SPI를 사용하는 방법도 설명하겠습니다. 먼저 아래 예제 코드를 보시죠. #include #include #include #include #include #include #include #include #include int bus = 0; int cs = 0; unsigned int mode = SPI_MODE_3; unsigned int bits = 8; unsigned int lsb_first = 1; unsigned int speed = 1000000; // 1MHz int main() { int fd; int rval; char path[20]; unsigned char buf[10]; struct spi_ioc_transfer xfer[1]; sprintf(path, "/dev..
-
리눅스 어플리케이션에서 I2C 사용하기프로그래밍/리눅스 2021. 3. 23. 22:05
I2C나 SPI로 통신되는 칩들은 대부분 리눅스 디바이스 드라이버로 핸들링하는게 보통이지만 테스트나 간단한 기능을 하는 칩의 경우에는 어플리케이션에서 핸들링하기도 하지요. 이번에는 리눅스 어플리케이션에서 I2C 칩을 Read/Write 하는 방법을 설명해 볼까 합니다. 아마도 대부분은 I2C 노드가 /dev 디렉터리에 i2c/0, i2c/1 ... i2c/N 이렇게 존재하거나 i2c-0, i2c-1 ... i2cN 이렇게 존재할 것입니다. 이 노드들을 open, close, ioctl, read, write와 같은 I/O 함수들로 I2C 통신을 할 수 있습니다. 읽어오기 MCU의 I2C 0번 버스에 Slave address가 A0h인 칩이 있고, Sub address가 16비트이고 데이터는 8비트로 통신..
-
Windows용 RTSP 서버 소스프로그래밍/윈도우즈 2021. 3. 23. 10:15
최근에 카메라가 있는 보드로 부터 영상을 RTSP로 받아서 재생해주는 윈도우즈용 응용 프로그램을 만들 일이 있었습니다. 하지만, 카메라 보드와 개발을 동시에 진행해야 해서 테스트가 용이하지 않아 노트북에 있는 웹캠 영상을 소스로 사용하여 RTSP 서버를 만들어 테스트를 진행하였습니다. 이렇게 임베디드 분야는 타깃 보드쪽 개발과 앱 개발을 동시에 진행하는 경우가 많아 일정 내에 개발을 완료하기 위해서는 시뮬레이션 환경을 만드는 일도 필요합니다. 사설이 길었네요... 소스는 Microsoft Visual C++ 2019로 작성되었지만 64비트 컴파일러가 지원되는 버전이면 가능할 것 이라고 생각됩니다. 64비트 컴파일이 지원되야 하는 이유는 다운로드 받아 사용할 FFMPEG 라이브러리가 64비트이기 때문입니다..
-
리눅스 시간 설정 관련TIP&TECH/리눅스 2021. 3. 21. 11:49
EDT를 KST로 변경하기 # mv /etc/localtime /etc/localtime.org # ln -s /usr/share/zoneinfo/Asia/Seoul /etc/localtime # rdate -s zero.bora.net rdate 명령어로 타임 서버에서 시간을 동기화할 때 다음과 같이 시간 서버에 접속이 안될 때가 있습니다. rdate: bad address 'zero.bora.net' 그럴 때는 다음과 같이 DNS 설정을 해주면 됩니다. 자세한 내용은 (링크) 참조. # vi /etc/resolv.conf nameserver x.x.x.x