====== 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]]