Kernel Porting Lecture #7.

Slides:



Advertisements
Similar presentations
안양대학교 전기전자공학과 서 삼 준 Kernel Image Generation.
Advertisements

Page 1 Android Programming November 04 / 2009 S/W Junhyuk Jang.
2013 년 2 학기 임베디드 프로그래밍. 권장사양  HOST PC 권장사항  리눅스 배포판이 설치된 PC - 권장 배포판 : Asianux open edition3 ( 라곤 하지만 Ubuntu, Fedora, CentOS 등 다양한 리눅스 프랫폼이 가능 )  PC.
21. XEN KAIST 10 / SPARCS 11 alphamin ( 유민정 ). Contents 1. Virtualization 2. Installing Xen 3. Reference.
개발 환경 설치 Embedded System Software
EZ Board-M In-Ho, Roh Real Time System Lab.
임베디드 시스템 개발 환경 (1) Lecture #3.
시작부터 끝까지 진지한 궁서체로 진행하는 완벽한 주입식의 하드코어한 리눅스/장난감 세미나
임베디드 SW 시스템 소개 - 임베디드 운영체제 - 임베디드 리눅스 - 임베디드 인터넷
임베디드 시스템 개론 8. 임베디드 시스템 개발 환경 8주차 강의 자료 Embedded System Lab.
임베디드 시스템 개발을 위한 리눅스 환경설정.
1장 유닉스 소개.
1장. 이것이 C 언어다.. 1장. 이것이 C 언어다. 1-1 C 언어의 개론적 이야기 프로그래밍 언어란 무엇인가? 컴파일이란 무엇인가? 사람과 컴파일러가 이해할 수 있는 약속된 형태의 언어 C 언어도 프로그래밍 언어 중 하나이다. 컴파일이란 무엇인가? 프로그래밍.
4. 시스템 관리 기본 naldo.
Linux University of Seoul Computer Science Park Jong wook
A n d r o i d Android 2010 년 5월 19일 작성자 : 백 선 재.
리눅스 실습 정성훈.
Windows CE 시스템 개발 환경 구축.
제6장 FUSING.
PXA270 개발환경 설정 Ubuntu 실습용.
개발 환경 개발 환경 개요 PXA270과 타겟 시스템 툴체인 환경 구축 JTAG 유틸리티 미니컴 Make 유틸리티
크로스 컴파일 환경 구축.
에서 ( 탭 – [인기 다운로드 | 모든 다운로드] ) Visual Studio 2015
제4장 Cross Compiler 설치.
FUSING.
임베디드 프로그래밍 Lecture #
PXA255-FPGA 장비 개요 및 실습 Lecture #9.
[beginning] Linux & vi editor
Linux를 이용한 Embedded 장비 개발
임베디드 리눅스 시스템의 기본 개념 강의 목표 내용 임베디드 리눅스 시스템의 기본 개념과 주제 제시 1. 임베디드 시스템
목차 커널의 개념 및 기능 커널 포팅 램디스크.
PXA255-FPGA 장비 계요 및 실습 Lecture #9.
2. Linux Installation Target Embedded System은 리눅스 환경을 사용한다. 이 장에서는 리눅스 설치부터, 각 설정의 의미들에 대해 이야기 한다.
Development Environment of Embedded System : part 1
공학용 계 산 기 최 종 발 표 팀명 : won’s 팀원 : 함현식 오철원.
임베디드 리눅스 설치 및 동작 Lecture #5.
Double O to the I to the A+ 문무활, 유용승, 홍민정
임베디드 시스템 개론 3주차 Embedded System..
Embedded System Porting (2)
리눅스 명령어 실습 임베디드 시스템 I.
윤성우의 열혈 C 프로그래밍 윤성우 저 열혈강의 C 프로그래밍 개정판 Chapter 02. 프로그램의 기본구성.
UNIT 02 Microprocessor 로봇 SW 교육원 조용수.
1. Embedded System의 이해.
Root Filesystem Porting
Internet Protocol and Programming
임베디드 소프트웨어 동향. 임베디드 소프트웨어 동향 임베디드 S/W 시장분류 솔루션 측면 시스템 측면 운영체제 개발도구 설계도구 테스트도구 유선통신 무선통신 정보가전 자동차제어 산업자동화 사무자동화 군사/항공우주 의료장비 솔루션 공급 업체 임베디드 S/W시장 임베디드.
개발 환경.
Beginning Linux Programming
Root Filesystem Porting
1장. 프로그래밍 언어, C 프로그래밍.
부트로더와 커널 이미지 부트로더 개요 타겟 시스템 부트로더 분석 부트로더 생성 커널 빌드 과정 커널 컴파일 규칙 커널 포팅
IPv6 기반의 Mobile IP 기술 개발 (iSCSI 성능 분석) - 프로젝트 중간보고서 -
실시간 자원 량 정보 제공을 결합한 Heartbeat
Mobile braille system for the blind
1주차: 프로그래밍언어란 무엇인가? C 언어란? C 프로그래밍을 위한 준비
문자 디바이스 드라이버 임베디드 시스템.
Appendix. WURFL 브라우저 살펴보기
Internet Protocol and Programming
쉽게 풀어쓴 C언어 Express 제2장 프로그램 작성 과정 C Express.
운영체제 RaspberryPi Sejin Oh.
Stepper Motor 디바이스 드라이버
Fflush 사용이유 및 방법 [이유] 키보드에서 입력된 내용은 입력버퍼에 저장되었다가 Enter 키가 들어오면 프로그램으로 전달됨 이 때 입력버퍼에 있는 Enter 키도 프로그램으로 전달됨 그러므로 아래와 같은 프로그램에서 문자 하나를 입력해도 Enter키도 입력된 것으로.
쉽게 풀어쓴 C언어 Express 제2장 프로그램 개발 과정 C Express.
Internet Protocol and Programming
홈 네트워크 시뮬레이션 정 찬 번 석 성 환.
컴퓨터 프로그램 제 1장 공학문제 해결 김 문 기.
Kernel Porting Lecture #7.
C.
임베디드 리눅스 설치 및 동작 Lecture #5.
Eclipse를 이용한 Embedded Linux 응용 프로그램 개발
Presentation transcript:

Kernel Porting Lecture #7

목 차 임베디드리눅스 최신 경향 Kernel Porting Overview ARM Patch Xscale Patch PXA255-PRO3 Board Patch Kernel Configuration & Compiling Kernel fusing & Testing

임베디드 리눅스 관련 최신 경향 #1 : 삼성전자

임베디드 리눅스 관련 최신 경향 #2 : 구글(Google)

임베디드 리눅스 관련 최신 경향 #3 : Paradigm Shift Linux Win CE Ports Tool-chain Networks GUI Mobile Network GUI Networks ex) 휴대폰, 차세대 가전기기 ex) 홈 게이트웨이, 로봇

Kernel Porting Overview (1) 리눅스 커널을 특정 타겟 보드의 하드웨어 환경 및 특정 응용에 맞게 수정하는 과정 포팅 영역 H/W-dependent CPU porting Board porting H/W-independent Linux kernel의 주요 기능 선별 및 수정 특정 응용 실행에 효율적인 환경 구축 Application Linux Kernel H/W-indep. H/W-dep. Hardware 주로 H/W-dep. 영역에 대한 포팅을 kernel porting이라 함

Kernel Porting Overview (2) 이론적인 포팅 절차 실무에서의 포팅 절차  Original Kernel  ARM Core Patch  Target Board Patch  Reference Kernel  Target Board Patch  XScale Core Patch  Why? 1) 시간 2) 기능 구현 여부 : ex) SDIO, BlueTooth, CF I/O mode 3) 성능, 안정성

ARM Core Patch (1`) Linux kernel 준비 ARM Core Patch 준비 http://www.kernel.org/ 원하는 버전의 리눅스 커널을 상기의 사이트에서 다운로드받아 준비한다 예: linux-2.6.21.tar.gz linux-2.4.19.tar.gz ARM Core Patch 준비 ARM core patch는 ARM사에서 제공하나 리눅스 커널 2.6에 대해 더 이상 지원되지 않음 리눅스 커널 2.4(e.g, linux-2.4.19)에 대해 설명 http://www.arm.uk.linux.org/ 상기의 사이트에서 원하는 커널의 ARM core patch 파일을 다운로드한다 (e.g, patch-2.4.19-rmk4.gz)

ARM Core Patch (2`) ARM Core Patch 적용 # pwd /home/pxa255/kernel # ls linux-2.4.19.tar.gz patch-2.4.19-rmk4.gz # tar xvfz linux-2.4.19.tar.gz # cd /home/pxa255/kernel/linux-2.4.19 # zcat ../patch-2.4.19-rmk4.gz | patch –p1 (or # gunzip –d ../patch-2.4.19-rmk4.gz # patch –p1 < patch-2.4.19-rmk4 )

Xscale Patch (1`) Xscale Patch 필요성 Xscale Patch 준비 타켓 보드에서 사용하는 CPU: Xscale PXA255 processor 상기의 processor는 SoC processor로 ARM core 이외에 외부 장치와의 인터페이스 기능, 몇가지 기본적인 I/O 기능을 포함 추가적인 기능들에 대해 kernel patch가 필요 Xscale Patch 준비 특정 processor에 대한 patch는 몇몇 프리랜서들에 의해 제공 Xscale patch는 nico라는 프리랜서가 제공 ftp://ftp.arm.uk.linux.org/pub/linux/arm/people/nico/v.2.4 상기의 사이트에서 원하는 커널의 Xscale patch 파일을 다운로드한다 (e.g, diff-2.4.19-rmk4-pxa2.gz)

Xscale Patch (2) Xscale Patch 적용 # pwd /home/pxa255/kernel # ls diff-2.4.19-rmk4-pxa2.gz linux-2.4.19 linux-2.4.19.tar.gz patch-2.4.19-rmk4.gz # cd /home/pxa255/kernel/linux-2.4.19 # zcat ../diff-2.4.19-rmk4-pxa2.gz | patch –p1 (or # gunzip –d ../diff-2.4.19-rmk4-pxa2.gz # patch –p1 < diff-2.4.19-rmk4-pxa2 )

PXA255-PRO3 Board Patch (1) Board Patch 개요 타켓 보드에서 지원하는 각종 I/O 장치 및 인터페이스에 대한 kernel patch 예: Board description Ethernet I/F LCD display USB PCMCIA, CF, SD I/F etc. 타겟 보드 제조업체에서 제공

PXA255-PRO3 Board Patch (2) Board Patch 준비 Board Patch 적용 휴인스 사이트나 제공된 CD-ROM으로 부터 board patch 파일을 복사하여 준비 예: diff-2.4.19-rmk4-pro3.gz Board Patch 적용 # pwd /home/pxa255/kernel # cd /home/pxa255/kernel/linux-2.4.19 # zcat ../diff-2.4.19-rmk4-pro3.gz | patch –p1 (or # gunzip –d ../diff-2.4.19-rmk4-pro3.gz # patch –p1 < diff-2.4.19-rmk4-pro3 )

Kenel Compiling (1) Kernel image making Kenel Configuration  Kernel Compiling Kernel Configuration 타겟 보드에 탑재될 linux kernel의 구성, 주요 기능 및 옵션들을 설정  특정 응용에 적합하게 linux kernel 환경을 구축 커널 기능에 대해 ‘지원함’, ‘지원하지 않음’, ‘module로 지원함’으로 선택 실행 명령: # make menuconfig Kernel Compiling 커널 설정에 따라 커널 소스를 컴파일하여 커널 이미지를 생성 실행 명령: # make dep # make zImage

Kenel Compiling (2) Kernel image making 절차 # pwd /home/pxa255/kernel # cd /home/pxa255/kernel/linux-2.4.19 # make pro3_config // default configuration 적용 // 타겟 보드에 따라 지원되지 않을 수 있음 # make oldconfig (or # make menuconfig // default config.를 수정하고자 할 때.) # make clean // # make distclean # make dep # make zImage

Kenel Fusing Kernel Fusing 새롭게 생성된 커널 이미지를 u-boot bootloader 프로그램을 통해 타겟 보드의 플래시 메모리에 퓨징한다 퓨징 절차는 “강의-5” 내용을 참조

PXA255-PRO3 Board 실습 (1) PXA255-PRO3 Board Patch 실습 현재 실습중인 커널 버전은 linux-2.6.21이고, 이에 대한 kernel patch & compiling을 실습한다. Step 1: 커널 소스 준비 http://www.kernel.org/ 사이트에서 커널 소스 linux-2.6.21.tar.gz을 다운로드한다 커널 소스 압축을 해제한다: # tar xvfz linux-2.6.21.tar.gz Step 2: PXA255-PRO3 board patch 준비 PXA255-PRO3 board patch 파일 diff-2.6.21-pxa255-pro3.gz을 준비한다

PXA255-PRO3 Board 실습 (2) PXA255-PRO3 Board Patch 실습 (cont’n) Step 3: Board patch 적용 # cd ~/pxa255/kernel/linux-2.6.21 # ls ../diff-2.6.21-pxa255-pro3.gz diff-2.6.21-pxa255-pro3.gz # zcat ../ diff-2.6.21-pxa255-pro3.gz | patch –p1 Step 4: Kernel compiling # pwd /home/pxa255-pro3/kernel/linux-2.6.21 # make pro3_defconfig # make oldconfig # make uImage

PXA255-PRO3 Board 실습 (3) PXA255-PRO3 Board Patch 실습 (cont’n) Step 5: Kernel image 생성 결과 확인 현재 board patch에서는 커널 컴파일 후에 커널 이미지를 /tftpboot/pxa255_pro3/uImage-2.6.21-pro3로 복사한다 ls 명령어를 통해 생성된 커널 이미지를 확인한다 # ls –al /tftpboot/pxa255_pro3 Step 6: Kernel fusing 타겟 보드를 리셋하여 u-boot의 command mode로 들어간다 커널 퓨징과 관련하여 환경 변수를 확인 및 수정한다 PRO3> printenv 커널을 퓨징한다 PRO3> run linuxf

부록 : Menuconfig flow make pro3_defconfig make menuconfig cd include ; ln -sf asm-arm asm lxdialog compile script/Menuconfig arch/arm/config.in .config 有 no arch/arm/defconfig yes lxdialog Configuration .tmpconfig , .tmpconfig.h mv .tmpconfig .config mv .tmpconfig.h include/linux/autoconf.h exit

부록 : Patch file 만들기 Patch file Patch file은 두 파일이나 디렉토리간의 차이점을 출력해주는 프로그램인 diff에 의해 만들어진 파일을 의미. 프로그램의 기능향상이나 문제점을 파악하기 위함. 보관의 용이, Version up 관리 용이

부록 : Patch file 만들기(con’t) diff 사용법 hello.c hello2.c #include <stdio.h> int main(void) { printf("hello world!!!\n"); return 0; } #include <stdio.h> int main(void) { printf("hello world!!!\n"); printf("hello bedguy!!!\n"); return 0; } [root@bedguy /root]# diff -uNr hello.c hello2.c > hello.patch [root@bedguy /root]# cat hello.patch --- hello.c Thu Aug 30 14:08:05 2001 +++ hello2.c Thu Aug 30 14:06:54 2001 @@ -2,6 +2,7 @@ int main(void) { printf("hello world!!!\n"); + printf("hello bedguy!!!\n"); return 0; } [root@bedguy /root]# Org file New file Patch file

부록 : Patch file 만들기(con’t) -p option p1 - 첫번째 슬래쉬를 뺀 곳부터 Patch 적용(보통 디렉토리 전체) p0 – 그 상위 디렉토리에서부터 적용(파일 하나 비교) [root@bedguy /root]# cat hello.patch | patch -p0 [root@bedguy /root]# cat hello.c #include <stdio.h> int main(void) { printf("hello world!!!\n"); printf("hello bedguy!!!\n"); return 0; } [root@bedguy /root]#

부록: Link http://www.arm.linux.org.uk/ The ARM Linux Project http://www.netwinder.org/ netwinder http://handhelds.org/ IPAQ 관련 http://www.cs.cmu.edu/~wearable/software/ The Wearable Group http://www.lart.tudelft.nl The LART Pages http://www.kelp.or.kr/ Korea Embedded Linux Project http://www.kesl.org/ Korea Embedded System og Linux http://www.huins.com/ Huins, Co. http://linux.flyduck.com/ Kernel site http://kernelkorea.org/ Linux kernel http://www.linuxro.com/ ecos porting http://pcmcia-cs.sourceforge.net/ Linux PCMCIA Information Page http://ftp.arm.linux.org.uk/ The ARM Linux Project FTP http://www.kr.ibm.com/developerworks/ 전문 강좌 http://www.freechal.com/embedded/ 임베디드 리눅스 개발자 그룹 http://www.fsf.org/ gnu homepage http://www.phystech.com/download/ server demon program