임베디드 프로그래밍 썸네일형 리스트형 루프언롤링 (효과적인 loop 문 프로그래밍 #2) 루프 언롤링이라는 것이 있다. 이전 글에서도 보았듯이 루프문일 반복하기 위해서는 조건분기문을 항상 거치게 된다. 이것이 반복되면 그만큼 오버헤드가 되는 것이다. 이 오버헤드를 조금이라도 줄이기 위해 루프문의 몸체를 여러번 반복할 수 있다면 조건분기문의 반복 횟수를 루프문의 몸체 반복횟수를 나눈 만큼 줄일 수 있게 된다. 예를 들면 int a=100; do{ /*do A*/ a--; }while( a!= 0) 이런 구문을 다음과 같이 수정하면 int a=; do{ /*do A*/ /*do A*/ /*do A*/ /*do A*/ a-=4; }while( a!= 0) A라는 동작을 하기 위한 100번 반복될 조건분기문 횟수가 4번에 1번으로 줄어들게 된다. 그만큼 오버헤드를 줄일수가 있으나 코드사이즈가 늘어나.. 더보기 loop 문 효과적으로 프로그래밍하기 글쓴이는 임베디드 분야 업계에 종사하고 있지만 이분야에서의 마스터 수준도 아니며 일반 엔지니어일 뿐이다. 하지만 너무 전문용어 위주의 딱딱한 내용보다 준전문가 수준에서 프로그래밍에 대한 기본지식을 쌓고자 한다. 내용은 ARM system developer's guide 저서를 참조하였다. 최근의 임베디드 대부분은 ARM architecture를 base로 개발되며 개발자 대부분은 C언어를 사용하고 있다. 이때 동료들이 개발한 코드를 보게되면 loop문에 for문과 while문이 쓰이는 것을 볼 수 있다. 둘 중 어느 loop문을 어떤 방식으로 써야 효과적인 걸까? 이번글에서는 단순이 loop count가 정해져 있는 경우에 대해서 살펴보고자 한다. 단순히 비교해 보았을때는 가독성이라면 for문을 선호할 .. 더보기 mmc_test write transfer 연습 mmc_test write transfer 연습파일 다운로드 더보기 [android] arm계열 coreutils & adb daemon root 권한 apk (adbd insecure) 1. dockers를 통해서 받은 arm계열용 linux coreutilshttps://github.com/Sonelli/android-coreutils2. superuser apk를 통해서 rooting을 했음에도 adb shell에서 permission 관련 에러가 날때http://forum.xda-developers.com/showthread.php?t=1687590 더보기 V4L2 링크 V4L2 : video for linux 2 video for linux 의 다음버전 video드라이버에 대한 capture/overlay API를 제공한다. 리눅스에서의 video드라이버에 대한 개발을 쉽게 할 수 있도록 함. 자세한 사항은 다음 링크를 참조. http://linux.bytesex.org/v4l2/ 퀄컴 카메라 API를 이용해 개발했지만 이것도 유심히 살펴봐야 겠네 더보기 커널에서의 파일 입출력 http://www.linuxjournal.com/node/8110/print 좀 더 읽어봐야 알겠지만...결국은 하지 말란 얘기? 더보기 msleep mdelay 원리 (아래 글은 '임베디드 월드'에서 발췌) 주소 : http://www.embeddedworld.co.kr/article/view_serial.asp?se=38&article_idx=9454 디바이스 드라이버 이해 1 리눅스 임베디드보드 구조 이해를 바탕으로 개발환경을 구축하고, 디바이스 드라이버 작성 및 리눅스 시스템 프로그래밍 방법을 익혀서, 리눅스 임베디드보드에서 영어학습기를 구현해 보도록 하자. 필자가 관련 기술들을 체계적으로 학습하고 실습한 내용으로 임베디드보드에 영어학습기를 구현한 사례를 독자 여러분들과 공유하고자 한다. 내용을 되도록이면 정확하게 전달하고자 노력했으며, 독자 여러분들의 많은 관심과 격려 있기를 바란다. 필자의 작은 노력이 관련 기술 분야에서 한줌의 민들레 꽃씨가 되었으면 한다... 더보기 regex gnu example #include #include #include int main() { int i=0; #define MAX_NUM 7 char a[] = "i'm 0 9 3 th"; char *p; int stat=0; const char *s; struct re_pattern_buffer pattern; struct re_registers regs; regs.num_regs = 0; p = "[0-9]"; re_set_syntax(RE_SYNTAX_POSIX_EXTENDED); memset( &pattern, 0, sizeof(pattern) ); //memset( ®s, 0, sizeof(regs) ); s = re_compile_pattern(p,strlen(p), &pattern ); while(re_se.. 더보기 이전 1 다음