====== cross compile tool ======
===== armv4t-eabi =====
*[[http://wiki.openmoko.org/wiki/Toolchain|toolchain from openmoko]]
*[[http://trac.koolu.org/wiki/Toolchain|Toolchain]]
*[[http://wiki.openmoko.org/wiki/Android_porting|openmoko android porting]]
===== Sourcery G++ lite 설치 =====
*[[http://www.codesourcery.com/sgpp/lite/arm/portal/subscription?@template=lite|Download Sourcery G++ Lite Edition for ARM]] 바이너리 tar 다운로드
*설치한 곳의 path 추가 ~/.bashrc
export PATH=~/apps/toolchains/arm-2009q1/bin:$PATH
*man alias 설치 ~/.bash_aliases
alias armman="MANPATH=~/apps/toolchains/arm-2009q1/share/doc/arm-arm-none-eabi/man/ man"
*Makefile에 환경변수 전달
$ make uImage ARCH=arm CROSS_COMPILE=/path/to/toolchain/prefix-
===== ARM 버젼별 컴파일러 옵션 =====
*ARMv4 - Little-Endian, Soft-Float
*Command-line option(s): default
*Library subdirectory: ./
*ARMv4 Thumb - Little-Endian, Soft-Float
*Command-line option(s): -mthumb
*Library subdirectory: thumb/
*ARMv7 Thumb-2 - Little-Endian, Soft-Float
*Command-line option(s): -mthumb -march=armv7 -mfix-cortex-m3-ldrd
*Library subdirectory: thumb2/
*ARMv6-M Thumb - Little-Endian, Soft-Float
*Command-line option(s): -mthumb -march=armv6-m
*Library subdirectory: armv6-m/
===== binutils 설명 =====
[[http://www.codesourcery.com/sgpp/lite/arm/portal/doc4123/binutils.pdf|참조]]
*ar - Create, modify, and extract from archives
*nm - List symbols from object les
*objcopy - Copy and translate object les
*objdump - Display information from object les
*ranlib - Generate index to archive contents
*readelf - Display the contents of ELF format les.
*size List - le section sizes and total size
*strings - List printable strings from les
*strip - Discard symbols
*c++filt - Demangle encoded C++ symbols (on MS-DOS, this program is named cxxfilt)
*addr2line - Convert addresses into le names and line numbers
컴파일시 define 되었나 알아보기
suapapa_m12, gcc -DNOTH -dM -E hello.c | grep NOTH
#define NOTH 1
====== target boards ======
===== minimal requierment for android =====
* 32MB RAM
* 32MN Flash Memory
* 200MHz Online Processor
===== rebis =====
*[[http://www.mdstec.com/news/img/HRP-SC2440-ver1.pdf|MRP-SC2440 (Rebis)]]
*Ram : 64M Bytes (32M Bytes x 2)
*Boot Rom :
*AMD NOR 4M Bytes
*Intel StrataFlash 16M Bytes (optional)
*[[http://pdf1.alldatasheet.co.kr/datasheet-pdf/view/83787/SAMSUNG/S3C2440.html|s3c2440]]
*nand boot (4KB internal buffer for booting)
*[[http://infocenter.arm.com/help/topic/com.arm.doc.ddi0151c/ARM920T_TRM1_S.pdf|ARM920T Technical Reference Manual (pdf)]] -
*ARM9TDMI integer core, (ARM architecture v4T)
===== 기타 판매중인 보드들 =====
*[[http://forum.falinux.com/zbxe/?mid=EZS3C2440|ez-s3c2440]]
* ARMv5 S3C2440 LCD포함 40만원 미만
* ARMv6 S3C6410 LCD포함 100만원 미만
====== uboot ======
기존 u-boot는 gcc version 4.3.3 (Sourcery G++ Lite 2009q1-161) 에서 컴파일 에러. 아래 패치를 적용하여 코드 수정
$ tar xvzf mds-u-boot.tar.gz
...
$ cd mds-u-boot-rebis
$ patch -p1 < ../u-boot_compile_with_sourcery_g++.patch
patching file Makefile
patching file common/cmd_nand_s3c2440a.c
patching file cpu/arm920t/config.mk
patching file net/net.c
patching file net/tftp.c
nand 부팅 빌드
$ make distclean
...
$ make clean
...
$ make rebis_atm322a_config
...
$ CROSS_COMPILE=arm-none-eabi- make
...
빌드 결과물 확인
$ ls u-boot*
u-boot u-boot.bin u-boot.map u-boot.srec
$ file u-boot
u-boot: ELF 32-bit LSB executable, ARM, version 1 (SYSV), statically linked, not stripped
$ arm-none-eabi-readelf -h u-boot |grep Flags
Flags: 0x5000002, has entry point, Version5 EABI
tftp로 커널바이너리와 ramdisk 밀어넣기
REBIS# set ethaddr 12:34:56:65:43:21 MAC address
REBIS# set serverip 192.168.1.1 Host IP address
REBIS# set ipaddr 192.168.1.2 Target IP address
REBIS# t 30800000 ramdisk-8.gz ramdisk download
REBIS# t 32000000 zImage kernel download
REBIS# go 32000000 start
REBIS# nandw 0 200000 32000000 kernel Fusing
REBIS# nandw 100 340000 30800000 ramdisk Fusing
REBIS# set bootcmd nandr 0 200000 32000000\; nandr 100 340000 30800000\;g 32000000
*[[http://kelp.or.kr/korweblog/stories.php?story=04/07/08/5932057&topic=25|고도리님 uboot분석]] in kelp
*[[http://asmlove.co.kr/wiki/wiki.php/HowToPorting_uboot|HowToPorting_uboot]] in asemlove
*[[http://lists.openmoko.org/pipermail/commitlog/2008-January/003410.html|u-boot armv4t eabi patch]] from openmoko
====== kernel ======
make uImage ARCH=arm CROSS_COMPILE=...
===== trouble shooting =====
SEGMENT_SIZE 디파인 되어있지 않다고 에러 뿜을때
// NOSTDINC_FLAGS에 -Dlinux 추가...
NOSTDINC_FLAGS += -nostdinc -isystem $(shell $(CC) -print-file-name=include) -Dlinux
CHECKFLAGS += $(NOSTDINC_FLAGS)
====== T32 cmm ======
$ find ./ -name *.cmm
./Document/Emulator/TRACE32/flash/rebis_flash_atmel.cmm
./Document/Emulator/TRACE32/terminal.cmm
./Document/Emulator/TRACE32/rebis_init.cmm
./Document/Emulator/TRACE32/linux/start_linux.cmm
./Document/Emulator/TRACE32/linux/rebis_INIT.cmm
./Document/Emulator/TRACE32/win.cmm
====== references ======
*[[http://source.android.com/download|android source]] official site
*[[http://developer.android.com/|android developers]]
*[[http://www.androiddevelopment.org/|android developers blog]]
실제 타켓에 포팅
*[[http://benno.id.au/blog/?tag=android|android articles in Benno's blog]]
*[[http://wiki.kldp.org/wiki.php/CNUAndroidMobicon|CNUAndroidMobicon]] in KLDP wiki
*[[http://wiki.kldp.org/wiki.php/AndroidPortingOnRealTarget|AndroidPortingOnRealTarget]] in KLDP wiki
*[[http://yuihorie.tistory.com/category/%EB%A6%AC%EB%88%85%EC%8A%A4%20&%20%EC%95%88%EB%93%9C%EB%A1%9C%EC%9D%B4%EB%93%9C|yuihorie님의 linux&amdroid 관련 포스팅들]]
어플개발에 관한 참고 사이트들
*[[http://androidhuman.tistory.com/|커니의 안드로이드 이야기]]
*[[http://www.droiddraw.org/|DroidDraw Beta]] ui 디자인 사이트
====== 소스 다운로드 ======
소스저장소
*[[http://android.git.kernel.org/|android git]] official site?
*[[http://android.git.kernel.org/pub/|android/pub]]
플랫폼 다운로드
mkdir mydroid
cd mydroid
repo init -u git://android.git.kernel.org/platform/manifest.git
repo sync
====== tricks ======
*[[http://android-tricks.blogspot.com/2009/02/hello-world-c-program-on-using-android.html|hello-world-c-program-on-using-android]]