1 / 43

J2ME 의 이해

J2ME 의 이해. MIDlet (1/15). 개념 정의 무선상에서 배포되고 MIDP 호환 장비에서 실행되는 애플리케이션 MID(Mobile Information Device) 와 Applet 의 합성어 JAR 파일의 형태로 배포. MIDlet (2/15). MIDlet 을 위한 구성 요소 JAM(Java Application Manager) 미들릿 ( MIDlet ) 을 설치 , 실행 , 제거하는 기능을 수행하기 위해 만들어진 일종의 관리 소프트웨어 미들릿 ( MIDlet ) Suite

Download Presentation

J2ME 의 이해

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. J2ME의 이해

  2. MIDlet (1/15) • 개념 정의 • 무선상에서 배포되고 MIDP호환 장비에서 실행되는 애플리케이션 • MID(Mobile Information Device)와 Applet의 합성어 • JAR 파일의 형태로 배포

  3. MIDlet (2/15) • MIDlet을 위한 구성 요소 • JAM(Java Application Manager) • 미들릿(MIDlet)을 설치, 실행, 제거하는 기능을 수행하기 위해 만들어진 일종의 관리 소프트웨어 • 미들릿(MIDlet) Suite • 미들릿 어플리케이션의 모든 클래스 파일들을 JAR로 패키지화 • JAR파일은 하나 이상의 미들릿 어플리케이션을 포함 • 아이콘이나 이미지등과 같은 MIDlet이 사용하는 리소스 파일들을 포함

  4. MIDlet (3/15) • Manifest • JAR파일의 내용, 이름, 버전, 벤더 등의 정보를 포함 • 미들릿 Suite의 JAR파일 내에 포함 • JAD • JAM에 JAR파일의 사전 정보를 제공 • J2SE기반의 JAR파일과 MIDP 슈트를 포함한 JAR파일을 구분 • JAR파일을 다운 받기 전 JAD파일을 우선 다운 받아 검사

  5. MIDlet (4/15) • 개발 환경 • jdk1.4 혹은 jdk1.3 설치 • Midp-fcs 2.0 설치 • 서버의 mime.type설정

  6. MIDlet (5/15) • 개발과정 • 미들릿 소스코드 생성 • 소스 컴파일 • 사전검증기를 통한 사전검증 • Manifest File 생성 • JAR(Java ARchive) 파일 생성 • JAD(Java Application Descriptor) 파일 생성 • 테스트 및 웹사이트를 통한 배포

  7. MIDlet (6/15) • MIDlet Life Cycle default constructor Virtual methods

  8. MIDlet (7/15) • HelloMIDlet.java import javax.microedition.midlet.*; import javax.microedition.lcdui.*; public class HelloMIDlet extends MIDlet implements CommandListener { // The exit command private Display display; // The display for this MIDlet public HelloMIDlet() { display = Display.getDisplay(this); } public void startApp() { } public void pauseApp() { } public void destroyApp() { } }

  9. MIDlet (8/15) • -g:none • class파일 생성 시, Debugging 정보를 포함시키지 않음 • -bootclasspath <path> • bootstrap 클래스들을 override할 수 있도록 해당 클래스들의 경로를 지정 • MIDlet 컴파일 # javac -g:none -bootclasspath /working/J2ME/midp2.0fcs/classes/ HelloMIDlet.java # # ls -al HelloMIDlet.* -rw-r--r-- 1 root root 1535 8월 3 22:59 HelloMIDlet.class -rw-r--r-- 1 root root 977 8월 3 22:56 HelloMIDlet.java

  10. MIDlet (9/15) • Manifest File 생성 # vi HelloMIDlet.mf # MIDlet-Name: HelloMIDlet MIDlet-Vendor: ILAB MIDlet-Version: 2.0 MicroEdition-Configuration: CLDC-1.0 MicroEdition-Profile: MIDP-2.0 # # ls -al HelloMIDlet.* -rw-r--r-- 1 root root 1569 8월 3 23:08 HelloMIDlet.class -rw-r--r-- 1 root root 977 8월 3 22:56 HelloMIDlet.java -rw-r--r-- 1 root root 137 8월 3 23:10 HelloMIDlet.mf

  11. MIDlet (10/15) • JAR 파일 생성 # jar -cmf HelloMIDlet.mf HelloMIDlet.jar HelloMIDlet.class # # ls -al HelloMIDlet.* -rw-r--r-- 1 root root 1569 8월 3 23:08 HelloMIDlet.class -rw-r--r-- 1 root root 1196 8월 4 23:15 HelloMIDlet.jar -rw-r--r-- 1 root root 977 8월 3 22:56 HelloMIDlet.java -rw-r--r-- 1 root root 137 8월 3 23:10 HelloMIDlet.mf jar <options> manifest_file jar_file class_file <additional , class_file png_file...>

  12. MIDlet (11/15) • -classpath <path> • bootstrap 클래스들을 override할 수 있도록 해당 클래스들의 경로를 지정 <컴파일과 동일 경로> • -d ./ • 사전 검증 후 생성되는 output들의 저장 경로(여기서는 소스코드와 동일한 경로를 선택함 : ./) • MIDlet 사전검증 # ls -al HelloMIDlet.* -rw-r--r-- 1 root root 1535 8월 3 22:59 HelloMIDlet.class -rw-r--r-- 1 root root 977 8월 3 22:56 HelloMIDlet.java # ../../build/qplus/bin/preverify -classpath /working/J2ME/midp2.0fcs/mid_classes/ -d ./ HelloMIDlet # ls -al HelloMIDlet.* -rw-r--r-- 1 root root 1569 8월 3 23:08 HelloMIDlet.class -rw-r--r-- 1 root root 977 8월 3 22:56 HelloMIDlet.java

  13. MIDlet (12/15) • JAD 파일 생성 # vi HelloMIDlet.jad MIDlet-1: HelloMIDlet, , HelloMIDlet MIDlet-Jar-Size: 1196 MIDlet-Jar-URL: http://localhost/HelloMIDlet.jar MIDlet-Name: HelloMIDlet2 MIDlet-Vendor: ILAB MIDlet-Version: 2.0 MicroEdition-Configuration: CLDC-1.0 MicroEdition-Profile: MIDP-2.0 # # ls -al HelloMIDlet.* -rw-r--r-- 1 root root 1569 8월 3 23:08 HelloMIDlet.class -rw-r--r-- 1 root root 257 8월 4 23:25 HelloMIDlet.jad -rw-r--r-- 1 root root 1196 8월 4 23:15 HelloMIDlet.jar -rw-r--r-- 1 root root 977 8월 3 22:56 HelloMIDlet.java -rw-r--r-- 1 root root 137 8월 3 23:10 HelloMIDlet.mf

  14. MIDlet (13/15) • 왭 사이트를 통한 배포 • 모바일 디바이스에서 설치 및 실행 # cp HelloMIDlet.jad /var/www/html/ # cp HelloMIDlet.jar /var/www/html/ EMPOS# ./midp -install http://localhost/HelloMIDlet.jad EMPOS# ./midp –list [1] Name: HelloMIDlet Vendor: ILAB Version: 2.0 Storage name: #I#L#A#B_#Hello#MIDlet_ Size: 2K Installed From: http://192.168.123.200/HelloMIDlet.jad MIDlets: HelloMIDlet EMPOS# ./midp –run 1

  15. MIDlet (14/15) • J2ME Wireless Toolkit • MIDP애플리케이션 개발을 위한 통합 개발 환경 • 개발 과정 단순화 및 JAD파일 자동 생성 프로젝트 생성 Jad파일 생성 메뉴

  16. MIDlet (15/15) • Demo Project빌드 및 실행

  17. Host 실습환경 구축

  18. 개발 환경 구축 Serial LAN Jtag

  19. 개발 환경 구축 – Host PC • Linux 설치 • minicom : serial communication program • tftpd : trivial file transfer protocol server • bootpd : Internet boot protocol server • Tool – chain 설치 • Cross compiler • 호스트 컴퓨터와 타겟 보드에서 사용하는 프로세서가 다를 때 타겟 보드에 실행될 수 있도록 작업한 프로그램을 컴파일 해 주는 프로그램 # cp /mnt/cdrom/EMPOS2/Tools/toolchain/cross-tools.tgz /usr # tar zxvf /usr/cross-tools.tgz # vi ~/.bash_profile export PATH=/usr/cross-tools/bin:$PATH # source ~/.bash_profile

  20. 개발 환경 구축 – Host PC • 원활한 컴파일을 위해 gcc-2.95.3 설치 • # cp /mnt/cdrom/EMPOS2/Tools/gcc*/gcc-2.95.3.tar.gz /usr/local • # cd /usr/local; tar zxvf gcc-2.95.3.tar.gz; mv gcc-2.95.3 gcc2953 • # cd ./gcc2953; ./configure ––prefix=/usr/local/gcc-2.95.3 • # make; make install • # vi ~/.bash_profile; source ~/.bash_profile • QtX11 설치 • # cp /mnt/cdrom/EMPOS2/Tools/qt/qtx/qt-x11-*.tar.gz /working • # cd /working; tar zxvf qt-x11-free-3.3.3.tar.gz • # mv qt-x11-free-3.3.3 qtx-3.3.3; cd ./qtx-3.3.3 • # export QTDIR=/working/qtx-3.3.3 • # export LD_LIBRARY_PATH=$QTDIR/lib:$LD_LIBRARY_PATH • #./configure; make export PATH=/usr/local/gcc-2.95.3/bin:$PATH

  21. 개발 환경 구축 – Host PC • Qt Virtual FrameBuffer 설치 • # cd $QTDIR/tools/qvfb • # make • # vi ~/.bash_profile; source ~/.bash_profile • Qt Embedded 설치-x86용 • # cp /mnt/cdrom/EMPOS2/Tools/qte/qt-*-2.3.2.tar.gz /working • # cd /working; tar zxvf qt-embedded-2.3.2.tar.gz • # cp -R qt-2.3.2 qte-x86-2.3.2 • # vi ~/.bash_profile; source ~/.bash_profile • # cd qte-x86-2.3.2; ./configure; make export PATH=$QTDIR/tools/qvfb:$PATH export QTDIR=/usr/qte-x86-2.3.2export LD_LIBRARY_PATH=$QTDIR/lib:$LD_LIBRARY_PATH

  22. 개발 환경 구축 – Host PC • Qt Embedded 설치-ARM용 • # cd /working; mv qt-2.3.2 qte-arm-2.3.2 • # cd ./qte-arm-2.3.2 • # vi ~/.bash_profile; source ~/.bash_profile • #./configure –xplatform linux-arm-g++; make • Qt-Embedded Test • # qvfb –width 640 –height 480 –depth 16 & • # cd $QTDIR • # cd examples/launcher/ • # ./launcher -qws src 및 configs 수정은 매뉴얼 참조 export QTDIR=/usr/qte-arm-2.3.2export LD_LIBRARY_PATH=$QTDIR/lib:$LD_LIBRARY_PATH

  23. 개발 환경 구축 – Host PC • Qt-Embedded Test 실행 결과

  24. 1. 디바이스 선택 2. 속도, 데이터비트, 정지비트 설정 3. 흐름제어 없음 Target board와의 통신환경 구축–Host PC • 기타 필요한 프로그램 설치 • /mnt/cdrom/EMPOS2/Tools/* • minicom : serial communication program, target board monitoring program • tftp : trivial file transfer protocol server • bootp : internet boot protocol server • nfsd : network file system server • 환경 설정 • # minicom –s => serial port에 대한 설정

  25. Target board와의 통신환경 구축–Host PC • 환경 설정 • tftp(/etc/xinetd.d/tftp) bootp(/etc/xinetd.d/bootp) • bootp/etc/bootptab • /etc/hosts .default:\ :hd=/tftpboot:bf=null:\ :sm=255.255.255.0 empos:ht=1:ha=0x000000000000:tc=.default hd : bootfile home directory bf : bootfile sm : host subnet mask ht :host hardware type ha : host hardware address tc : table continuation (template) 192.168.123.201 empos

  26. Target board와의 통신환경 구축–Host PC • 환경 설정 • nfs : network file system • mkdir /nfs_resource; chmod 777 /nfs_resource • vi /etc/exports /nfs_resource 192.168.123.200 (rw, no_root_squash)

  27. Target board와의 통신환경 구축–Host PC • 서버 설정 mime.types 설정 • /etc/mime.types에 아래의 두 줄을 추가 application/java-archive jar text/vnd.sun.j2me.app-descriptor jad

  28. Target Board 실습환경 구축

  29. 타켓 보드의 기본 소프트웨어 • 부트로더 • 타켓 보드 부팅 시 하드웨어를 초기화하고, 커널을 램에 올린 후 실행권한을 커널로 전달하는 프로그램 • 리눅스 커널 • 타켓보드의 시스템 구동에 필요한 환경을 만들고, 타켓 보드에서 실행되는 프로그램을 관리하는 소프트웨어 • 파일 시스템 • 디스크의 섹터와 트랙, 실린더 등을 논리적으로 사용하기 위하여 블록 단위로 읽고 쓰는 메커니즘 • 디바이스 드라이버 • 주변 하드웨어를 제어하기 위한 프로그램 • 응용 프로그램

  30. 부트로더 역할 • 타겟 보드 부팅 시 하드웨어를 초기화 하고, 커널을램에 올린 후 실행권한을 커널로 전달하는 프로그램 • 부트로더의 역할 • 하드웨어 초기화 • Memory Setting, CPU Clock setting, GPIO setting,Serian setting, MAC address 획득 및 Ethernet port setting • Flash 에서 RAM으로 Memory 복사 • Kernel image copy, ramdisk image copy, bootloader copy • Kernel booting • Command mode 제공 • 포팅의 편의를 위한 Debug 모드 제공

  31. 부트로더 명령어 • boot : 램 상에 존재하는 커널을 부팅한다 • reset : 롬 상에 존재하는 부트로더를 재시작 한다 • bootp : bootp를 통해 호스트로부터 IP를 할당 받는다 • setip : 호스트와 타겟 보드의 IP를 설정한다 • macwrite : Primary/Secondary Ethernet의 MAC 주소를 설정한다. • tftp: tftp를 통한 데이터를 전송 받는다. • download : 시리얼을 통한 데이터를 전송 받는다 • read : 특정 메모리 위치의 값을 읽어온다 • write : 특정 메모리 위치의 값을 변경한다 • flash : 전송 받은 데이트를 플래쉬에 저장한다 • erase : 플래쉬에 저장되어 있는 데이터를 삭제한다. • status : 메모리맵/ 레지스터/ 이더넷 설정 등을 출력한다. • help : 도움말을 출력한다. • test : 사용자 테스트 함수를 제공한다

  32. 부트로더 컴파일 • Target board용 bootloader compile and porting • compile and write object file into target board with JTAG • Target board에 전원이 들어오면 target board에 대한 초기화 작업을 수행하고(POST), 잠시 사용자의 입력을 기다리게 되며, 사용자의 입력이 없을 경우 Ramdisk에 저장된 커널을 읽어 메모리에 탑재한 후 실행 권한을 커널에게로 전달 # mkdir /working; cd /working # cp /mnt/cdrom/EMPOS2/Source/bootloader/empos_boot.tar.gz # tar zxvf empos_boot.tar.gz # cd ./empos_boot; make # /mnt/cdrom/EMPOS2/Tools/jtag/Jflash-Xscale /working/empos_boot/empos_boot => bootloader 포팅

  33. 부트로더 포팅 • Bootloader porting • JTAG을 이용해 porting • 부트로더에서 포팅 # cp /mnt/cdrom/EMPOS2/Tools/Jflash-Xscale /usr/bin # ./Jflash-Xscale empos_boot EMPOS# tftp empos_boot booter

  34. 커널 컴파일 (1/2) • Target Board용 Kernel compile • cp /mnt/cdrom/EMPOS2/Source/kernel/SRC/* /working • cd /working; tar zxvf linux-2.4.19.tar.gz • cd ./linux-2.4.19 ; zcat ../patch-2.4.19-rmk4.gz | patch –p1 => ARM patch • zcat ../diff-2.4.19-rmk4-pxa2.gz | patch –p1 => Xscale patch • zcat ../diff-2.4.19-rmk4-pxa2-empx1.gz | patch –p1 => EMPOS-II board patch • make empos_config • make oldconfig; • make dep; • make clean; • make zImage

  35. 커널 컴파일 (2/2) • 커널 소스 확보 • http://www.kernel.org/pub/linux/kernel/v2.4/ • linux-2.4.19 • ARM 패치 적용 • ftp://ftp.arm.uk.linux.org/pub/linux/arm/kernel/v2.4/ • patch-2.4.19-rm k4.gz • Xscale 패치 적용 • ftp://ftp.arm.uk.linux.org/pub/linux/arm/people/nico/v2.4/ • Diff-2.4.19-rmk4-pxa2.gz • EMPOS-II 보드 패치 적용 • Diff-2.4.19-rmk4-pxa2-empx1-20030916.gz

  36. 커널 포팅 (1/2) • Kernel porting • Kernel compile with patch • # cp /working/linux-2.4.19/arch/arm/boot/zImage /tftpboot • # minicom================================================================== Hanback Electronics Embedded Linux System(HBE-EMPOS) Welcome to meet you !==================================================================[root@EMPOS root]$ This is EMPOS_boot version 0.1 This is free software, and undered GNU GPL license Primary LAN91C111 is OK.! Copy kernel from ROM to RAM ....Copy ramdisk from ROM to RAM ........................Autoboot in progress,press any key to stop.

  37. 커널 포팅 (2/2) • Kernel porting –계속 * Type 'help' to get a list of commands * EMPOS # setip 192.168.123.200 192.168.123.201 Host (server) IP : 192.168.123.200 Client (target) IP : 192.168.123.201 EMPOS # tftp zImage kernel Tftp start... Host (server) IP : 192.168.123.200 Client (target) IP : 192.168.123.201 Loading Filename : zImage Save Address : 0xA00C0000 Loading start... 0x000EAAA4 (961188) bytes received. tftp done. EMPOS # flash kernel Saving kernel to flash... Erased block range : 0x000C0000 ~ 0x001BFFFF Current block address : 0x00180000 Done. Write to flash... Current block address : 0x001C0000 Done. EMPOS # boot

  38. 기타 • 램 디스크 • 리눅스 파일 시스템 • JFFS 파일 시스템

  39. 램 디스크 • 별도의 물리적 저장 장치가 없이 메모리의 한 부분을 할당하여 컴퓨터의 하드 디스크처럼 사용 가능 • 램디스크 생성 • 램디스크 수정

  40. /root bin boot dev etc home lib mnt proc root sbin tmp usr var user1 user2 lib local sbin src include 리눅스 파일 시스템 (1/2) • 디스크의 섹터와 트랙, 실린더 등을 논리적으로 사용하기 위하여 블록 단위로 읽고 쓰는 메커니즘 • 리눅스 파일 시스템의 구조

  41. 리눅스 파일 시스템 (2/2) • / : 루트 디렉토리 • /boot : 부팅과정에 필요한 모든 구성 요소들이 포함 • /bin : 실행 파일이 포함 • /dev : 디바이스 드라이버 포함 • /etc : 리눅스 운영에 필요한 설정 파일 포함 • /home : 사용자의 홈 디렉토리 • /lib : 공유 라이브러리 모듈 저장 • /root : 시스템 관리자인 root의 홈 디렉토리 • /sbin : 시스템 관리를 위한 실행 유틸리티 저장 • /usr : 공유 가능한 대부분의 프로그램 설치

  42. JFFS 파일 시스템 • 플래쉬 메모리를 이용한 전원/파손 등에 안전한 파일 시스템 • JFFS 이미지 생성 • -o : 생성 파일 이름 • -e : flash erase 블록 사이즈 • -r : 이미지 생성을 원하는 대상 디렉토리 지정

  43. Target board 실행 환경 구축 • ARM Qt/E Library 설치 • NFS 등을 통해 설치 • Ramdisk 등에 저장 Empos# mount –t nfs 192.168.123.187:/nfs_resource /mnt Empos# export QTDIR=/mnt/qte-arm Empos# export LD_LIBRARY_PATH=$QTDIR/lib:$LD_LIBRARY_PATH Empos# mount –t nfs 192.168.123.187:/nfs_resource /mnt Empos# cp –fr /mnt/qte-arm/lib /jffs Empos# export QTDIR=/jffs Empos# export LD_LIBRARY_PATH=$QTDIR/lib:$LD_LIBRARY_PATH

More Related