본문 바로가기

나의 플랫폼/C언어

[ESP8266] Exception (29) 발생 시 ESP8266 라이브러리를 이용하여 Arduino를 개발 하다가 아래와 같은 오류가 발생한 경우가 있다. Exception (29): epc1=0x4020678f epc2=0x00000000 epc3=0x00000000 excvaddr=0x00000000 depc=0x00000000 그런 후, WifiClient가 먹통이 되는 현상이 발생 한다. 구글링을 해보면서, 테스트를 해본 결과~! Exception (29) 는 Memory leak이 발생된 결과 이다. loop 함수가 돌아가면서 Memory 관리를 제대로 해주지 않아 Heap에 데이터가 쌓이고, 결국 공간이 없어서 발생한 Exception 인 것이다. 그럼! 어떻게 해결 할까? 문제가 되는 위치에 있는 변수가 전역 변수인지 확인 해봐라!!! 나 .. 더보기
Socket Interface Name으로 IP 주소 가져오기. 3g,wifi등 인터넷에 interface Name이 있습니다.이 name을 이용하여 IP를 가져오는 방법이 있네요.system 입출력 함수인 ioctl을 이용하여 가져오는 방법입니다. ...#include #include #include #include ...char *getIfToIP(char *ifName){ int fd; struct ifreq ifr; fd = socket(AF_INET, SOCK_DGRAM, 0); /* I want to get an IPv4 IP address */ ifr.ifr_addr.sa_family = AF_INET; /* I want IP address attached to interfaceName */ strncpy(ifr.ifr_name, ifName, IFNAM.. 더보기
Cache Friendly Code 기법 캐쉬 알고리즘에 따라 코딩을 하는 것을 Cache Friendly Code 기법이라 합니다. 캐쉬 알고리즘에는 두가지의 로컬리티(Locality)를 이용합니다.1. Temporal Locality : 프로그램 실행 시 한번 접근이 이루어진 주소의 메모리 영역은 자주 접근하게 된다는 속성.2. Spatial Locality : 프로그램 실행 시 접근하는 메모리 영역은 이미 접근이 이루어진 영역의 근처일 확률이 높다는 프로그램의 성격 위 두가지 특징으로 캐쉬 메모리에 Data를 저장 시켜 놓고 메인메모리가 아닌 캐쉬 메모리에서 바로 데이터를 가지고 오게 됩니다.!!! 이 두 형태에 맞게 코딩하는 것이 Cache Friendly Code 인데 한가지 들어보겠습니다.int tmp[10][10] = {{1,2,3.. 더보기
시그널 종류 [ 시그널 종류 ] #define SIGHUP 1 #define SIGINT 2 #define SIGQUIT 3 #define SIGILL 4 #define SIGTRAP 5 #define SIGABRT 6 #define SIGIOT 6 #define SIGBUS 7 #define SIGFPE 8 #define SIGKILL 9 #define SIGUSR1 10 #define SIGSEGV 11 #define SIGUSR2 12 #define SIGPIPE 13 #define SIGALRM 14 #define SIGTERM 15 #define SIGSTKFLT 16 #define SIGCHLD 17 #define SIGCONT 18 #define SIGSTOP 19 #define SIGTSTP 20 #d.. 더보기