제6장 FUSING.

Slides:



Advertisements
Similar presentations
1/29 Chapter 3: 시스템 소프트웨어 인터페이스 인간이 실질적으로 조작하는 기계의 부분 좋은 인터페이스 : 직관적 ( 사전지식, 경험으로 알 수 있음 ) 이어서 누구나 즉각적 사용 가능 사용자 ( 자연어 ) ↔ 응용 S/W↔ 시스템 S/W↔H/W( 기계어 )
Advertisements

안양대학교 전기전자공학과 서 삼 준 Kernel Image Generation.
2013 년 2 학기 임베디드 프로그래밍. 권장사양  HOST PC 권장사항  리눅스 배포판이 설치된 PC - 권장 배포판 : Asianux open edition3 ( 라곤 하지만 Ubuntu, Fedora, CentOS 등 다양한 리눅스 프랫폼이 가능 )  PC.
(실습) 부트로더 [BootLoader]
1. 발명의 명칭 SSD-ODD 결합된 장치에서 Optical Disc의 Defect Management방법 2. 발명의 분야
Linux Seminar #1 리눅스 이해하기.
Linux Debugging issues
개발 환경 설치 Embedded System Software
PC와 인터넷 정강수 컴퓨터 구조와 웹의 이해 PC와 인터넷 정강수
EZ Board-M In-Ho, Roh Real Time System Lab.
임베디드 시스템 개발 환경 (1) Lecture #3.
소프트웨어와 운영체제.
임베디드 시스템 개론 8. 임베디드 시스템 개발 환경 8주차 강의 자료 Embedded System Lab.
임베디드 시스템 개발을 위한 리눅스 환경설정.
제 2장 컴퓨터 구조.
1장 유닉스 소개.
4. 시스템 관리 기본 naldo.
Redhat Linux 설치 과정.
Windows CE 시스템 개발 환경 구축.
Cross Compiler를이용한 커널 컴파일 및 포팅
PXA270 개발환경 설정 Ubuntu 실습용.
개발 환경 개발 환경 개요 PXA270과 타겟 시스템 툴체인 환경 구축 JTAG 유틸리티 미니컴 Make 유틸리티
크로스 컴파일 환경 구축.
PC1 E0 R1 로컬 Host 파일 브로드 캐스트 LMHOSTS 조회 Host 파일 조회 DNS Server 조회
Kernel Porting Lecture #7.
제4장 Cross Compiler 설치.
3장. 라우터와 스위치의 기본설정 2012년 2학기 중부대학교 정보보호학과 이병천 교수.
Minicom,tftp,nfs설정,vnc설정
FUSING.
제8장 커널 & 파일 시스템 분석.
Tftp, nfs, samba 실습 임베디드 시스템 I.
Linux를 이용한 Embedded 장비 개발
임베디드 리눅스 시스템의 기본 개념 강의 목표 내용 임베디드 리눅스 시스템의 기본 개념과 주제 제시 1. 임베디드 시스템
목차 커널의 개념 및 기능 커널 포팅 램디스크.
3장. 라우터와 스위치의 기본설정 2012년 2학기 중부대학교 정보보호학과 이병천 교수.
DSP와 TMS320F28x의 이해.
2. Linux Installation Target Embedded System은 리눅스 환경을 사용한다. 이 장에서는 리눅스 설치부터, 각 설정의 의미들에 대해 이야기 한다.
Development Environment of Embedded System : part 1
WinCE Bootloader Porting
임베디드 리눅스 설치 및 동작 Lecture #5.
The next generation Windows-based Terminal
컴퓨터 구조.
UNIX Unbounded A Beginning Approach
4장. 컴퓨터 시스템의 구성과 기능 다루는 내용 컴퓨터 분해를 통한 본체 살펴보기 컴퓨터 구성요소 컴퓨터의 기능
임베디드 시스템 개론 3주차 Embedded System..
Embedded System Porting (2)
2장 운영 체제의 개요 운영체제의 개념 운영체제의 유형 운영체제의 발전 과정 운영체제의 구성 운영체제 서비스 시스템 구조
UNIT 02 Microprocessor 로봇 SW 교육원 조용수.
8. Porting.
1. Embedded System의 이해.
Root Filesystem Porting
3장. 라우터와 스위치의 기본설정 2012년 2학기 중부대학교 정보보호학과 이병천 교수.
부트 로더 (blob pre2 중심) Lecture #8.
임베디드 소프트웨어 동향. 임베디드 소프트웨어 동향 임베디드 S/W 시장분류 솔루션 측면 시스템 측면 운영체제 개발도구 설계도구 테스트도구 유선통신 무선통신 정보가전 자동차제어 산업자동화 사무자동화 군사/항공우주 의료장비 솔루션 공급 업체 임베디드 S/W시장 임베디드.
개발 환경.
Root Filesystem Porting
Host PC & Target Board 환경설정 Embedded Linux Image 올리기
실시간 자원 량 정보 제공을 결합한 Heartbeat
임베디드 소프트웨어 설계.
Boot Loader.
홈 네트워크 시뮬레이션 정 찬 번 석 성 환.
2018 봄학기 Pusan National University School of CSE
Boot PROM.
3장. 라우터와 스위치의 기본설정 2012년 2학기 중부대학교 정보보호학과 이병천 교수.
임베디드 시스템 개론 임베디드 타겟 보드 포팅 및 H/W 제어 3일차 강의 자료 Embedded System Lab.
Kernel, Ramdisk, JFFS2 Porting
소리가 작으면 이어폰 사용 권장!.
임베디드 리눅스 설치 및 동작 Lecture #5.
Eclipse를 이용한 Embedded Linux 응용 프로그램 개발
Lecture 7 7-Segment LED controller using u-controller
Presentation transcript:

제6장 FUSING

목차 6.1 overview 6.2 Bootloader 6.3 kernel image 6.4 rootfile-system image 6.5 fusing

6.1 Overview

6.1 Overview Target System HOST System JTAG 2. Download JTAG Interface Serial Interface or Ethernet Interface Boot Loader FLASH Memory Linux Kernel Root File System User File system SDRAM HOST System 3.Fusing 1.Fusing 2. Download JTAG Target System

6.1 Overview 필수 구성 요소 Target System을 구동하기 위해서는 적어도 다음의 3가지 구성요소가 필요하다. Boot Loader 하드웨어를 초기화하고 kernel image를 sdram에 올려주어 수행을 넘겨주는 역할을 하는 프로그램 OS Kernel OS 의 핵심 프로그램 Root File System Kernel 에서 사용할 File System

6.1 Overview 추가 구성 요소 Target System을 보다 효율적으로 사용하기 위해 user file system을 추가 할 수 있다. User File System Root file system 에 포함되지 않은 util이나 data file등을 위해 추가적으로 사용할 file system

6.1 Overview What is Boot Loader? 시스템이 부팅될 때 가장 먼저 실행되는 프로그램 Main Function Hardware Initialization CPU clock, Memory timing, interrupt, UART, ETC. PC의 BIOS Kernel Load 운영 체제를 RAM에 올려주고 실행. Additional Function Target board에 개발한 program을 전송하기 위한 기능들. Download Image to SDRAM Serial – xmodem, uuencode Ethernet – tftp, bootp Fusing Flash Rom Write, Read, Erase, Lock/Unlock Embedded System 에서의 Boot Loader란 PC의 BIOS와 OS Loader 의 기능을 수행하는 프로그램으로 시스템이 부팅될 때 가장 먼저 수행되는 프로그램이다. 부트로더의 기본적인 기능(필수 기능)으로는 하드웨어의 초기화와 커널의 load이다. CPU의 clock 이나, 메모리의 timing, interrupt vector, UART등 시스템의 하드웨어를 초기화하여 OS가 동작할 수 있는 환경을 만든 후, OS의 핵심 프로그램인 커널을 RAM에 올리고 실행시켜 주는 것이다. Embedded System 에서는 Boot Loader는 필수 기능 뿐 아니라 System 의 개발을 돕는 부가적인 기능을 가지고 있다. Embedded System은 대부분 개발 System(Host)과 target System이 분리되어있다. 때문에 Host에서 target system에 개발한 프로그램을 전송하기위한 수단이 필요한데 대부분 부트로더에 이러한 기능이 포함되어있다. Serial 을 통해 image를 전송하는 방식으로 xmodem 이나 Uuencode 프로그램이 있고, Ethernet을 통해 전송하는 방식으로는 tftp(간단한 ftp,udp 사용) 나 bootp(시스템이 booting 될 때에 자동으로 network를 설정하고, Server에 연결하여 부팅할 수 있게 해주는 프로토콜) 가 가장 많이 사용된다.

6.1 Overview Kernel Kernel Image OS의 핵심기능을 수행하는 프로그램 Process management Memory management Device management Network management File System Management API (Application Programming Interface) ETC. Kernel Image Kernel 을 압축한 것으로 boot loader에 의해 압축이 해제되어 sdram으로 load 된다. 시스템의 저장 공간을 최소한으로 사용하기 위한 목적으로 압축 상태로 존재

6.1 Overview Root File System “/” 디렉토리로 마운트 되는 파일 시스템으로 리눅스가 동작하기 위해 기본적으로 필요한 프로그램 및 설정 파일을 가지고 있다. Kernel 에서 기본적인 초기화 작업 후 Root File System을 마운트 한다. Embedded System 은 대부분 크기가 작아야 하므로 hard disk를 가지고 있을 수 없기 때문에 주로 Ramdisk를 사용하여 Root File System을 구축한다. Root File System이란 “/” 디렉토리로 마운트 되는 파일 시스템으로 리눅스가 동작하기 위해 기본적으로 필요한 프로그램 및 설정 파일을 가지고 있는 파일 시스템이다. Kernel은 boot loader에 의해 sdram에 로드된 후 기본적인 device들과 kernel 내부의 데이터 구조를 초기화 시킨 후 root file system을 찾아 “/” 디렉토리로 마운트 시킨다. Kernel이 root file system을 찾지 못한 경우 시스템은 더 이상 작동하지 못한다. PC의 경우 hard disk에 Root File system을 가지고 있지만Embedded System 은 대부분 크기가 작아야 하므로 hard disk를 가지고 있을 수 없다. 때문에 주로 Ramdisk를 사용하여 Root File System을 구축한다. Root File System은 최소한 다음의 디렉토리들을 가지고 있어야 한다. /dev,/proc,/bin,/etc,/lib,/usr,/tmp 또한 기본적인 동작을 위해 다음의 유틸리티들을 가지고 있어야 한다. sh, ls, cp, mv 등 시스템 명령어 그리고 유틸리티가 런타임 라이브러리를 사용하는 경우 필요한 라이브러리들을 함께 가지고 있어야한다.

6.1 Overview User File System Root file system 에 포함되지 않은 util이나 data file등을 위해 추가적으로 사용할 file system 필수 요소는 아니지만 target board를 보다 효율적으로 구성하기 위해서 필요하다. Flash File System으로 제작 Ramdisk와 달리 Flash Memory에 직접 file system을 구현한 것 Flash Memory에 바로 read/write  hard disk와 동일하게 사용 전원이 꺼진 후에도 작업 내용이 Flash Memory에 남아있다. Flash memory는 기록하는 데에 한계가 있으므로 빈번하게 기록과 삭제가 일어나면 짧은 시간에 고장날 수 있다

6.1 Overview JFFS2 Journalling Flash File System Red Hat에서 개발한 flash file system으로 linux kernel에서 지원 전원이 꺼지더라고 지워지지 않고 남아 있어야 하는 설정 파일이나, ramdisk에 포함되지 않은 프로그램등을 저장하기 위해 사용 http://sources.redhat.com/jffs2

6.1 Overview Target 설정 순서 Target System HOST System JTAG 2. Download JTAG Interface Serial Interface or Ethernet Interface Boot Loader FLASH Memory Linux Kernel Root File System User File system SDRAM HOST System 3.Fusing 1.Fusing 2. Download JTAG Target System Target System을 구동시키기 위해서는 먼저 하드웨어를 초기화하고 kernel을 실행 시켜 주는 Boot Loader를 개발하여 Target System의 FLASH Memory의 0번지에 Fusing 해 주어야 한다. Target System의 전원을 켜주면 바로 이 FLASH Memory의 0번지가 실행된다. 즉, 이 위치에 Boot Loader를 fusing 해 주었기 때문에 Boot Loader가 실행된다. 임베디드 시스템의 Boot Loader는 하드웨어를 초기화하고 커널을 실행시켜 주는 기능외에도 개발중에( 아직 Target System에 kernel 및 file system이 없을 때) 시리얼 또는 Ethernet 연결을 통해서 커널이나 file system 등의 이미지를 다운로드 할 수 있는 기능을 가지고 있다. 또한 다운받은 이미지를 flash memory에 fusing할 수 있는 기능도 가지고 있다. 그렇기 때문에 Target System을구축하기 위해서는 Boot Loader를 먼저 JTAG를 사용하여 Flash Memory 의 0번지에 fusing한 후 전원을 다시 켜주어 Boot Loader 를 실행한 후 Boot Loader의 기능을 사용하여 Kernel 과 file systme(ramdisk) image를 다운받아 Flash Memory 에 fusing 해야 한다..

6.1 Overview Target Operating 순서 [1] Boot Loader Boot Loader SDRAM Target System을 구축한 후에 전원을 켜주면 먼저 Boot Loader가 실행된다. 그리고 Boot Loader가 flash memory에 저장되어있는 kernel 이미지와 Ramdisk Image(Root File System) 를 ram에 올려준 후 kernel 로 수행을 넘겨준다. 1. Power On Boot Loader Linux Kernel RAMDISK JFFS2 2.Execute 0x00000000 3.Load Kernel 4. Load Root File System (RAMDISK) FLASH Memory

‘init’(/sbin/init) process 실행 6.1 Overview Target Operating 순서 [2] Kernel Root File System 마운트 ‘init’(/sbin/init) process 실행 Login 처리 Kernel 이미지 적재 시스템 초기화 네트워크 설정 호스트 이름 설정 Device 구동 다른 file system 마운트 ETC 파일 시스템 점검 가상 콘솔 접속 관리 ETC. 커널이 sdram에 적재되면 기본적인 device와 내부 변수들을 초기화 한 후에 Root File System의 위치를 찾아 “/” 에 마운트 한다. (Root File System의 위치에 대한 정보는 boot loader로 부터 넘겨 받는다) 그 후 시스템의 최 상위 프로세스인 /sbin/init 를 실행한다. init 프로세스는 시스템을 초기화 한 후에 로그인 프롬프트를 출력한 후 사용자의 접속을 기다린다.

부트로더를 컴파일하고 jtag으로 flash에 fusing 한다. 6.2 Bootloader 부트로더를 컴파일하고 jtag으로 flash에 fusing 한다.

6.2 Boot Loader 설치 Bootloader를 컴파일 하기 위해서는 타겟보드용 Toolchain이 설치 되어 있어야 한다. Toolchain 설치를 다시 한 번 해 보자. Source 압축을 해제한다. tar zxvf iwmmxt-1.0.0.tar.gz

6.2 Boot Loader 설치

6.2 Boot Loader 설치 Boot Loader compile

6.2 Boot Loader 설치 Compile이 완료되면, boot가 생성이 된다. 생성되어진 boot가 bootloader image이다.

6.2 Boot Loader 설치 < JTAG program 설치 > What is JTAG? Joint European Test Access Group JTAG은 PCB와 IC를 테스트 하기 위한 목적으로 1985년 조직된 JTAG(Joint Test Action Group)에 의해 제정된 표준이다. Boundary Scan Test 칩 내부에 Boundary Cell이란 것을 두어 외부의 핀과 일대 일로 연결시켜 프로세서가 할 수 있는 동작을 중간에 Cell을 통해 모든 동작을 인위적으로 수행할 수 있어 여러 가지 하드웨어 테스트나 연결 상태 등을 체크할 수 있다.

6.2 Boot Loader 설치 < JTAG program 설치 > JTAG 기능 프로세서(CPU)의 상태와는 상관없이 디바이스의 모든 외부 핀을 구동시키거나 값을 읽어 들일 수 있는 기능을 제공 회로의 배선과 소자의 전기적 연결상태 test 디바이스간의 연결상태 test Flash memory fusing jtag의 위 기능중 blob를 flash memory에 download 하기위해 flash memory fusing을 사용할 것이다.

6.2 Boot Loader 설치 < JTAG program 설치 > PC를 통한 JTAG 호환 장치의 제어

6.2 Boot Loader 설치 JTAG 설치

6.2 Boot Loader 퓨징 JTAG Build JTAG 소스가 있는 디렉토리로 이동한다. Makefile 이 작성되어 있으므로 make 명령을 사용하면 JTAG 소스가 컴파일 된다. 컴파일이 성공하면 Jflashmm 이란 바이너리 파일이 생성된다.

6.2 Boot Loader 설치 타겟보드에 Bootloader 올리기 앞에서 컴파일한 부트로더를 위에서 컴파일한 jflashmm를 이용하여 플레시 메모리에 Fusing 한다. jflashmm 프로그램은 보드의 JTAG 커넥터와 연결된 호스트 PC의 프린터 포트를 제어하여 타겟보드용 부트로더를 Fusing 할 수 있다. roothost]# ./jflashmm pxa27x32.dat boot 부트로더 이미지(boot)를 cpu와 flash 메모리에 대한 정보를 인자값(pxa27x32.dat)으로 해서 퓨징시키고 있다.

6.2 Boot Loader 퓨징 Bootloader Fusing JTAG을 통해 flash 0번지에 부트로더 fusing

6.3 Kernel Image

6.3 Kernel Compile Target System HOST System JTAG 2. Download JTAG Interface Serial Interface or Ethernet Interface Boot Loader FLASH Memory Linux Kernel Root File System User File system SDRAM HOST System 3.Fusing 1.Fusing 2. Download JTAG Target System

6.3 Kernel Compile 커널을 압축시킨 파일 필요한 파일 (CD 에 있는 내용) <보드용 리눅스 커널> - X-Hyper270-TKU Kernel : linux-2.6.11-h270-tku_v1.1 커널을 압축시킨 파일 X-Hyper270-TKU Kernel : linux-2.6.11-h270-tku_v1.1.tar.gz

6.3 Kernel Compile /Kernel]# cd linux-2.6.11-h270-tku_v1.1 X-Hyper270-TKU Kenel인 linux-2.6.11-h270-tku_v1.1.tar.gz를 compile 하여 zImage를 생성 Kernel source가 있는 디렉토리로 이동한다. 먼저 아래 그림처럼 X-Hyper270-TKU 설정을 한 후 menuconfig 화면으로 이동한다. “make xhyper270tku_deconfig”는 kernel 컴파일 옵션을 TKU보드에 맞추어 주는 일을 한다. makemenu config의 저장 파일인 kconfig 파일이 변경된다. make zimage로 컴파일을 하면 이 환경설정 파일을 참조해서 컴파일한다. /Kernel]# cd linux-2.6.11-h270-tku_v1.1 /linux-2.6.11-h270-tku_v1.1]# make xhyper270tku_defconfig /linux-2.6.11-h270-tku_v1.1]# make menuconfig /linux-2.6.11-h270-tku_v1.1]# make zImage 설정을 그대로 저장하고 빠져나온다.

6.3 Kernel Compile 컴파일된 kernel 이미지를 /tftpboot 로 복사 bootloader로 부팅 # cp ./arch/arm/boot/zImage /tftpboot/ bootloader로 부팅 minicom을 실행 한다. bootloader command mode로 target system booting make zImage 를 통해 컴파일 하면 [kernel]/arch/arm/boot/zImage 에 생성된다.

6.4 rootfile-system image

6.4 jffs2 file system Target System HOST System JTAG 2. Download JTAG Interface Serial Interface or Ethernet Interface Boot Loader FLASH Memory Linux Kernel Root File System User File system SDRAM HOST System 3.Fusing 1.Fusing 2. Download JTAG Target System

6.4 jffs2 file system mkfs.jffs2 설치 Host에 설치 되어있나 확인하고 되어있지 않으면 설치한다.

6.4 jffs2 file system flash용 파일시스템인 Jffs2 image는 mkfs.jffs2 라는 아래와 같은 명령어로 루트 파일 시스템을 만든다.

6.4 jffs2 file system mkjffs2 사용법 스크립트의 내용은 다음과 같다. 생성된 rootfs.img 이미지를 bootloader를 이용해 다운로드 한 후 에는 필히 flash에 write해 주어야 한다.

6.5 FUSING

6.5 FUSING Fusing 사용법 : “tftp “전송할 파일명” “해당 영역” hybus>tftp zImage kernel hybus>flash kernel hybus>tftp rootfs.img root hybus>flash root ttftp 명령에 대해서는 5.3.3 장 ramdisk 설치에서 설명한다. 일단 server에서 설정한 디렉토리(여기서는 /tftpboot 로 설정하였었다.) 에서 두번째 인자에 해당하는 이름을 가진 파일을 sdram의 ramdisk 용으로 정해진 영역에 copy한다는 정도만 알아 두면 될 것이다.

6.5 FUSING Booting linux kernel 정상적으로 이미지가 퓨징되었다면 타깃시스템이 잘 동작할 것이다. 다음의 boot명령어로 booting하거나 reset 버튼을 눌러 타깃시스템을 재 동작시킨다. hybus> boot 타깃시스템의 잘 동작하는지 확인한다. 이로써 타깃시스템에 대한 fusing을 마쳤다. Skip된 부분은 이미 flash memory에이미 같은 값이 씌여져 있기 때문에 넘어간 것이다.

6.6 Bootloader 명령어

Bootloader Command(예) 개개의 명령어는 타겟보드에 따라 다르지만 일반적으로 유사한 명령어 구조를 가지고 있다.(EMPOS II를 기준으로 예시) Help : Command mode에서 사용 가능한 명령어를 보여준다 #>help

Bootloader Command (예) bootp : Host PC에서부터 bootp를 이용 Target board로 IP를 할당 받을 수 있는 기능 #>bootp

Bootloader Command (예) setip : bootp를 이용하지 않고 직접 ip 설정하는 명령어 #>setip 192.168.0.5 192.168.0.7 Host PC IP Target Board IP

Bootloader Command (예) macwrite : MAC Address 변경 명령어 Mac Address 변경시 반드시 Host PC의 /etc/bootptab파일의 Tartget Board의 Mac Address인 ha를 변경 후 적용 시켜줘야한다. #>macwrite pri 000ba8000000 변경 eth(sec 경우 sec로) 변경 MAC Address

Bootloader Command (예) tftp : 고속전송이 가능한 이더넷을 통해 데이터를 전송 명령어 #>tftp zImage kernel

Bootloader Command (예) read : 특정 메모리 번지의 값을 확인 하기 위한 명령어 #>read b32 0x48000000

Bootloader Command (예) write : 하나의 메모리 레지스터 값을 변경하기 위한 명령어 #>write b32 0x4800000C 0x12BC5554

Bootloader Command (예) flash : 전송을 받은 데이터를 Flash영역에 저장하는 명령어 #>flash kernel

Bootloader Command (예) erase : Flash Rom에 존재하는 데이터를 삭제하는 명령어 #>erase kernel

Bootloader Command (예) Status : Flash 메모리의 해당 데이터(booter, kernel, ramdisk, usr)의 주소와 현재 보드에 할당되고 사용하는 IP와 tftp 패킷을 보낼 Host PC의 IP, 각 이더넷의 MAC Address와 중요 레지스터 값을 알 수 있는 명령어 #>status