Embedded2009. 1. 16. 19:44

EISC 코드를 맥에 컴파일 하기


맥을 쓰는 사람의 귀찮은 점은 항상 이런거다.. 뭐든지 맥으로 컴파일하기를 만들거나 찾아야 한다는 점이다.


1) 일단 EISC 코드를 가지고 온다.

    ADC홈피에서 자료실에서 uCLinux 페이지에서 다운로드 받은 뒤에 적당한 폴더에 압축을 푼다.


2) eisc용 로컬 폴더를 만든다.

/Users/kevinIm/Documents/Projects/EISC/eisclocal


3) 이 폴더를 패스에 등록한다.

export PATH=$PATH:/Users/kevinIm/Documents/Projects/EISC/eisclocal


4) MAKE File에서 COMPILER_PREFIX의 폴더를 새로 만든 폴더로 등록을 한다.


5) make를 한다.

  

    오류 1) gettext가 필요하단다. 

You must install 'gettext' on your build machine


Fink로 확인해보자


  fink list get


Information about 2543 packages read in 0 seconds.

     gengetopt            2.21-1001       Generates getopt_long functions

     getopt-long-pm586    1:2.34.b3-12    Extended processing of command line options

 p   getopt-long-pm588                    [virtual package]

     getoptbin            1.1.4-2         GNU version of getopt(1)

 i   gettext              0.10.40-125     Message localization support

 i   ........


뭔가 나오는데 gettext  가 있다. 이넘을 설치한다.


   음 그런데 설치가 되어 있다. 생각해보니 당연한거다.. 맥인데.. 


그럼 Makefile에서 뭔가 잘못된거다..

요거 저거 보니까.. 


TARGETS:=host-sed

이 있다. EISC 측에서는 이걸 쓰나 뭔가 정의가 잘못 된것 같다. 아마 리눅스 타겟 만들면서 구분할려고 한것 같다. 일단 나는 리눅스 만들일이 없으므로 무시하구...


        TARGETS:=sed


으로 수정해서 다시 컴파일한다. 이번에는 한참 잘 진행한다.


오류 2) 컴파일하다가 오류가 난다.


               /Users/kevinIm/Documents/Projects/Core-A/EISC/EISC_uClinux_Compiler_Source_linux/AE32000C_gcc-3.4.5-v2.6.4/toolchain_build_ae32000/gcc-3.4.5-ae32000c-uclibc-v080829/gcc/config/host-linux.c

/Users/kevinIm/Documents/Projects/Core-A/EISC/EISC_uClinux_Compiler_Source_linux/AE32000C_gcc-3.4.5-v2.6.4/toolchain_build_ae32000/gcc-3.4.5-ae32000c-uclibc-v080829/gcc/config/host-linux.c: In function ‘linux_gt_pch_use_address’:

/Users/kevinIm/Documents/Projects/Core-A/EISC/EISC_uClinux_Compiler_Source_linux/AE32000C_gcc-3.4.5-v2.6.4/toolchain_build_ae32000/gcc-3.4.5-ae32000c-uclibc-v080829/gcc/config/host-linux.c:192: error: ‘MAP_ANONYMOUS’ undeclared (first use in this function)

/Users/kevinIm/Documents/Projects/Core-A/EISC/EISC_uClinux_Compiler_Source_linux/AE32000C_gcc-3.4.5-v2.6.4/toolchain_build_ae32000/gcc-3.4.5-ae32000c-uclibc-v080829/gcc/config/host-linux.c:192: error: (Each undeclared identifier is reported only once

/Users/kevinIm/Documents/Projects/Core-A/EISC/EISC_uClinux_Compiler_Source_linux/AE32000C_gcc-3.4.5-v2.6.4/toolchain_build_ae32000/gcc-3.4.5-ae32000c-uclibc-v080829/gcc/config/host-linux.c:192: error: for each function it appears in.)

make[2]: *** [host-linux.o] Error 1

make[1]: *** [all-gcc] Error 2

make: *** [/Users/kevinIm/Documents/Projects/Core-A/EISC/EISC_uClinux_Compiler_Source_linux/AE32000C_gcc-3.4.5-v2.6.4/toolchain_build_ae32000/gcc-3.4.5-ae32000c-uclibc-v080829-initial/.compiled] Error 2

GUNDAMMACPRO:AE32000C_gcc-3.4.5-v2.6.4 kevinIm$ 


잘 보시면.. 

‘MAP_ANONYMOUS 가 정의가 안되어 있다고 에러가 난다.

Host를 리눅스로 설정해놓고 컴파일해서 그렇단다.  슬픈 맥 사용자의 운명인듯..


이것은 /dev/zero를 가리키기 위한 값이다. 일종의 템프 값인데 Linux나 BSD계열은 가지고 있고 OSX계열은 이것을 가리키기 위해서

MAP_ANON을 사용한다. 


이것으로 대치하기로 한다.


테스트를 위해서 (잘 되면 그냥 넘어가자.. 맥용 EISC 배포 시스템을 만들것도 아니니까..)

                코드는 아래처럼 간단하게 고친다.


#ifndef __GUNDAM__

#       define __GUNDAM__

#endif


#ifndef __GUNDAM__

  addr = mmap (base, size, PROT_READ | PROT_WRITE,

               MAP_PRIVATE | MAP_ANONYMOUS, -1, 0);

#else

  addr = mmap (base, size, PROT_READ | PROT_WRITE,

               MAP_PRIVATE | MAP_ANON, -1, 0);

#endif


아래와 같이 수정한 뒤에 컴파일하면 .. 음 잘넘어가는군.. 


오류 3) 역시 컴파일하다가 오류..

이번에 좀 넘어가다가 다시 오류가 난다. 음...


libgcc2.c:2:unknown section type: @progbits


컴파일러의 오류로 보여진다.

일단 에러난 부분을 짤라서 디스어셈블 해본다.


어셈블러 등을 못찾는 에러다 이럴수가.. Make 하면 어셈블러도 설치되는게 아니었단 말인가 ?

후덜덜.. 

여기까지 하고.. 보니.. 이넘이.. GCC만 배포하는것 같네요 쩝...


항상 S/W툴은 텅빈 PC에 한번 설치해보고 나서.. 배포해야 합니다.

안그러면 자신의 환경에 있지만 유저의 환경에는 없는 프로그램이 반드시 1개 이상 나옵니다.

저같은 맥 유저는 더 슬퍼집니다.


컴파일러는 소스로.. 어셈블러는 CYGWIN으로 배포하니.. 음.. 어쩔까요..  이것을. .

다시 기다려야 할듯.. 빨랑  EISC 사이트가 오픈되어야 하는데.. 


        다시 포팅 시도는 ASM소스를 배포하면 그떄 시도해 보겠습니다. 지금은 그냥 PASS.....



'Embedded' 카테고리의 다른 글

LVDS Owner’s Manual [3]  (0) 2009.05.16
LVDS Owner’s Manual [2]  (0) 2009.05.15
LVDS Owner’s Manual [1]  (0) 2009.05.14
인텔 컴파일러 최적화 기능 테스트  (0) 2009.03.23
2008년 10가지 Embedded Design 컬럼  (0) 2009.01.03
Posted by GUNDAM_IM
ASIC SoC2009. 1. 15. 11:49

DSP가 필요해졌습니다. 에구~~


갑자기 DSP가 필요해졌습니다. 

엄밀하게 말하면 뜬금없이 갑자기 필요한것은 아니었지만, 

그동안 굳이 개발할 필요가 있겠냐 라는 마인드로 외면하면서 버티고 있었습니다.


SoC같은 부류의 일을 하다 보면 프로세서가 2가지 종류가  필요하게 됩니다.

하나는 내부 컨트롤을 위한 MCU이고, 나머지 하나는 고속으로 동작하며 필요한 정보 처리를 씩씩하게 해낼 수 있는 프로세서 입니다. 전자를 컨트롤러개념에 가까운 프로세서 이며,  후자를 데이터 처리를 위한 프로세서 개념으로 분류를 합니다.



필요해 진것은 표준에 부합된 프로세서가 아니라 필요한 기능을 재조립 가능한 데이터 처리용 프로세서입니다.

그것도 빵빵한 속도로 돌아가는 프로세서 입니다. H/W Accelerator만으로 해결 할 수있는 부분이 

제한적이 될 것 이고, 내부에 고속으로 동작하는 프로세서가 있어서 이놈이 역활을 크게 해야 할 것으로 

생각합니다.


컨트롤로와 데이터 처리 프로세서 중에서 DSP를 먼저 설계하는 이유는 DSP에서 컨트롤러로 가는 것은 쉽지만, 컨트롤러에서 DSP로 가는 것은 결코 쉽지 않습니다  그래서 DSP를 먼저 설계하고, 튜닝해서 컨트롤러로 다운 사이징을 하는 것이 맞다고 생각합니다.




사용 가능한 것들을 총 망라해보면 비싼(?) 상용 프로세서를 사용하자니.. 곤란하구요.. 

벤쳐에서 언강생심 ARM이나 MIPS를 쓴다는 것은 큰일입니다. 그것도 데이터 처리를 위한 프로세서에

넣자고 하면 만만치 않은 투자 비용이 들어갑니다.



OpenCore에서 개발된 프로세서를 사용하는 것도 가능합니다. 그런데  이 프로세서의  재미있는 부분이 초기에는  OpenCore Processor 저자가 라이센스가 무료입니다 하고 외쳤지만, 어느날 부터인가는 조용해지더니 지금은 떡 하니 회사를 차려 놓고 있습니다.


실제로 국내에서 모 회사가 이 회사랑 계약하였습니다. 

그래서 돈주고 라이센스 하여야 하는것이 아닌가 하는 상태까지 의심이 갑니다. 실제로 국내에서 계약한 회사는 초기 라이센스 비용이 있다고 하였습니다. - 괜히 걸려서 오해사느니.. 이 OpenCore는 포기.. 


그외에는 SunSparc의 Clone프로세서인 Leon이 좋은데요. 실적도 있고 오픈도 되어 있습니다.

코드를 보신 분은 아시겠지만 VHDL이 아니라 거의 C++수준이라고 생각될 정도로 코딩이 되어 있습니다.

나중에 기능을 추가할려면,  골치아픈 구조라고 생각됩니다.


사용자 삽입 이미지
                                 위의 그림은 LEON3 프로세서입니다. 0.25 공정을 사용했다고 합니다. 

                               






공개된 프로세서를 사용하지 않고 개발한다면 몇가지 선결 과제를 고려해야 합니다.


 

 (1) 컴파일러는 어떻게 할 것인가 ?

       GCC에 포팅한다면, 프로세서의 최적화는 그렇다고 하더라도 인라인 어셈블러에 대해서는 웬만큼 

       익숙해지지 않고서는 사용하기 힘든 사태가 됩니다.  


 (2) 개발 환경은 어떻게 할 것인가 ?

       내부 용이긴 하지만, 그래도 어느정도 개발 환경을 지원해야 합니다.

       디자인 초기에 이 부분이 잘 정의 가 안되어 있으면 진행하는 과정에서 추가하는 것은 아주 어렵습니다.

      

 (3) 내부에 연산 크기는 어떻게 할 것인가 ?

       오디오 용인지 , 비디오 용인지 ,  신호 처리 용인지 등에 따라서 연산자가 많이 바뀌어야 합니다.

       복잡한 연산을 하드웨어가 한다면 편하지만, 프로세서가 한다면, 어떻게 연산자를 정하고 컴파일러/어셈블러에서 지원하는지 정의를 해야 합니다.



옵션에 따라서 파이프라인을 조절하면 컨트롤러 용으로 사용할 수 있도록 구성해 둘 생각입니다.


아키텍쳐로는 어떤게 좋을까 생각을 해보면,


(1) 상용 프로세서의 클론 프로세서로.. 하여본다.

(2) 새로운 아키텍쳐의 프로세서를 과감하게 설계해 본다.

   (3) 적당한 돈을 주면 아키텍쳐 라이센스를 주는 프로세서를 설계해본다.


중 하나를 선택해서 진행하여야 하겠죠


꿈을 가진 엔지니어라면 과감하게 (2) 번 모드로 진입을 하겠지만, 엄청난 닭질이 기다리기 때문에,

(1)번이나 (3)으로 가야겠죠. .그래서 (2)번은 아웃.. 예전에 한번 해봐서 굳이 이 모드로 갈 필요가 없습니다.


(1)번 모드일 경우 항상 두근거리는 스릴을 느끼면서 지내야 합니다. 몰래 MIPS나 ARM Clone을

만들어서 사용할 경우 당장은 무난하더라도 언젠가는 걸려서 큰일 한번 치루게 됩니다.


그래서 (3)번 모드로 갑니다.


나머진 다음에 또.. 2부에서.. 


Posted by GUNDAM_IM
MAC Life2009. 1. 8. 22:52

Key Note 09


저는 사실 키노트에 빠져서 맥라이프를 시작했었습니다.

스티브 잡스가 MACBOOK PRO를 발표하던 PT였었습니다. 

그때 너무 멋져서.. 속공으로 macbook pro를 구입했습니다. 


그래서 항상 새로나오는 키노트는 항상 유심히 봅니다. 

올해 맥월드는 특별한 기술이 발표되지는 않았습니다. 

어찌보면 그동안 너무 화려했기 때문에 나름 대단한 기술이 나와도 사람들이 무감각해져있는지도 모르겠습니다.


이번에 애플에서 발표한 것 중 재미있는 것은 KeyNote였습니다.


여러가지 이펙트가 추가된 넘이엇는데 그중에서 새로운 것은 매직 무브라고, 앞 뒤 슬라이드간에 객체의 이동을 자연스럽게 표현하여 주는 것입니다.

아래 동영상을 보시면 한방에 이해할 수 있으실 것입니다.


Demo: Magic Move

사용자 삽입 이미지







PT를 하면서 문제중 하나가 효과가 너무 화려하면 청중은 효과만 보다는 점입니다.

그래서 프리젠테이션을 가리키는 강좌나 책에서는  가급적 화려한 효과를 자제하면서 하라고 설명되어 있습니다.


하지만 스티브잡스의 PT를 보면 효과를 극대화 시키도록 PT가 설계되어 있다는 것을 알 수 있습니다.

화려하지만 가장 필요한때에 필요한 부분을 강조 할 수 있는 PT가 바로 스티브 잡스의 PT입니다.


아래 사진은 예전에 iPHONE발표할때에, 잡스가 쓰던 효과중에서 

Apple Computer Incorporation 에서 Apple Incorporation으로 바뀌는 PT가 있었는데

그 효과가 너무 멋져서 기억을 하고 있었습니다. 

워매.. 멋진거..  


사용자 삽입 이미지

스티브잡스의 프레젠테이션은 어떻게 만드는가에 대하여 정리한 사이트입니다.

http://www.usingmac.com/2008/9/12/how-to-create-steve-jobs-keynote



Posted by GUNDAM_IM
Computer Vision2009. 1. 6. 08:53

MAC에서 OpenCV를 컴파일 하기


맥에서 OpenCV를 컴파일 


http://opencv.willowgarage.com/wiki/Mac_OS_X_OpenCV_Port


이 페이지를 참조로 따라가면서 컴파일한다.




1. 시작은 OpenCV의 위키 페이지에서 시작한다.

   

    http://opencv.willowgarage.com/wiki/


   여기에서 올려져 있는 글을 찬찬이 읽어보면 많은 도움이 된다.


2. Learning OpenCV: Computer Vision with the OpenCV Library

  • by Gary Bradski and Adrian Kaehler, O'Reilly Press, October, 2008.
  •    
  •    책으로 잘 나온 것은 오라일리의 책입니다. 사실상 매뉴얼이라고 생각되고요,  OpenCV사이트에서도
  •    매뉴얼 대신으로 추천해주는 책입니다.

3.   다운로드는 SVN으로 한다. 


     http://sourceforge.net/svn/?group_id=22870

 

     페이지에 가면 다운 받을 수 있는 커맨드가 있다. 이것을 이용하여 다운 받는다.


    svn co https://opencvlibrary.svn.sourceforge.net/svnroot/opencvlibrary opencvlibrary


  이 커맨드는 전체를 모두 다운 받는 것이다. 전체라 함은 브랜치라던가 프리베타 버전과 같은 불필요한 부분까지 모두 다운 받은 것을 말합니다.

   처음에는 폴더 구조 가은 것을 잘 모르므로, 그냥 한번 정도는 다운 받아 폴더 구조를 보는 것도 도움이 된다.


   위의 커맨드를 넣으면 OpenCV를 다운 받을 수 있다.


   아래 사이트에서도 다운 받을 수 있다. 


   http://sourceforge.net/project/showfiles.php?group_id=22870


   이 글을 쓰는 현재 시점에서 최신 버전은 1.1pre 버전이다.


   여기서는 후자인 tar파일을 직접 다운받아서 진행한다.


   


4. compile

    일단 다른 폴더에서 빌드를 한다.

    

     mkdir build

     cd build

     ../opencv-1.1.0/configure CPPFLAGS="-I/opt/local/include" LDFLAGS="-L/opt/local/lib"



      make


     한참을 컴파일 하고 끝난다.


   sudo make install


      끝나면 위와 같이 인스톨을 한다.

     

5. 테스트 해보기

     

    인스톨이 끝나면 다음과 같이 확인을 해 볼 수 있다.


    샘플용 소스 코드를 다운 받는다. 

    일일이 코딩하기 귀찮으므로 그냥 간단히 다운 받는다. 

    인터넷에서 OpenCV sample을 서치하면 아래 사이트를 발견할 수 있다.


    http://www.netaro.info/techinfo/OpenCV/src/index.html


    여기에 가면 적당한 예제가 있다. 다운 받은 폴더에 가면 ZIP파일로 되어 있고 이것을 압축을 푼다.


    컴파일을 하면 다음과 같은 오류가 발생한다.


GUNDAMMACPRO:edgedetect kevinIm$ make

gcc -c -g -Wall sampleEdge.c

gcc -o simpleedge sampleEdge.o -lhighgui -lopencv

ld: library not found for -lopencv


   Makefile 을 보면 몇가지 잘못된 옵션이 있다. 버전차이라고 생각된다.. 일단 Makefile을 아래와 같이 수정한다.


   gcc -o simpleedge sampleEdge.o -L/usr/local/lib -lhighgui -lcv -lcvaux -lcxcore


   == WAS == 

  LDFLAGS = -lhighgui -lopencv -L/usr/local/lib


   == IS ==

  LDFLAGS = -lhighgui -lcv -lcvaux -lcxcore -L/usr/local/lib


   그리고 컴파일하면 다음과 같이 나온다.


GUNDAMMACPRO:edgedetect kevinIm$ make

gcc -c -g -Wall InteractiveEdgeDetect.c

InteractiveEdgeDetect.c:18: warning: ‘ltval’ defined but not used

InteractiveEdgeDetect.c:19: warning: ‘htval’ defined but not used

gcc -o intedge InteractiveEdgeDetect.o -lhighgui -lcv -lcvaux -lcxcore -L/usr/local/lib


   실행은 간단하게 해본다.

 

아래 그림은 실행한 결과이다. 

윤곽선을 추출하는 예제이다.


사용자 삽입 이미지


사용자 삽입 이미지

'Computer Vision' 카테고리의 다른 글

Rob Hess의 SIFT [3]  (2) 2009.02.23
Rob Hess의 SIFT [2]  (0) 2009.02.18
Rob Hess의 SIFT [1]  (1) 2009.02.16
XcodeでOpenCV開発  (0) 2009.01.03
파노라마 구성하기  (0) 2009.01.03
Posted by GUNDAM_IM
Life is ..2009. 1. 5. 05:55



한때는 저도 게임 개발을 하기 위해서 고민하던 시절이 있었습니다. 

지금은 그때와 많이 달라서 단지 게임 유저로 만족하며 지내고 있습니다.


아래 그림은 제 친구녀석들이 만든 게임입니다. 


사용자 삽입 이미지
                      게임의 이미지 샷입니다.  배경의 화학식은 생뚱 맞게 왜 보이는걸까요 ? 화생방 전이려나~~ 




예 바로 FPS게임입니다. 아직 정식 발표하지 않고 내부 베타 테스트를 하고 있습니다.

조만간 클베, 오베를 할 에정입니다.  


얼마전에 데모 동영상과 플레이 화면을 보았는데 어리버리 게임 엔진을 능가하는 엔진을 만들어서 화면이

탁월한 효과를 내고 있습니다.  


게임 엔진 이름이 파이라고 하는데 역시 급조한 느낌이 나는 엔진 이름이죠.. ㅋㅋ 네이밍 센스는 예나 지금이나 ..  

하긴 회사 이름도 마고 엔터테인먼트라고 하는 절대 안잊어 버릴 회사 이름으로 만들었죠

아시는 분은 다 아실 19금 영화의 제목이 마고 였으니까요... 


하지만 이번에는 게임 하나는 제대로 만든것 같습니다. 나머진 마케팅의 영역이라 생각할 정도로 잘 만들었습니다.  

물에 뛰어들때 첨벙하는 느낌이라던가, 물을 향해 총을 쏘면 물이 튕겨 오르는 화면 효과.

뛰어가다가 슬라이딩하면서 총을 쏘는 느낌등등 기존의 FPS랑은 차별화가 될것 같습니다.


10년 넘게 오직 게임 하나만 보며 개발하고 매달리고 전진할 수 있는 그 열정과 집념이 부러울 따름입니다.


정말  정말 많은 고생을 하는 것을 옆에서 봤기 때문에 이번에는 성공하기를 진심으로 바랍니다.


사용자 삽입 이미지



인터넷에 가면 게임 데모 동영상을 볼 수 있습니다.


         http://www.thisisgame.com/board/view.php?id=193288&category=101


         사장이 직접 성우를 하는 바람에 많이.. 안습으로 감점을 받지만 하여튼

         전반적인 게임의 효과를 볼 수 있습니다. 

         이 동영상을 보고 외국 게임 퍼블리셔들이 연락이 온다고 합니다.

         - 하기사 외국 사람은 한국말 모르니 성우를 누가 했는지에 큰 관심이 없고 오직 게임의 성능과 재미만을 보고 판단할 수 있으니까요...


'Life is ..' 카테고리의 다른 글

요즘 하고 있는 일들..  (0) 2009.07.08
바다낚시 가다  (0) 2009.07.03
멋진 집 사진 모음  (0) 2009.06.29
가족의 강원도 동해안 일주 여행기  (0) 2009.06.01
Who am i  (0) 2009.01.04
Posted by GUNDAM_IM