반응형

임베디드 6

[C] uart 혹은 tty 읽고 쓰기 예제 (비동기,event)

예제코드 소스코드. 간단한 시리얼 예제 프로그램이 되겄다. 실제로 smd 채널이나... 물리 tty 채널로 동작됨을 확인했고.. 비동기적으로 (event) 방식으로 동작을 하는 예제다. 테스트 확인완료. 예제코드 #include #include #include #include #include #include #include #include #include #include #include static int fd = 0; #define MAX_BUF_SIZE 512 #define DEV_JIGBEE_UART "/dev/ttyMAX" int init_uart(char * dev, int baud, int * fd) { struct termios newtio; * fd = open(dev, O_RDWR | O..

SW 개발 2020.12.18

[C] null point 코드가 동작하지 않는 이슈에 대해 (컴파일러 최적화옵션)

문제상황 해결 간혹, null point 를 체크하는 코드를 넣었으나 실제로 동작하지 않을때는 다음의 옵션을 살펴보자. 문제상황 코드상에서 null point 체크하는 코드를 넣었으나, 계속 코드가 진행되어 각종 에러가 발생하는경우가 발생한다. if (!tty) return; 즉, 위와같은 코드가 동작하지 않는다. 실제로 해당 이슈발생시, arm-none-linux-gnueabi-objdump -DSx 명령어를 통해서 디어셈해보면, null check 로 넣어놨던 코드가 없다. 해결 컴파일러의 최적화 옵션 -fdelete-null-pointer-checks 와 관련이 있다. http://gcc.gnu.org/onlinedocs/gcc/Optimize-Options.html -fdelete-null-poi..

SW 개발 2020.12.18

[C] at 커맨드로 sms 보내기 (예제코드)

예제코드 임베디드 환경에서 at cmd 로 sms 를 보내는 예제이다. 직접작성해서 사용중인 코드 cmgs 커맨드를 통해서 sms를 보내는예제코드이다. 예제코드 예제코드... #define AT_DEV_FILE "/dev/smd17" // #define AT_DEV_FILE "/dev/tty18" int send_sms_cmgs(const char* dest_num, const char* msg, const int retry_cnt) { int ret = -1; int fd = 0; int write_cnt1 = 0; int write_cnt2 = 0; int write_buf[AT_MAX_BUFF_SIZE] = {0,}; int write_cmd = 1; int retry = 0; char *p_ret..

SW 개발 2020.12.18

[C] Jansson 사용시 json_decref() 호출하는기준

C에서의 json library Jansson 에서 json_decref()의 역할? json_decref() 호출하는 기준 C에서의 json library c에서 Jansson lib 를 써보니 생각보다 api 가 잘되어있고 안정적으로 동작하였다. 만약 임베디드C 환경에서 json 을 쓰려면 jansson 을 사용하길 추천한다. 공식홈페이지 : http://www.digip.org/jansson/ Jansson 에서 json_decref()의 역할? 간단하게 이야기해서 free 와 같은 역할이라고 생각하면될것 같다. 할당된 인스턴스를 해제하는 역할이다. 혹은... 강제로 쓰고있는 인스턴스를 다른곳에서 해제하지 못하게 하는 lock 과 같은역할을 하기도한다. json_decref() 호출하는 기준 공식 ..

SW 개발 2018.05.14
반응형