망고100 보드로 놀아보자-5

Similar documents
망고100 메뉴얼

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션

지난시간에... 우리는 kernel compile을위하여 cross compile 환경을구축했음. UBUNTU 12.04에서 arm-2009q3를사용하여 간단한 c source를빌드함. 한번은 intel CPU를위한 gcc로, 한번은 ARM CPU를위한 gcc로. AR

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션

/chroot/lib/ /chroot/etc/

Mango-AM335x LCD Type 커널 Module Parameter에서 변경하기

Microsoft PowerPoint - chap02-C프로그램시작하기.pptx

슬라이드 1

Sena Technologies, Inc. HelloDevice Super 1.1.0

PowerPoint 프레젠테이션

untitled

Microsoft PowerPoint - lab14.pptx

Mango220 Android How to compile and Transfer image to Target

PowerPoint 프레젠테이션

본 강의에 들어가기 전

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션

프로그래밍개론및실습 2015 년 2 학기프로그래밍개론및실습과목으로본내용은강의교재인생능출판사, 두근두근 C 언어수업, 천인국지음을발췌수정하였음

6주차.key

DE1-SoC Board

Adobe Flash 취약점 분석 (CVE )

중간고사

13주-14주proc.PDF


망고100 보드로 놀아보자 -10

untitled

임베디드시스템설계강의자료 6 system call 2/2 (2014 년도 1 학기 ) 김영진 아주대학교전자공학과

학습목차 2.1 다차원배열이란 차원배열의주소와값의참조

슬라이드 제목 없음

LXR 설치 및 사용법.doc

untitled

Microsoft PowerPoint - chap03-변수와데이터형.pptx

OCW_C언어 기초

슬라이드 1

비트와바이트 비트와바이트 비트 (Bit) : 2진수값하나 (0 또는 1) 를저장할수있는최소메모리공간 1비트 2비트 3비트... n비트 2^1 = 2개 2^2 = 4개 2^3 = 8개... 2^n 개 1 바이트는 8 비트 2 2

s SINUMERIK 840C Service and User Manual DATA SAVING & LOADING & & /

교육지원 IT시스템 선진화

Secure Programming Lecture1 : Introduction

버퍼오버플로우-왕기초편 10. 메모리를 Hex dump 뜨기 앞서우리는버퍼오버플로우로인해리턴어드레스 (return address) 가변조될수있음을알았습니다. 이제곧리턴어드레스를원하는값으로변경하는실습을해볼것인데요, 그전에앞서, 메모리에저장된값들을살펴보는방법에대해배워보겠습

Microsoft PowerPoint APUE(Intro).ppt

<4D F736F F F696E74202D20B8AEB4AABDBA20BFC0B7F920C3B3B8AEC7CFB1E22E BC8A3C8AF20B8F0B5E55D>

hlogin7

Microsoft Word - Network Programming_01.docx

로봇SW교육원 강의자료

금오공대 컴퓨터공학전공 강의자료

C++ Programming


<C3CA3520B0FAC7D0B1B3BBE7BFEB202E687770>

snu.pdf

199

b


The Pocket Guide to TCP/IP Sockets: C Version

Microsoft PowerPoint - chap08-1 [호환 모드]

PowerPoint 프레젠테이션

4. 1 포인터와 1 차원배열 4. 2 포인터와 2 차원배열 4. 3 포인터배열 4. 4 포인터와문자그리고포인터와문자열

초보자를 위한 C++

Microsoft PowerPoint - 02-Development-Environment-1.ppt

C++-¿Ïº®Çؼ³10Àå

Microsoft PowerPoint - ch07 - 포인터 pm0415

Microsoft PowerPoint - chap06-2pointer.ppt

작성자 : 기술지원부 김 삼 수

歯9장.PDF

untitled

<30352D30312D3120BFB5B9AEB0E8BEE0C0C720C0CCC7D82E687770>

歯mp3사용설명서

Microsoft PowerPoint - ch 전처리기, 다중 소스파일 pm1015

10 강. 쉘스크립트 l 쉘스크립트 Ÿ 쉘은명령어들을연속적으로실행하는인터프리터환경을제공 Ÿ 쉘스크립트는제어문과변수선언등이가능하며프로그래밍언어와유사 Ÿ 프로그래밍언어와스크립트언어 -프로그래밍언어를사용하는경우소스코드를컴파일하여실행가능한파일로만들어야함 -일반적으로실행파일은다

int main(void) int a; int b; a=3; b=a+5; printf("a : %d \n", a); printf("b : %d \n", b); a b 3 a a+5 b &a(12ff60) &b(12ff54) 3 a 8 b printf(" a : %x \

Mango24R2 Auto Write


< E20C6DFBFFEBEEE20C0DBBCBAC0BB20C0A7C7D12043BEF0BEEE20492E707074>

C 프로그래밊 개요

chap8.PDF

PowerPoint 프레젠테이션

[ 마이크로프로세서 1] 2 주차 3 차시. 포인터와구조체 2 주차 3 차시포인터와구조체 학습목표 1. C 언어에서가장어려운포인터와구조체를설명할수있다. 2. Call By Value 와 Call By Reference 를구분할수있다. 학습내용 1 : 함수 (Functi

Mango-IMX6Q mfgtool을 이용한 이미지 Write하기

MPLAB C18 C

02.Create a shellcode that executes "/bin/sh" Excuse the ads! We need some help to keep our site up. List Create a shellcode that executes "/bin/sh" C

본교재는수업용으로제작된게시물입니다. 영리목적으로사용할경우저작권법제 30 조항에의거법적처벌을받을수있습니다. [ 실습 ] 스위치장비초기화 1. NVRAM 에저장되어있는 'startup-config' 파일이있다면, 삭제를실시한다. SWx>enable SWx#erase sta

PowerPoint 프레젠테이션

PowerPoint Presentation

Microsoft PowerPoint - ch09 - 연결형리스트, Stack, Queue와 응용 pm0100

슬라이드 1

리눅스 취약점대응방안권고 / KISA 취약점점검팀 영향받는플랫폼 OS, FAQ 추가 개요 미국보안회사 에의해 시스템의 라이브러리 의특정함수에서임의코드를실행할수있는취약점이공개 해당취약점은 CVE 지정, 도메인네임을

Mentor_PCB설계입문

untitled

*세지6문제(306~316)OK

Microsoft Word - 3부A windows 환경 IVF + visual studio.doc

목차 배열의개요 배열사용하기 다차원배열 배열을이용한문자열다루기 실무응용예제 C 2

11장 포인터

슬라이드 1

목차 포인터의개요 배열과포인터 포인터의구조 실무응용예제 C 2

임베디드시스템설계강의자료 4 (2014 년도 1 학기 ) 김영진 아주대학교전자공학과

Transcription:

망고 100 보드로놀아보자 -6 U-boot build 환경분석

U-boot build 환경분석 Board/$(Vendor)/$(BOARD)/Config.mk 파일분석 (U-boot 가실행하는주소정의 ) ifndeftext_base //TEXT_BASE = 0xc7e00000 :MMU 사용 TEXT_BASE = 0x2fe00000 # Physical Address endif

U-boot 1.3.4 Build 환경분석 #make mango100_config 실행시분석 1 $(Top dir)/makefile 에아래코드실행 2 3 4 5 6 7 1 Configuration 할보드이름정의 2 mkconfig 로 $1 인자의미 3 Architecture 인자 $2 인자 4 CPU :$3 인자 5 Board name :$4 6 VENDOR :$5 7 SOC :$6

U-boot build 분석 실행순서는 1 unconfig 실행 2 @$(MKCONFIG) $(@:_config=) arm s5pc1xx mango100 samsung s5pc100 include/config.h : include/configs/mango100.h 를 inlcude,mkconfig 에서 create ( 아래코드 ) Inlcude/config.mk: 내용 board/*/config.tmp, board/*/*/config.tmp : 존재하면삭제 Include/autoconfig.mk :makefile 에서생성 Include/autoconf.mk.dep : makefile 에서생성

U-boot build 환경분석 1 2 3 4 5 6 7 $(@:_config=) : @ 현재 target 값, 즉 mango100_config, _config= 는 null 변경하라는의미 매크로치환 (Macro substitution):http://cafe.naver.com/embeddedcrazyboys/7000 http://marvel.incheon.ac.kr/infomation/unix/makefile/gnu-make-4.html $1 값은 mango100 ${BOARD_NAME} : mango100 값을가진다. $# : 넘어오는인자수를의미 출력은 Configuring for mango100 board

U-boot build 환경분석 1 2 3 4 5 6 7 SRCTREE 와 OBJTREE 값은동일,else 문수행 $2 값은 arm Include/asm Symbol link Include/asm-arm [-z $6 : 파일이존재하지않으면참 -o : 논리적 OR 연산 Include/asm-arm/arch Symbol link Include/arch-s5pc1xxx

U-boot build 환경분석 1 2 3 4 5 6 7 Config.h 를만든다 Config.h 파일내용은 include <configs/mango100.h> 이다

U-boot Build 환경구조도

리눅스명령 find (TIP) #find. name *.[ch] exec grep 문자열 {} \; -print 예 ) find. name *.[ch] exec grep mango100 {} \; -print 스크립트추가방법 #!/bin/sh if [ "$1"!= "" ] && [ "$2"!= "" ]; then find. -name "$1" -exec grep "$2" {} \; -print else echo "Usage: $0 *.* abcd" exit 1 fi /usr/bin 디렉토리 vi fin 추가 #chmod 755 /usr/bin/fin

U-boot build 실행분석 #make 명령실행 $(TOPDIR)/config.mk $(TOPDIR)/arm_config.mk $(TOPDIR)/rules.mk

U-boot build 실행분석 include/config.h== include/configs/mango100.h 내용동일 Include/common.h 두개의파일의내용을가지고온다 $(CC): $(CROSS_COMPILE)gcc 값임 -M 옵션 : 의존성있는있는파일을구성해준다. -MQ (target) : target 이름을정의해준다. #> vi hello.c #include<stdio.h> int main(void) { printf( Hello Mango ); return 0; } #> arm-linux-gcc M hello.c 두개의예제를결과비교실습 #> vi hello.c #include<stdio.h> int main(void) { printf( Hello Mango ); return 0; } #> arm-linux-gcc M MQ foo.o hello.c

U-boot build 실행분석 1 2 3 4 5 6 7 cmp s file1 file2 : 비교하여같으면 0 && 연산자 :cmp 비교결과같으면실행 연산자 : cmp 비교결과다르면실행

U-boot build 실행분석 1 2 3 4 5 6 7 $$dir :tools, examples api_example 값을가진다. make C tools _depend make C examples _depend make C api_example _depend 형식 :make C 실행디렉토리타겟즉, -C 옵션에정의된디렉토리로가서 Makefile 을수행하며, target 은 _depend 임

U-boot build 실행분석 1 2 3 4 5 6 7 Make C $SUBDIRS all 수행되면서실제빌드됨 결과

U-boot build 실행분석 1 2 3 4 5 6 7 CPU 값은 s5pc1xx $(if $(REMOTE_BUILD),$@,$(notdir $@)) 의미는 REMOTE_BUILD 값이있으면, OBJS 값을그대로대입, 없으면, 디렉토리리를제외한파일이름만추출하라는의미 make C cpu/s5pc1xx start.o 이수행이됨

U-boot build 실행분석 (LIBBOARD) 1 2 3 4 5 6 7 LIBBOARD = board/$(boarddir)/lib$(board).a LIBBOARD := $(addprefix $(obj),$(libboard)) BOARDDIR = $(VENDOR)/$(BOARD) VENDOR=samsung, BOARD=mango100 값따라서 BORDDIR 은 samsung/mango100 LIBBOARD 는 $(obj)/board/samsung/mango100/libmango100.a

U-boot build 실행분석 (LIBBOARD) 1 2 3 4 5 6 7

U-boot build 실행분석 1 2 3 4 5 6 7 LDSCRIPT 값은 /board/samsung/mango100/u-boot.lds 따라서, $(MAKE) C /board/samsung/mango100 u-boot.lds 실행이됨

U-boot.lds 분석 : 섹션의시작번지를 0x00000000 로설정. 실제로컴파일된실행코드인 text 가로딩되고배치될번지는 config.mk 에지정된 TEXT_BASE + 0x00000000 이된다. 4byte align Text section 의맨앞에 cpu/$cpu/start.o 를배열 (Start-up code) u_boot_cmd_start 와 u_boot_cmd_end 사이의.u_boot_cmd 는 u_boot 에서사용되는 user interface command structure 를이사이에배열 u boot_cmd_start, _u_boot_cmd_end, bss_start, end 는나중에 C code, startup code 에서주소계산을위해사용함.

U-boot build 실행분석 1 2 3 4 5 6 7 UNDEF_SYM=`$(OBJDUMP) -x $(LIBBOARD) $(LIBS) \ sed -n -e 's/.*\($(sym_prefix) u_boot_cmd_.*\)/-u\1/p' sort uniq` UNDEF_SYM=`/usr/local/arm/4.2.2-eabi/usr/bin/arm-linux-objdump -x board/samsung/mango100/libmango100.a lib_generic/libgeneric.a cpu/s5pc1xx/libs5pc1xx.a cpu/s5pc1xx/s5pc100/libs5pc100.a lib_arm/libarm.a fs/cramfs/libcramfs.a fs/fat/libfat.a fs/fdos/libfdos.a fs/jffs2/libjffs2.a fs/reiserfs/libreiserfs.a fs/ext2/libext2fs.a net/libnet.a disk/libdisk.a drivers/bios_emulator/libatibiosemu.a drivers/block/libblock.a drivers/dma/libdma.a drivers/hwmon/libhwmon.a drivers/i2c/libi2c.a drivers/input/libinput.a drivers/misc/libmisc.a drivers/mmc/libmmc.a drivers/mtd/libmtd.a drivers/mtd/nand/libnand.a drivers/mtd/nand_legacy/libnand_legacy.a drivers/mtd/onenand/libonenand.a drivers/mtd/spi/libspi_flash.a drivers/net/libnet.a drivers/net/sk98lin/libsk98lin.a drivers/pci/libpci.a drivers/pcmcia/libpcmcia.a drivers/spi/libspi.a drivers/rtc/librtc.a drivers/serial/libserial.a drivers/usb/libusb.a drivers/video/libvideo.a common/libcommon.a libfdt/libfdt.a api/libapi.a post/libpost.a \ sed -n -e 's/.*\( u_boot_cmd_.*\)/-u\1/p' sort uniq` 실습 #echo abcd123 sed 's/\([a-z]*\).*/\1/'

U-boot build 실행분석 1 2 3 4 5 6 7 cd $(LNDIR) && $(LD) $(LDFLAGS) $$UNDEF_SYM $( OBJS) \ --start-group $( LIBS) --end-group $(PLATFORM_LIBS) \ -Map u-boot.map -o u-boot cd /home/icanjji/work/u-boot-work/mango100-uboot-2010-06-29 && /usr/local/arm/4.2.2-eabi/usr/bin/arm-linux-ld -Bstatic -T /home/icanjji/work/u-boot-work/mango100-uboot-2010-06-29/board/samsung/mango100/u-boot.lds -Ttext 0x2fe00000 $UNDEF_SYM cpu/s5pc1xx/start.o \ --start-group lib_generic/libgeneric.a cpu/s5pc1xx/libs5pc1xx.a cpu/s5pc1xx/s5pc100/libs5pc100.a lib_arm/libarm.a fs/cramfs/libcramfs.a fs/fat/libfat.a fs/fdos/libfdos.a fs/jffs2/libjffs2.a fs/reiserfs/libreiserfs.a fs/ext2/libext2fs.a net/libnet.a disk/libdisk.a drivers/bios_emulator/libatibiosemu.a drivers/block/libblock.a drivers/dma/libdma.a drivers/hwmon/libhwmon.a drivers/i2c/libi2c.a drivers/input/libinput.a drivers/misc/libmisc.a drivers/mmc/libmmc.a drivers/mtd/libmtd.a drivers/mtd/nand/libnand.a drivers/mtd/nand_legacy/libnand_legacy.a drivers/mtd/onenand/libonenand.a drivers/mtd/spi/libspi_flash.a drivers/net/libnet.a drivers/net/sk98lin/libsk98lin.a drivers/pci/libpci.a drivers/pcmcia/libpcmcia.a drivers/spi/libspi.a drivers/rtc/librtc.a drivers/serial/libserial.a drivers/usb/libusb.a drivers/video/libvideo.a common/libcommon.a libfdt/libfdt.a api/libapi.a post/libpost.a board/samsung/mango100/libmango100.a --end-group -L /usr/local/arm/4.2.2-eabi/usr/bin-ccache/../lib/gcc/arm-unknown-linux-gnueabi/4.2.2 -lgcc \ -Map u-boot.map -o u-boot