~20100429/나의하는일... - 해당되는 글 14건
 프로그램을 하는 사람이라면 누구나 Java라는 것을 한번 쯤은 들어봤을 것이다.
 Java 간단하게 생각하면 프로그래밍 언어의 하나라고 하면 될 것인데. 이 Java란 놈이 어찌하여, 요즘 자주 사용될까? Linux, Window, Mac, Embedded등 안 쓰는 곳이 없다.
 Java의 특징으로는 이런 것이 있다.

 *  Java의 특징
  - 자바는 플랫폼에 종속적이지 않다. 자바는 매킨토시, 윈도우, 유닉스, 리눅스에서도 실행 가능하다.
  - 객체 지향적인 언어이다.
  - Java는 최초 발표될 때 인터넷 같은 네트워크를 이요한다는 점을 최대 강점으로 내세웠기 때문에 보안에
    특별히 신경을 쓴 언어이다. 보안에 강하다.
  - 쉬운 네트워킹이 가능하다.
  -  멀티 쓰레딩을 지원한다.
  - 세련된 Garbage Collector를 가지고 있다. 메모리 회수가 용이하다.
  - 세련된 예외처리기능을 가지고 있다.

* Java 객체지향 프로그래밍과 문법 기초
 " 클래스가 모여서 객체가 된다.
 - 클래스의 구조
   -- 접근자 : public, protected, private, default
     --- public : 다른 클래스가 이 클래스에 접근할 수 있게 하려면 public으로 선언해야 한다.
     --- defualt : 같은 영역에 있는 클래스들에게만 접근을 허용하게 한다.
   -- Static으로 선언된 부분이 가장 먼저 실행한다.
   -- 생성자, 클래스 이름과 같으며, 메소드와는 달리 반환형이 없다.
   -- 객체가 만들어 질 때는 static이라고 선언되지 않은 다른 변수들이 초기화 된다.
       즉 static은 클래스가 정의될 때 초기화 되고 나머지는 객체가 선언된때 초기화 된다.
   --  Final은  Const와 같다.
   -- extends 상속 클래스, super() => 생성자의 맨 처음에만 올 수 있는 코드로 Super 클래스의 인자 없는
      생성자를 호출하라는 뜻이다.
   -- 메소드 오버라이딩 : 같은 메소드가 Super 클래스에도 있고 Sub클래스에도 있는 것, 이전 메소드 대신 새로
      만들어진 메소드를 사용하게 끔 할 수 있다.
  -- 오버로딩 : 같은 이름의 메소드이지만 쓰임새에 따라 입력 인자의 형태를 다르게 줄 수 있게 하는 것


※ 객체지향을 공부 하고 싶다면, 객체 지향의 바이블이라고 불리는 Davis A. Talor의 Object Oriented Technology를 보라

 객체지향 30일 완성 보기... 앞으로, 6일차 보기
|
안드로 사이드 홈페이지의->안드로이드 개발자료->안드로이드 초보자 가이드를 참고하였다.
http://www.androidside.com/bbs/board.php?bo_table=B46&wr_id=1046&page=1

1. JDK(Java Development Kit)설치 : jdk-6u20-windows-i586.exe
  http://java.sun.com/javase/downloads/widget/jdk6.jsp
2. Android 개발도구 설치 : android-sdk_r06-windows.zip
 http://developer.android.com/sdk/index.html

4. Eclipse Android Plugin(ADT : Android Development Tool) 설치 : Eclipse -> Window -> Install New Software
   https://dl-ssl.google.com/android/eclipse

5. Eclipse Available Packages 추가 등록

 이상으로 Android 개발 환경 구축 완료.
 Hello, Android 띄우기 성공!!
|

linux-2.4.18.tar.gz 리눅스 커널 패치 http://www.kernel.org/pub/linux/kernel/v2.4/

linux-2.4.18.rmk6 리눅스 암 페치      http://www.arm.linux.org.uk/developer/v2.4/

linux-2.4.18.rmk6-swl6 리눅스 s3c2410 패치 patch-2.4.18-rmk6-swl6.gz

toolchain ftp://ftp.arm.linux.org.uk/pub/linux/arm/toolchain/


를 이용하여 시작!!!


시작에 앞서서... 유용한 터미널 명령어!!


$ pwd : 현재 경로를 보여줍니다.
$ ls -hl | sort -s : 현재 폴더의 파일(폴더)목록을 크기순으로 보여줌
% nano file.txt(또는 pic04.pdf o) : 파일 보고, 편집하는 편집기, emacs 나 vi 처럼 핫키를 외울 필요가 없어서 초보자에게 좋습니다.
% rm -rf *.bmp : 파일 제거, 디렉토리는 내부 파일까지 제거해 줍니다.
% tar -xvzf : 파일 묶어서 압축, 결과물은 .gz , cvzf : 압축 해제
% df -h: 현재 시스템의 파티션별 하드디스크 용량을 % 및 Byte 로 표시해 줍니다
-h옵션은 크기를 KB, MB, GB 으로 자동 전환해 보여줍니다.
% find / -name "*.jpg" -print : 키워드로 파일찾기, 전체를 뒤지면 시간이 꽤 걸립니다.


  • 다음은 작업 관련 명령어 입니다.
    % top -o cpu : 시피유 자원을 가장 많이 점유하고 있는 프로세스 순으로 작업 리스트를 보여줍니다. 빠져 나올땐 q
    % ps -aux : 사용자 어플리케이션(프로세스) 목록을 보여줍니다. 작업을 죽이려면 kill %pid 하면 됩니다.
    % open iTune.app aaa.mp3 : 터미날에서 GUI 어플을 이런식으로 기동 시킵니다.

  • 시스템 명령어 관련
    % help : 기본 명령어 목록을 보여줍니다. 명령어가 기억이 안날땐 요긴
    % man touch : touch 명령에 대한 도움말을 보여줍니다. info touch 해도 됩니다.
    % system_profiler : 시스템의 HW, SW 사양을 자세히 보여줍니다.

크로스 컴파일 환경 구축 ( toolchain -> SW를 개발하기 위한 환경 구축 )

-> binutils-arm-2.9.5.0, 등등이 필요하지만 미리 묵여진 크로스컴파일 을 사용한다. 위의 링크 를 사용

-> 소스가 하나로 통합된 크로스 컴파일 파일을 설치한다. 설정하는법 README.doc  일일이 설정하는법 크로스컴파일_환경구축.doc

cd /usr/local

mkdir arm

cd arm

tar lxvf cross-<version>.tar.bz2


/usr/src/에서를 통해 설치

tar -zxvf linux-2.4.18.tar.gz

gzip -dc patch-2.4.18-rmk6 | (cd linux ; patch -p1 )             ->           gzip -dc patch-2.4.18-rmk6 | (cd linux ; patch -p1)

gzip -dc patch-2.4.18-rmk6-swl | (cd linux ; patch -p1)       ->            gzip -dc patch-2.4.18-rmk6-swl.gz | (cd linux ; patch -p1)


설치 완료 후

cd linux

make menuconfi -> exit -> yes

make dep

make clean

make zImage


그런데 이때 !!! 다음과 같은 오류코드 발생


In file included from /project/kernel/linux/include/linux/sched.h:23,
                 from /project/kernel/linux/include/linux/mm.h:4,
                 from /project/kernel/linux/include/linux/slab.h:14,
                 from /project/kernel/linux/include/linux/proc_fs.h:5,
                 from init/main.c:15:
/project/kernel/linux/include/linux/smp.h:29: error: conflicting types for 'smp_ send_reschedule'
/project/kernel/linux/include/asm/smp.h:65: error: previous declaration of 'smp_ send_reschedule' was here
/project/kernel/linux/include/linux/smp.h:29: error: conflicting types for 'smp_ send_reschedule'
/project/kernel/linux/include/asm/smp.h:65: error: previous declaration of 'smp_ send_reschedule' was here
In file included from /project/kernel/linux/include/linux/unistd.h:9,
                 from init/main.c:17:
/project/kernel/linux/include/asm/unistd.h:360: warning: conflicting types for b uilt-in function '_exit'
make: *** [init/main.o] 오류 1

여기서 SMP가 뭔가 확인해 봤더니 -> Symmetric multiprocessing :  대칭형 다중처리


SMP는 운영체계와 메모리를 공유하는 여러 프로세서가 프로그램을 수행하는 것을 말한다. SMP에서는 프로세서가 메모리와 입출력 버스 및 데이터 path를 공유하며, 또한 하나의 운영체계가 모든 프로세서를 관리한다. 보통 2개부터 32개의 프로세서로 이루어지며, 어떤 시스템은 64개까지 프로세서를 공유한다.

SMP시스템은 보통 MPP시스템에 비하여 병렬 프로그래밍이 훨씬 쉽고, 프로세서간 작업 분산(workload balance)시키는 것은 훨씬 용이하지만, 확장성은 MPP에 비하여 취약하다. 또한 많은 사용자가 동시에 데이터베이스에 접근하여 일을 처리하는 OLTP 작업에서도 강점을 보인다


였다. 그래서 make menuconfig 에서 3번째 processor에서 Symmetric multiprocessing 선택 제거 했으나 그 에러 코드는 사라졌는데. 다른 에러 발생


다시 처음으로 돌아가서 다시 해본 결과 -> 위에서 arm용 패치를 잘 못 해주어서 발생했던 것임, 다시 패치후 다시 make dep~ 부터 실행


다시 에러코드 발생 -_-;;

make[2] : arm-linux-gcc 명령을 찾지 못했음


설치된 Tool 아무 폴더에서나 접근 가능하도록 Path 설정

export  PATH=/usr/local/arm/<version>/bin


error 코드

bash : make : command not found


다시시도

vi /root/.bash_profile

 내용...

#. bash_profile

#  Get the aliases and funcions

if [ -f ~/.bashrc ]; tehn

     . ~/.bashrc

 fi


 alias ls="ls -F --show-control-chars --color=auto"

LESSCHARSET=latin1


# user specific enviroment and startup programs


PATH=$PATH:/usr/local/arm/2.95.3/bin:$PATH

BASH_ENV=$HOME/.bashrc

USERNAME="root"


 export USERNAME BASH_ENV PATH


source /root/.bash_profile


한 후 make zImage !!!! 성공!!!


 선응형도 이미지 다 만드셨고... 저도 이어서 이미지까지는 만들었네요... 이제... 올려봐야지 ㅋㅋ

이 글은 스프링노트에서 작성되었습니다.

|

 


|
 유튜브에 올리면 되려나?? 궁금하신분은 연락주세요 ㅋ
|
 친구의 부탁으로 요것좀 시작해보자...
|
사용자 삽입 이미지

< 고찰 > - 문제발생과 해결
1 문제발생과 해결
1. 1 카메라의 영상 인식 범위 및 빔 프로젝트의 영사거리를 고려한 스크린의 확장
카메라의 영상 인식 범위의 한계와 빔 프로젝트의 영사거리의 제한 요소 때문에 스크린의 확장이 어렵다. 간단한 해결방안으로는 프레임을 테이블 형식이 아닌 스텐드 형식으로 하여 스크린을 세워서 배치하고 뒤에서 프로젝터를 영사하여 주고 카메라로 영상을 받는 것인데. 과제의 목표가 테이블식 멀티 터치 스크린이므로 프레임 안에서 최적의 성능을 내는 카메라 및 프로젝트를 테스트하여 선정한 후 이 제한조건에 맞추어 스크린 사이즈를 결정하였다. 800*600mm

1. 2 적외선 센서의 휘도 향상
적외선 센서의 휘도는 멀티 터치 스크린의 감도와 직결되어 있다. 휘도가 약할 경우 확연한 난반사가 일어나지 않기 때문에 영상처리 하기가 어렵고 즉 정확한 터치 점을 찾는데 어려움이 있다. 펄스 구동과 전류 증폭 적외선 센서의 추가를 통하여 해결하였다. 적외선 센서는 제조사별로 모델별로 휘도 및 각도가 천차 만별이므로 다양한 센서의 데이터 시트를 참조하고 선택하는 것이 중요하다.

1. 3 아크릴판과 손가락 접촉면 사이의 미세공기를 통한 난반사 방해
적외선의 확연한 난반사가 이루어지기 위해서는 매질차이가 없어져야 한다. 즉 아크릴판과 손가락이 정확히 접촉하여야 한다. 하지만 손가락과 아크릴 사이에는 미세공기층이 포함되게 되는데 이 공기 층으로 인하여 매질차가 생기고 난반사가 잘 일어나지 않는다 이를 해결하기 위해 바커사의 ELATOSIL M4641 렌즈 코팅용 실리콘을 사용하여 보았으나 결과가 좋지 않았다. 본 모델을 선택한 이유는 적당한 강도와 외부 요인에 대한 내성 적절한 점성, 투명도 등이 있었는데 1mm이하의 두께로 코팅 해보았으나 큰 효과를 보지 못했다. 비휘발성 오일로 아크릴 표면을 닦아 주게 되면 약간의 기름코팅층이 생겨 이를 제거 할 수 있다. 하지만 원천적인 해결 방안이 되지는 못하므로 앞으로 연계시 해결해야 할 문제점 중의 하나라 할 수 있겠다.
|
사용자 삽입 이미지

<Webcam>
일반적인 웹캠의 경우 적외선을 차단하는 적외선 차단 필터가 내장되어 있다. 본 프로젝트에서 요구하는 것은 가시광선을 차단하고 적외선을 통과시켜 줘야 함으로, 웹캠을 분해하여 적외선 차단 필터를 제거하고 가시광선 차단 필터를 삽입시켜 사용하도록 한다.
IR Filter를 제거하기 용이한 웹캠으로 저가형 Sweex WC001모델이 있으며 중고가형으로 Philips SPC900NC모델이 있다. 테스트를 통하여 최적의 웹캠을 사용한다.
   [ Sweex WC001 ]        [ SAMSUNG Alpha-cam ]
테스트 결과 카메라 별로 해상도와 상관없이 입력 받는 영상의 범위가 다른데 Sweex WC001은 그 범위가 상담히 좁다. 그래서 삼성의 Alpha-cam을 사용하였다.
|
사용자 삽입 이미지

<IR Sensor>

멀티 터치 스크린을 위한 IR Sensor 선정시 고려해야 할 점으로 휘도 및 적외선 파장이다. 대부분의 적외선 센서가 850nm~940nm의 적외선 파장을 가지고 있는데 후에 적외선 필터의 차단 주파수와 관련하여서 필터 되어지지 않도록 적당한 센서를 선정해야 한다. 휘도는 멀티터치 스크린의 감도를 결정짓는 중요한 사항이므로 휘도는 최대한 센것을 선택하여야 한다 초기 프로젝트의 IR Sensor로 2가지의 모델을 선택하였다. Vishay사의 TSAL6200과 AUK Semiconductor사의 SI-5315. 각각 특성은 Vishay사의 TSAL6200같은 경우 210mW/sr의 휘도와 +/-17도의 각도, 940nm의 적외선 파장의 특징을 보이고 있으며 국내에서 쉽게 구할 수 있는 AUK Semiconductor사의 SI-5315는 145mW/sr의 휘도와 +/-20도의 각도, 950nm의 적외선 파장의 특징을 보이고 있다. 스크린의 가로 사이즈가 800mm인데 1.5cm마다 적외선 센서를 하나씩 배치하여 사각지대가 발생하지 않고 정확한 포인트를 추출할 수 있도록 110개 정도의 IR Sensor를 사용하였다. 처음에는 한쪽면에서만 IR_Sensor를 투사하였으나 거리가 길어짐에 휘도가 약해짐을 고려하여 양쪽 가로면에서 IR_Sensor를 투사하였다.

< Power 및 IR_Sensor회로 >
IR Sensor의 전원 공급으로 컴퓨터의 12V Power Supply를 사용하려 계획하였다. 12V의 Power Supply에 적절한 저항을 연결한 회로를 구성하여 개별적인 IR Sensor 적당한 전류와 전압이 바이어스 되도록 한다.
사용자 삽입 이미지
테스트 결과 감도가 둔하여 펄스 구동을 하기로 결정하였다.
 IR Sensor는 흐르는 전류에 따라서 IR Sensor의 휘도가 바뀌게 되는데 지속적으로 흐르는 허용 전류는 낮은 반면 짧은 시간 동안 주기적으로 On/Off 시켜주는 Pulse구동의 경우 허용 전류가 10배정도 높다. 허용전류를 초과하면 IR_Sensor는 파손되므로 주의하여야 한다.
 Pulse구동을 하기 위하여 DSP2808을 사용하였다. Atmega 128이나 로직을 통하여 구현하여도 무관하나 손에 익숙한 DSP를 사용하였다. DSP를 이용하여 Pulse구동하여 주고 ULN2803 Darlington Array IC를 사용하여 흐를 수 있는 전류를 증폭하여 주었다.
 테스트 결과 상당한 감도 향상을 얻을 수 있었다. 19V전원을 사용하였고 110개의 IR 센서 구동에 1A정도의 전류가 사용되었다.
사용자 삽입 이미지

[Pulse 구동 소스코드] - 간단하게 타이머 인터럽트를 사용하여 구현하였다.
타이머 인터럽트 주기는 20Us이며 20Us의 온타임에 180Us의 오프타임을 주어 1:9의 Pulse 구동을 하였다. 기타 레지스터 설정을 제외한 센서 인터럽트 소스 코드는 다음과 같다.
|
사용자 삽입 이미지
< Screen >
아크릴은 전반사를 잘 일으키는 매질 중에 하나이다 이러한 아크릴은 두께가 최소 8mm이상에서 전반사를 잘 일으키게 된다. 본 프로젝트를 위해서 800*600*10mm의 아크릴 판을 사용하여 Screen을 제작하도록 계획하였다. 스크린의 비율은 4:3비율이다. 여기서 스크린의 사이즈는 빔프로젝터를 통하여 Diffuser에 영상을 맺히게 할 때 사이즈의 크기가 클 수록 그 영사 거리도 길어지므로 적절하게 선택하여야 한다.

< Diffuser >
아크릴로 제작된 스크린의 표면에 프로젝터의 영상을 맺게 하기 위해 아크릴 판 아래에 기름종이나 후면영사용 스크린을 사용하여 구현할 수 있다. 이 Diffuser는 화면의 해상도 및 선명도에 영향을 많이 주게 되며 난반사되어 지는 적외선에도 영향을 주게 된다. Rosco Gray사의 후면영사용 스크린의 경우 상용제품 답게 선명한 화면을 보여주지만 1M*1M 사이즈에 20만원 초반의 가격대를 가지고 있으므로 기름종이로 대체하였다. 기름종이의 두께가 두꺼울 수록 난반사 되어지는 빛이 산란되어 지므로 적당한 두께의 기름종이를 사용하여야 한다.
|

변화가필요해...'s Blog is powered by Daum & tistory