본문 바로가기
2023-1/IoT와 임베디드 소프트웨어

CrossDevEnv, Kernel, BootLoader

by 철없는민물장어 2023. 4. 25.
728x90
반응형

교차개발 환경

Cross Development Environment

 

호스트에서 타겟을 위한 소프트웨어 개발을 수행하는 것.

 

Tool Chain

컴파일, 빌드 과정에 필요한 도구, 라이브러리의 모음이다. 

 

TFTP

단순한 파일 전송 프로토콜

최소한의 메모리와 자원을 사용한다.

오류 복구 기능이 없다

보안 기능이 없다

 

NFS(network file system)

원격 시스템의 파일을 로컬 시스템처럼 접근할 수 있게 해주는 네트워크 파일 공유 프로토콜

클라이언트-서버 모델을 사용

 

Bootp

네트워크 환경에서 원격으로 시스템을 부팅하기 위한 프로토콜

 


라즈베리파이 부팅

  1. First stage bootloader (부트롬): Raspberry Pi에 전원이 공급되면, SoC(System on Chip)의 내장 부트롬(Boot ROM) 코드가 실행됩니다. 이 단계에서 하드웨어 초기화 및 기본 설정이 수행됩니다. 부트롬은 마이크로 SD 카드의 첫 번째 파티션에서 두 번째 단계 부트로더를 찾습니다.
  2. Second stage bootloader (bootloader.bin): 부트롬이 두 번째 단계 부트로더(예: bootloader.bin)를 찾으면, 해당 부트로더를 실행합니다. 이 단계에서 추가 하드웨어 초기화 및 설정이 수행되며, 다음 단계인 CPU 펌웨어를 로드할 준비가 됩니다.
  3. CPU firmware (start.elf): 두 번째 단계 부트로더는 마이크로 SD 카드의 첫 번째 파티션에서 CPU 펌웨어(예: start.elf)를 찾아 로드합니다. 이 펌웨어는 GPU와 CPU 간의 상호작용 및 시스템 설정을 처리하며, 사용자 정의 하드웨어 설정을 위해 config.txt 파일을 읽습니다.
  4. User code (kernel.img): CPU 펌웨어가 초기화를 완료하면, 마이크로 SD 카드에서 사용자 코드(예: kernel.img)를 찾아 로드합니다. 일반적으로 이 파일은 리눅스 커널 이미지입니다. 커널 이미지가 메모리에 로드되면, CPU 펌웨어는 커널을 실행합니다.
  5. init: 커널이 실행되고 초기화 과정이 완료되면, init 프로세스가 시작됩니다. init 프로세스는 시스템의 첫 번째 사용자 수준 프로세스로, 파일 시스템 마운트, 서비스 및 데몬 실행, 로그인 프롬프트 제공 등의 작업을 처리합니다. 이 과정을 통해 Raspberry Pi는 정상적으로 부팅되며, 사용자가 원하는 작업을 수행할 수 있게 됩니다.

그렇다고 하네요..(출처 챗지피티)

 

Boot Loader

부트로더는 부팅을 위한 동작의 집합 프로그램(시스템 프로그램)

시스템 하드웨어를 초기화하고 OS 커널을 메모리에 실행하기 위한 시스템 프로그램

 

부트로더는 ROM의 0번지에 저장되어 있음

 

부트로더의 기능

:하드웨어 초기화, 운영 체제 커널 탐색, 커널 로드, 커널 실행

 

초기화 코드(initialization code)

컴퓨터 전원이 켜지거나 리셋되었을 때 첫번째로 실행되는 코드.

하드웨어 및 시스템을 사용 가능한 상태로 만들기 위해 필요한 초기 설정 및 설정 작업을 수행함.

 

1. 하드웨어 검사 및 초기화

2. 메모리 설정

3. 시스템 클럭 및 타이머 설정

4. 주변장치 및 타이머 설정

5. 운영체제 실행 준비

 

Kernel

OS의 핵심 

프로세스 관리

메모리 관리

파일 시스템 관리

장치 관리

네트워크 관리

 

Low Memory Killer: 시스템 메모리가 부족할 때 메모리를 회수하기 위해 사용되는 매커니즘

Power Management: 전력 소비를 최적화하고 전력 사용 효율성을 높이는 기술

 

 

Device Driver

운영체제와 장치간의 인터페이스를 제공하는 소프트웨어

커널의 일부임

 

디바이스는 커널에 의해 제어,관리된다. 커널 영역에 의해서만 사용된다.

커널 영역에 있는 디바이스 드라이버를 어플리케이션 영역에서 사용하려면, 시스템 콜이 필요

 

리눅스는 모든 정보를 파일로 관리한다.

파일 관리자: VFS

 

리눅스에서 디바이스 파일은 각각  고유한 major, minor number를 가짐.

major 번호: 디바이스의 종류를 식별함. 같은 major 번호를 가지면 같은 종류이며 동일한 디바이스 드라이버를 사용. 0~255, 총 256가지의 장치 사용가능.(1Byte)

minor 번호: 같은 종류의 디바이스 중에서 구체적인 디바이스 인스턴스를 구분하는 데 사용됨.(2Byte)

 

device driver type

-Character device drivers : 순차적 I/O. 키보드 스캐너, 프린터..

-Block device driver : 저장공간이 있음. 랜덤 액세스. 

-network device driver : 

728x90
반응형

'2023-1 > IoT와 임베디드 소프트웨어' 카테고리의 다른 글

Threads  (0) 2023.06.13
Device Driver 2  (0) 2023.06.13
Device Driver Concept  (0) 2023.06.13
Embedded Linux  (0) 2023.04.25
IoT and Embedded Software  (0) 2023.03.11

댓글