Cross Compiler를이용한 커널 컴파일 및 포팅
Cross Compiler 설정 Cross Compiler Target 보드에서 동작하는 실행파일을 Host PC에서 컴파일 할 수 있는 컴파일러 Cross compile Toolchain Download ->SAMBA를 이용한 다운로드 가능 /usr/local/arm/ 경로에 압축 풀기 /usr/local/arm 경로로 이동 후 압축 풀기 압축풀기 작업 후 결과 : /usr/local/arm/arm-2009q3 폴더 생성
Cross Compiler 설정 Path 설정 컴파일러 확인 Cross 컴파일 테스트 vi ~/.bashrc 실행 후 아래의 내용 추가 #source ~/.bashrc 실행 컴파일러 확인 arm-linux-gcc –v Cross 컴파일 테스트 자신의 학번과 이름을 출력하는 C코드 작성 다음의 과정을 통하여 컴파일 및 확인, 실행 (option과제 : gcc를 이용한 컴파일 및 실행)
Cross Compiler 설정 실습1. 자신의 학번 이름을 출력하는 프로그램 소스를 타겟보드용으로 컴파일 한 후 실행 한 결과가 실행되지 않는 이유를 설명하시오 실습2. 실습1에서 만들어진 실행파일을 Target Board에서 nfs로 마운트하여 실행한 결과 를 캡처하시오 nfs가 되지 않을 경우 tftp를 활용 tftp –r 해당파일 서버IP –g Ex) tftp –r test 192.168.0.10 -g
커널 컴파일 및 포팅 vi Makefile에서 크로스 컴파일러 Path설정
커널 컴파일 및 포팅 #apt-get install libncurses5-dev #make menuconfig 명령 실행 및 설정(NFS 및 카메라 설정 등등) File systems 선택 후 Enter
커널 컴파일 및 포팅 Network File Systems 선택 후 Enter
커널 컴파일 및 포팅 NFS client support 선택 후 하위 옵션 선 택(Space 키 사용) 설정 후 Exit Save화면에서 Yes선택 후 Enter
커널 컴파일 및 포팅 커널 소스가 있는 경로에서 make 명령어 실행 /arch/arm/boot/zImage 컴파일된 커널 이미지 cp /arch/arm /boot/zImage /tftpboot
커널 컴파일 및 포팅 Target Board의 u-boot에서 커널 이미지 다운로드 tftp [다운로드 받을 Target Board의 RAM Address] [다운로드 받을 파일이름] ex) tftp 24000000 zImage 다운로드 받은 커널이미지를 Nand영역에 Write write할 nand영역 삭제 nand erase [삭제 할 nand 시작주소] [삭제 할 nand영역의 크기] ex) nand erase 80000 300000(download zImage size) nand 영역에 커널이미지 write Nand write [다운로드 받은 RAM Address] [Write할 nand 시작주소] [write할 nand영역 크기] nand write 24000000 80000 300000 커널이미지 Write 작업 후 boot 명령 실행
커널 컴파일 및 포팅 Target 보드에서 커널 이미지 다운로드 및 포팅 실행화면
파일시스템 포팅 홈페이지에서 rootfs_441.yaffs2파일 다운로드 다운받은 파일을 samba를 이용해서 /tftpboot에 복사 tftp 24000000 root_441.yaffs2 nand erase 440000 f9c0000 (tftp로 받은 size를 써도 무관함) nand write.yaffs 24000000 440000 xxxxxx(tftp로 받은 size = 정확히 입력해야 가능) *명령어가 다르니 주의 NAND Address Size Contents 0x0(0x0 – 0x80000) 512KB Bootloader 0x80000(0x80000-0x440000) 3.75MB Kernel 0x440000(0x440000-0xFE00000) 249.75MB Filesystem 0xFE00000(0xFE00000-0x10000000) 2MB Boot log