android
Table of Contents
cross compile tool
armv4t-eabi
Sourcery G++ 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 설명
- 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 되었나 알아보기
<noth> suapapa_m12, gcc -DNOTH -dM -E hello.c | grep NOTH <noth> #define NOTH 1
target boards
minimal requierment for android
- 32MB RAM
- 32MN Flash Memory
- 200MHz Online Processor
rebis
-
- Ram : 64M Bytes (32M Bytes x 2)
- Boot Rom :
- AMD NOR 4M Bytes
- Intel StrataFlash 16M Bytes (optional)
-
- nand boot (4KB internal buffer for booting)
-
- ARM9TDMI integer core, (ARM architecture v4T)
기타 판매중인 보드들
- 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
- 고도리님 uboot분석 in kelp
- HowToPorting_uboot in asemlove
- 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
- android source official site
실제 타켓에 포팅
- CNUAndroidMobicon in KLDP wiki
- AndroidPortingOnRealTarget in KLDP wiki
어플개발에 관한 참고 사이트들
- DroidDraw Beta ui 디자인 사이트
소스 다운로드
소스저장소
- android git official site?
플랫폼 다운로드
mkdir mydroid cd mydroid repo init -u git://android.git.kernel.org/platform/manifest.git repo sync
tricks
android.txt · Last modified: 2013/08/03 05:04 by 127.0.0.1