제임스딘딘의
Tech & Life

2012/10 13

[모듈 삽입 에러] unknown symbol in module

ko 파일을 insmod 명령을 통해 커널에 동적 삽입을 시도할 때 다음과 같거나 혹은 유사한 메세지를 뱉으며 에러가 나는 경우가 있다. -1 : unknown symbol in module dmesg 명령을 통해 커널 로그를 확인 해보자.모듈 삽입시 에러가 나는 원인을 어느정도 추측할 수 있을 것이다. dmesg 에 기록된 메세지 사례 사례 1 :Unknown symbol lockdep_init_map (err 0) 다음 조건을 만족하면 발생 : 컴파일한 모듈의 소스코드에 semaphore, mutex, spinlock 등 락 메커니즘을 사용하는 함수가 포함되어있는 경우. 커널 빌드시 CONFIG 옵션중 lock 관련 디버깅 옵션을 활성화 한 경우.(lockdep) lockdep는 커널의 락 메커니즘이..

데이터 글러브 동작 테스트 영상

Air Haptic Glove 프로젝트 초기의 데이터 글러브 테스트 영상 입니다. 3D Rendering Part : 전영호3D Rendering Engine : microsoft XNA 3.1Implement Language : C#Physics Engine : JigLibX.Net3D Modeling : 3D studio max 2011 Hardware Part : 김재민, 권기우MCU : cortex m3acceleration sensor, magnetic sensor, flex sensor : can`t remember 첫번째 영상은 데이터글러브를 착용한 사용자의 손가락 구부림 정도를 추정하여 3D 손에 적용하는 테스트 영상이다. 프로젝트 초기의 영상이라 손가락 떨림 보정이 적용되어있지 않은 것을..

[구매후기] PRADA-2M0513-SAFFIANO METAL-NERO 남성용 반지갑

제품 요약 브랜드 : PRADA (프라다)모델넘버 : 2M0513재질 : SAFFIANO METAL (사피아노 가죽, 메탈 로고)컬러 : NERO가격 : \ 530,000 출시년도 : 2012년 개인적인 평가프라다의 검은색 사피아노 가죽으로 만들어진 남성용 반지갑이다.20대 초반~ 30대 후반 남성들이 사용하기에 잘 어울릴 것 같은 제품으로 여겨진다.물론 위 나이대에 속하지 않더라도, 사용하면 안되는 것은 아니다. 생각해보니 누구에게나 잘 어울리겠다 싶다. 그만큼 이 제품은 평범한 디자인, 평범한 색상을 가지고 있다.전혀 튀지 않는다. 카드 수납공간은 아래와같이 총 8칸이다.많지도, 적지도 않다. 과하지 않고 부족하지 않아서 사용하기 좋다. 지폐의 수납공간은 2칸이다. 이 역시, 반지갑이라면 대부분 2칸..

NULL ptr/ NULL ptr 2012.10.19

Pandaboard ES 구매

Pandaboard ES 구매 삼성소프트웨어 멤버십 임베디드 시그에서 공부하는데 사용하려고 구매했다. Pandaboard ES 보드이다. Ti Omap4460 를 프로세서로 사용하는 보드. 아직 국내판매처는 없는 것 같고, digikey 를 통해 구매하였다. 링크 : http://www.digikey.kr/ 주문 후, 1~2일 기다리면 digikey 측에서 email 을 통해 invoice 작성을 요청해온다. 작성하여 다시 email로 회신해주었더니, 상품 배송을 해주었다. UPS를 통해 배송해 주었고, 미국에서부터 배송기간은 4일 정도 걸렸다. (9월 17일 상품 준비~9월20일 대전에서 수령) 수령후 10일 이내에 입금 하면 되는데, 상품 가격은 19만7천원 가량이었다. 수령한 보드는 아래와 같은 임..

스마트폰 거치대 기구부 설계

본 프로젝트의 기구부를 만들 필요가 있었다. 회로를 보관할 박스 부분과, 스마트폰 거치대를 붙일 부분, Panning 모터와 Tilting 모터를 붙일 부분 등이 필요했다. 일단, 손으로 대충 구상하여 설계한 뒤, 가공이 쉬운 아크릴과 MDF, 이미 가공되어있던 알루미늄 가공물등을 이용해 프로토 타입을 만들어 보았다. 프로토타입 제작에 2일 걸렸다. 스마트폰 거치대 초기 프로토타입의 모습 이후 프로토타입이 어느정도 가용하다고 판단을 하고, 프로토타입의 설계도를 기준으로 솔리드웍스로 재설계를 했다. 솔리드웍스 재설계는 팀원중 종섭이가 전담하여 진행해 주었다. 솔리드웍스 완전 처음 사용한다고 하며 튜토리얼 보고 학습후 진행 했으나, 진행속도는 빠른 편이었다. 약 2일 가량 소요. 설계된 파일에서 2D 도면만..

식물 감성 모니터링 시스템 : Youtube 업로드 영상

이 프로젝트를 수행했던 김들이, 김예슬, 이지우, 최윤미, 팀장 최경호 모두 수고 많았습니다! 특히, 졸업작품 때문에 바쁜 와중에 영상 편집까지 하느라 날밤을 많이 지새웠을 지우에게 정말 고생했다고 말하고 싶습니다. (팀장 최경호의 말) 한글 버전 링크 : http://youtu.be/YNmFbD_uDm4 English version link : http://youtu.be/2GKDcoodOCs

선형 전압 레귤레이터(Linear Voltage Regulator)

선형 전압 레귤레이터(Linear Voltage Regulator) Embedded system을 설계하려면 가장 먼저 고려해야 할 점이 '전원회로를 어떻게 구성할 것인가' 이다. 특히 휴대용 Embedded system을 설계할 때는 가장 중요한 부분이라고 할 수 있겠다.요즘 스마트폰이나 테블릿 들이 여러 새로운 기능으로 변신을 하고 있지만, 여전히 가장 중요한 것 중 하나는 배터리(Battery)의 크기를 소형화 하는 것과 장치 자체가 사용하는 전력소모를 줄이는 것이다. 여기서는 간단히 Embedded system 설계에 필요한 Power 회로의 특징을 이해하는 정도만 알아보겠다. 첫 순서로 가장 많이 그리고 쉽게 사용하는 Linear Voltage Regulator 이다.Linear Voltage ..

5v를 3.3v로, 3.3v를 5v로! 전압 변환을 위한 부품 Logic Level Converter

5v 시스템에 3.3v 장치를 연결해 본 사람은 그것이 얼만다 번거로운 일인지 잘 알 것이다. 5v 인 ATmega128에 블루투스 FB155BC 칩을 붙인 다던가 하는 작업 말이다. BOB-08745 라는 Logic Level Converter 가 있다. 링크 : https://www.sparkfun.com/products/8745 이것은 5v 시그널을 3.3v 로 낮춰주기도 하고 3.3v 를 5v 로 높여주기도 한다고 한다.2.8v 과 1.8v 에 대해서도 동작한다고 한다. (오!) 아직 사용해 보지는 않았지만, 추후 이런 상황이 발생하면 이걸 사용해 볼까 한다. 가격도 1.95 달러로 저렴. (홍보하는 것 같지만, 나와는 상관없다. 유용한 정보인 것 같아서 기록 해 둔다.)이미지는 무단도용!출처는 ..

리눅스에서의 세마포어 (Semaphores in Linux)

리눅스에서의 세마포어 (Semaphores in Linux) 원본 출처 : http://linuxdevcenter.com/pub/a/linux/2007/05/24/semaphores-in-linux.html?page=1 일반적으로 상용 어플리케이션은 멀티스레드 어플리케이션이다. 상용 어플리케이션중 멀티스레드가 아닌 어플리케이션은 상상하기 힘들다.어플리케이션과 시스템의 성능(응답성)을 높이기 위해서 어플리케이션은 반드시 멀티스레드를 이용한 접근을 해야만 한다. 그러나, 인생의 대부분은 대가없이 얻어지는 것은 없듯이, 어플리케이션에서 멀티스레드의 특성을 활용해야 할 필요가 있다면, 다음과 같은 몇가지 이슈와 부딪히게 된다. 바로 교착상태(dead lock), 경쟁상태(race condition), 스레드의 ..

man page와 section number

man page와 section number리눅스를 사용하다보면 종종 'man page'라는것을 접하게 된다.리눅스를 처음 접한 사용자라면 몇몇 리눅스 커뮤니티에 무언가 질문을 해도, 'man page 찾아보세요. 거기에 다 나와있어요' 라는 답변을 받기도 한다. 대체 man page는 뭘까?man page는 'manual page'를 말한다. 리눅스의 여러 요소들(라이브러리 함수, 시스템콜, 명령어 등) 여러가지에 대해 설명하는 설명서(manual, 매뉴얼)라고 보면 될 것이다. 예를 들어, 당신이 'printf' 를 잘 모른다고 가정하자. 이에 대해 자세히 알아보는 방법은 몇가지 존재 할 것이다.구글링을 한다던가, 대학 학부생때 배웠던 C언어 책을 다시 꺼내본다던가. 옆에 앉아있는 동료 프로그래머에게..

FFmpeg 참고자료

* 스마트폰을 이용한 가정용 화상감시 장비 프로젝트 진행 과정에서 얻게된 지식을 공유하는 포스팅 입니다. 본 프로젝트에서는 FFmpeg와 x264 라이브러리를 안드로이드에 포팅하여 H.264 인코딩/디코딩을 사용하였다.결국 인코딩/디코딩 모두 성공 했지만 불완전 하다. 네트워크 전송시 Intra 코딩만 가능. Inter 코딩 시 수신 측에서 디코딩 불가 문제가 있다. 이 문제를 해결 중에 있다.(2012. 10월)아래 링크는 이 작업과정에서 참조했던 사이트의 링크들 이다. - ffmpeg 사용시 참고했던 사이트 링크ffmpeg는 레퍼런스 문서나 예제가 많지 않아서 상당히 애를 먹었던 기억이 있다.doxygen 문서가 있긴 하지만, 필요한 걸 찾기가 개인적으로 불편했었다. 그래서 각 섹션마다 링크를 걸어둔..

libavcodec을 사용한 H.264 인코딩/디코딩 - C code

* 스마트폰을 이용한 가정용 화상감시 장비 프로젝트 진행 과정에서 얻게된 지식을 공유하는 포스팅 입니다. 본 프로젝트의 전체적인 시스템 구성도는 아래와 같다. 여기에서 코덱이 필요한 이유는, 감시 영상을 네트워크를 통해 전달하기 때문이다.raw data를 그대로 전달 할 경우, 1프레임 영상의 크기가 1메가를 상회하게 된다. (지원 해상도는 QCIF, QVGA 만 허용함. 이는 각각 352 x 288과 320 x 240 이다.) 네트워크 대역폭 제한으로 인해 받아 보는 쪽에서 영상의 프레임이 낮을 것이다.또한 3G/4G 를 사용한다면 데이터 요금도 상당할 것이다. 이를 h.264 코덱으로 인코딩 하여 네트워크로 보내게 된다면, 이런 문제를 해결 가능 할 것이라 판단하여 코덱을 사용하였다. 물론 인코딩 하..

[Ubuntu 12.04] GRUB : 부트로더 환경설정

*본 설명은 Ubuntu 12.04 를 기준으로 합니다. 1. GRUBGRUB 혹은 GNU GRUB은 GNU 프로젝트의 부트로더이다. GRUB의 이전 이름은 GRand Unified Bootloader 이었으며, 이는 대통일 이론의 영문 이름을 패러디한 것 이라고 한다. 대부분 리눅스 배포판에서 부트로더로 사용한다. GRUB은 LILO와 달리 설정 변경 후에 재설치가 필요 없다. GRUB은 스테이지 단위로 부팅 과정이 구성되어 있으며, GRUB의 스테이지 1은 MBR에 존재한다. GRUB 설정 파일은 대개 스테이지 2에서 불리며 이들은 GRUB이 읽을 수 있는 파티션에 존재한다. 만약 설정 파일이 없으면 명령줄로 간다. 이들 설정 파일은 /boot/grub에 있으며 배포판마다 파일 이름이 다르다. 이러한..

1