2012년 10월 30일 화요일

메모장

진주-커널:
tftp c0008000 ygpark/zImage ; nand erase 0x40000 0x300000 ; nand write.jffs2 0xc0008000 0x40000 0x300000 ; reset

진주-부트:
tftp c0008000 ygpark/u-boot.bin ; nand erase 0x00000000 0x00040000 ; nand write 0xc0008000 0x00000000 0x00040000 ; reset

Nexus7 시스템 정보

mount


$ mount
rootfs / rootfs ro,relatime 0 0
tmpfs /dev tmpfs rw,nosuid,relatime,mode=755 0 0
devpts /dev/pts devpts rw,relatime,mode=600 0 0
proc /proc proc rw,relatime 0 0
sysfs /sys sysfs rw,relatime 0 0
debugfs /sys/kernel/debug debugfs rw,relatime 0 0
none /acct cgroup rw,relatime,cpuacct 0 0
tmpfs /mnt/asec tmpfs rw,relatime,mode=755,gid=1000 0 0
tmpfs /mnt/obb tmpfs rw,relatime,mode=755,gid=1000 0 0
none /dev/cpuctl cgroup rw,relatime,cpu 0 0
/dev/block/platform/sdhci-tegra.3/by-name/APP /system ext4 ro,relatime,user_xattr,acl,barrier=1,data=ordered 0 0
/dev/block/platform/sdhci-tegra.3/by-name/CAC /cache ext4 rw,nosuid,nodev,noatime,errors=panic,user_xattr,acl,barrier=1,nomblk_io_submit,data=ordered,discard 0 0
/dev/block/platform/sdhci-tegra.3/by-name/UDA /data ext4 rw,nosuid,nodev,noatime,errors=panic,user_xattr,acl,barrier=1,nomblk_io_submit,data=ordered,discard 0 0
/dev/fuse /storage/sdcard0 fuse rw,nosuid,nodev,relatime,user_id=1023,group_id=1023,default_permissions,allow_other 0 0

/proc/version


$ cat /proc/version
Linux version 3.1.10-g009b6d1 (android-build@vpbs1.mtv.corp.google.com) (gcc version 4.6.x-google 20120106 (prerelease) (GCC) ) #1 SMP PREEMPT Wed Sep 26 12:53:01 PDT 2012


/proc/cpuinfo


$ cat /proc/cpuinfo
Processor       : ARMv7 Processor rev 9 (v7l)
processor       : 0
BogoMIPS        : 1993.93

processor       : 1
BogoMIPS        : 1993.93

processor       : 2
BogoMIPS        : 1993.93

processor       : 3
BogoMIPS        : 1993.93

Features        : swp half thumb fastmult vfp edsp neon vfpv3 tls
CPU implementer : 0x41
CPU architecture: 7
CPU variant     : 0x2
CPU part        : 0xc09
CPU revision    : 9

Hardware        : grouper
Revision        : 0000
Serial          : 0f410a0001440200

/proc/partitions


$ cat /proc/partitions
major minor  #blocks  name

 179        0    7467008 mmcblk0
 179        1      12288 mmcblk0p1
 179        2       8192 mmcblk0p2
 179        3     665600 mmcblk0p3
 179        4     453632 mmcblk0p4
 179        5        512 mmcblk0p5
 179        6      10240 mmcblk0p6
 179        7       5120 mmcblk0p7
 179        8        512 mmcblk0p8
 179        9    6302720 mmcblk0p9
 179       32       2048 mmcblk0boot1
 179       16       2048 mmcblk0boot0


Nexus7 공장초기화 이미지 분석

서문


작성자: 박영기
작성일: 2012-10-30


필자는 Nexus7를 분석하고 기록에 남기기 위하여 이 글을 작성하였습니다.
예고없이 변경될 수 있음을 알려드립니다.
삭제 포함.


시작하기전에...


Nexus7을 포함한 안드로이드 기기의 공장 초기화 파일들에는
boot.img
system.img
recovery.img
userdata.img 같은 파일들이 있다.

이것은 안드로이드를 빌드하면 만들어진다.

각각의 파일들은 어떤 기능을 하는지.
그리고 어떻게 뜯어고치는지 알아보겠다.



boot.img


boot.img

참조



2012년 10월 29일 월요일

Nexus7 공장 초기화


서문 


작성자: 박영기
작성일: 2012-10-30


필자는 Nexus7를 분석하고 기록에 남기기 위하여 이 글을 작성하였습니다.
예고없이 변경될 수 있음을 알려드립니다.
삭제 포함.


부트로더 언락


Nexus7은 처음에 부트로더가 잠겨있다.
그래서 부트로더를 푸는 작업이 필요하다.

> fastboot oem unlock

실행하기전에 장비를 fastboot 모드로 부팅을 해야하는데
Nexus7은 전원키 + 볼륨다운키를 누르고 잠시 기다리면 된다.

부트로더 언락시 보증을 받을 수 없다는 메시지가 나온다.
방향키로 Yes/No 선택하고 전원버튼으로 선택한다.

> fastboot oem lock

부트로더를 다시 잠글수도 있다.


공장 초기화

진행하기에 앞서 부트로더 언락이 되어야 진행이 가능하다.
언락을 하고 왔으면 계속 진행바란다.

참조의 Factory Images for Nexus Devices 링크에서 공장 초기화 파일을 받을 수 있다.
용량은 약 260MB정도.

압축파일 속에는
bootloader-grouper-3.41.img 그리고
zip으로 묶인 이미지파일들 (boot.img, recovery.img, system.img, userdata.img)
배치파일들이 들어있다.

공장초기화 방법은
부트로더 언락시 한 것 처럼 장비를 fastboot모드로 부팅시킨 다음
flash-all.bat(윈도우용. 리눅스에서는 flash-all.sh)를 실행한다.

이제 잠시 기다리면 재부팅한다.

사용자 데이터 포함 모든 데이터가 지워지니 주의바람.


참조




2012년 10월 22일 월요일

우분투 10.04, 10.10 에 sun-java6-jdk 설치하기


우분투 메인 저장소에서 sun-java-jdk가 더이상 지원되지 않는다.
Android 개발하려면 sun-java-jdk가 필요한데...
여간 귀찮은 일이 아닐 수 없다.

그래서 우분투 10.04와 10.10 이상에서 sun-java-jdk를 설치하는 방법을 알려주겠다.

android.com에서도 sun-java6-jdk를 설치하는 방법을 설명하고있는데
난 안되더라.

이렇게 하면 성공할꺼다.
add-apt-repository ppa:sun-java-community-team/sun-java6
apt-get update
apt-get install sun-java6-jdk
update-java-alternatives -s java-6-sun

출처


2012년 10월 19일 금요일

안드로이드 오픈소스 프로젝트 (한글번역) - 목차


이 문서는...

이 문서는 source.android.com의 글을 번역한 것입니다.
(원문: http://source.android.com/source/index.html)

작성자: 박영기
작성일: 2012-10-19

시작하기

  • 빌드환경 초기화하기
  • 소스 다운로드하기
  • 빌드하고 실행하기
  • 디바이스를 위한 빌드하기
  • 커널 빌드하기
  • 알려진 문제점


2012년 10월 18일 목요일

안드로이드 오픈소스 프로젝트 (한글번역) - 커널 빌드하기

이 문서는...


이 문서는 source.android.com의 글을 번역한 것입니다.
(원문: http://source.android.com/source/building-kernels.html)

작성자: 박영기
작성일: 2012-10-19

커널 빌드하기

커널에만 관심이 있다면, 커널 소스를 다운로드하고 컴파일하는 가이드로 이 문서가 도움이 될 것이다.

아래의 설명들은 AOSP(Android Open Source Project)의 모든 소스코드를 다운로드하지 않는것을 전제로 한다. 만약 AOSP의 모든 소스코드를 다운로드했다면, 실제 커널 소스를 다운로드하는 것을 제외한 git clone 단계를 건너뛰어야 한다.

여기서는 Pandaboard kernel을 사용한다.

빌드를 위한 커널 빌드 알아내기

당신은 device 프로젝트에서 kernel의 git log를 보고싶을 것이다. device 프로젝트는 device/<vendor>/<name> 형식으로 되어있다.

*주: device/ti/panda 의 정확한 용도는 현재 알 수 없지만, 그 속에 빌드된 kernel 이미지가 존재한다. 여기서 설명하고자하는 바는, kernel 이미지 파일의 커밋로그에서 실제 커널 저장소(kernel/omap.git 등)상의 SHA-1 커밋번호를 알아내자는 것이다.
$ git clone https://android.googlesource.com/device/ti/panda
$ cd panda
$ git log kernel

로그에는 커널 프로젝트를 위하여 SHA1 커밋을 포함해야한다. 다음 단계에서 사용할 수 있도록 이 값을 메모해 두자.

소스 다운로드하기

당신이 원하는 커널은 다음과 의존관계에 있다.
$ git clone https://android.googlesource.com/kernel/common.git
$ git clone https://android.googlesource.com/kernel/exynos.git
$ git clone https://android.googlesource.com/kernel/goldfish.git
$ git clone https://android.googlesource.com/kernel/msm.git
$ git clone https://android.googlesource.com/kernel/omap.git
$ git clone https://android.googlesource.com/kernel/samsung.git
$ git clone https://android.googlesource.com/kernel/tegra.git
  • goldfish 프로젝트는 에뮬레이트된 플랫폼(emulated platforms)을 위한 kernel 소스를 포함하고있다.
  • msn 프로젝트는 ADP1, ADP2, Nexus One 를 위한 것이다. 그리고 퀄컴 MSM 칩셋을 위한 작업의 시작점으로 사용될 수 있다.
  • omap 프로젝트는 PandaBoard, Galaxy Nexus 를 위한 것이다. 그리고 TI OMAP 칩셋을 위한 작업의 시작점으로 사용될 수 있다. 
  • samsung 프로젝트는 Nexus S 를 위한 것이다. 그리고 Samsung Hummingbird 칩셋을 위한 작업의 시작점으로 사용될 수 있다.
  • tegra 프로젝트는 Xoom, Nexus 7을 위한 것이다. 그리고 NVIDIA Tegra 칩셋을 위한 작업의 시작점으로 사용될 수 있다. 
  • exynos 프로젝트는 Samsung Exynos 칩셋을 위한 작업의 시작점으로 사용될 수 있다.

미리 컴파일된 gcc 다운받기

prebuilt toolchain이 경로($PATH)에 있는 것을 확인한다.
$ git clone https://android.googlesource.com/platform/prebuilt
$ export PATH=$(pwd)/prebuilt/linux-x86/toolchain/arm-eabi-4.4.3/bin:$PATH

컴파일

예를들어 우리는 다음 명령을 사용하여 panda 커널을 빌드한다.
$ export ARCH=arm
$ export SUBARCH=arm
$ export CROSS_COMPILE=arm-eabi-
$ cd omap
$ git checkout 
$ make panda_defconfig
$ make
tuna 커널을 빌드하려면, 위의 모든 명령에서 "panda"를 "tuna"로 바꾸어 실행한다.
  • maguro와 toro를 위한 커널은 device/samsung/tuna/kernel 입니다.
  • crespo와 crespo4g를 위한 커널은 device/samsung/crespo/kernel 입니다.
  • stingray와 wingray를 위한 커널은 device/moto/wingray/kernel 입니다.
이미지는 arch/arm/boot/zImage 에 출력됩니다. 이 예제의 경우 zImage를  device/<vendor>/<name>/kernel 혹은 device/ti/panda/kernel 에 복사할 수 있습니다.



2012년 10월 14일 일요일

CodeVisor 설정: Interface


프로그램 재설치를 대비해서
JnD Tech사의 CVD 프로그램의 설정값을 기록한다.
디바이스 이름은 코드바이저다(CodeVisor).


        메뉴 ->
             Config ->
                  Interface 창에서 아래 세 값을 체크한다.

        [v] TRST
        [v] RTCK
        [v] DACR
   

참고

  • SysReset은 필요없다.
  • AP: S3C6410
  • 버전: V2.30 (CodeViser_V2.30_2010_1014.exe)


2012년 10월 11일 목요일

테라텀(Tera Term). 로그에 타임스탬프을 출력하자.

테라텀 홈페이지: http://ttssh2.sourceforge.jp/

터미널에 로그를 찍는건
개발자라면 누구나 한번 해봤겠지
아님 말고 -_-;

로그 메시지에 타임스탬프(시간출력)가
필요한 경우가 가끔 생긴다.
언제 무슨일이 생기는지 알아야 하니깐

타임스탬프를 지원하는 프로그램은
의외로 몇 개 없다.
그 중 테라텀(Tera Term)을 추천하는 바이다.

타임스탬프를 사용하려면
설치하고나서 설정을 하나 바꿔주면 된다.
설치경로를 찾아가서 TERATERM.INI 파일을 열고
변수 LogTimestamp의 값을 on으로 바꿔주면
끝- 아래처럼


; timestamp flag for Log (on/off)
LogTimestamp=on


그리고 이건 덤
로그 저장할 때
파일이름을 시간으로
겹치지 않게 설정한다.

[%h]%Y-%m-%d-%p_%H_%M_%S.log



2012년 10월 9일 화요일

이맥스(emcas)를 배우고 싶은 이유

필자는 윈도우에서는 Visual Studio를 쓰고 리눅스에서는 VI를 쓴다.
가끔 eclipse도 쓰고 업무상 필요하면 Qt Creator도 쓴다.

그외 툴들을 포함해서 단축키를 외우기엔
너무 귀찮다.
아오~ 스트레스~

아니 그보다 주력으로 쓰는
VI에디터의 편집속도가
Visual Studio만큼 나오지 않는다.

VI에디터는
분석용으로는 나름 쓸만한데
작성용으로는 불합격이다.
편집모드를 바꿔야하기 때무네... -_-;

그래서 편집모드가 필요없는
이맥스 (emacs)로 갈아타볼까 싶다.