ESL 연구실 활동 47

[05] 임베디드 직무강좌

컴파일 : 소스프로그램을 실제 실행이 가능한 실행파일로 변환하는 과정 Pre Processor : 소스코드를 풀어서 완전한 소스코드로 변환하는 과정 Compiler : 변환된 소스를 어셈블리어로 변환 Assembler : 어셈블리 코드를 0,1로 구성된 기계어 코드로 변환하는 과정 Linker : 변환된 코드를 라이브러리 파일로 변환하는 과정 Linker과정이 끝나면 실행이 가능한 기계 코드가 생성됨 Loader : 기계 코드를 실행하기 위해 메모리에 올라가게 하는 과정 툴체인 : 소스파일을 실행파일로 만들어내는 과정에서 필요한 도구들의 연결된 것 타겟에 따라서 다른 툴체인을 설치해줘야 한다. 편하게 압축파일로 변환해 배포한다. 깃에서 다운 가능 하드웨어 데이터시트가 있어야지만 데이터프로그램 작성 가능...

[04] 임베디드 직무강좌

# 디렉토리 u-boot : 최상위 디렉토리. Makefile, boards.cfg 등의 주요 파일을 갖고 있음. 모든 U-Boot의 빌드 동작을 실행하는 디렉토리 arch : ARM 등 프로세서 아키텍처별로 서로 다른 디렉토리를 구성하고 있으며, 각 프로세서 아키텍처에 따른 소스를 구성하는 디렉토리 board : 각 제조사별 보드 관련 소스를 구현하는 디렉토리 common : U-Boot에서 공통적으로 사용되는 소스를 구현하는 디렉토리로 U-Boot의 명령어, 환경 변수 등 일반적인 소스를 구현 drivers : gpio, i2c, pci, serial, sound, usb와 같은 외부 장치의 드라이버 fs : u-boot에서 지원하는 파일 시스템 관련 코드 lib : 모든 아키텍처와 관련된 라이브러리..

[02~03] 임베디드 직무강좌

# 임베디드 소프트웨어 특정 하드웨어의 임베디드 즉, 하드웨어에 내장되어 목적에 적합한 특정 기능을 수행하는 소프트웨어 # 부트로더 운영체제가 시스템에 로드되어 잘 동작하기 위한 사전 준비 작업을 하는 것 # 오픈소스 부트로더 GRUB arm 기반 U-BOOT # 운영체제 부트과정 전원이 켜지면 지정된 저장장치에서 기본 프로그램을 불러오고 메모리에 올려 실행함 * 부팅 디바이스의 OS는 커널을 의미한다 iROM에는 초기 코드가 포함되어 있어 전원이 들어오면 외부장치로부터 CPU적재 iROM 내부의 코드는 여러가지 부팅 방법을 제공 위 그림을 보면 Exynos-8890은 Controller,UFS,SPI,USB 부팅방법을 제공 # 동작 순서 1. 전원이 연결되면 iROM의 부트코더 수행 2. iROM 은 ..

리눅스커널강의 7~9강 (작성중)

인터럽트의 두 종류 : data structure, function (data structure 에 관한 인터럽트 먼저 . . .) # IRQ line의 상태 - IRQ_DISABLED - 라인을 완전히 끊어놓은 상태 - IRQ_WAITING - 라인 enable 상태. 하지만 아무작업도 하지 않는 상태 - IRQ_PENDING - 요청된 상태지만 커널이 대기하라는 상태 - IRQ_INPROGRESS – kernel is executing ISR --> 모든 라인마다 네가지 상태가 존재 status -> handler -> lock ->action --> per device function # do_IRQ() , handle_IR..

리눅스커널강의 5~6강

복습! 프로세스와 스레드 - 프로세스 : 부모, 자식 프로세스 처럼 그대로 같은 코드를 실행하는 형태 - 스레드 : 같은 코드를 그대로 복사하는 형태가 아닌 유용하게 복사해 사용하는 형태 # Process state – TASK_RUNNING(ready or running) – TASK_INTERRUPTIBLE(wait) – becomes runnable if signal arrives – TASK_UNINTERRUPTIBLE(wait) – not respond to signal – TASK_ZOMBIE – TASK_STOPPED : PCB만 남은 상태, parent만이 없앨 수 있음 # Timeslice 다른 (급한)프로세스에게 CPU를 뺏겨서 실행하지 못하고 남은 시간 Timeslice가 0이면 re..

리눅스커널강의 3~4강

# pid가 뜻하는 값 pid 0 : parent proces # wait, exit 시스템콜에 따른 전환 P1. 사용자의 명령어를 실행하기 위해서, fork를 통해 새로운 프로세스 생성. 부모쉘의 PCB와 쉘을 복사 (cpu가 부모쉘에 있는 상황) C1. 자식 쉘이 ready queue에서 기다리는 상태가 됨 P2. wait() system call로 부모 프로세스가 cpu를 반납하고 sleep C2. ready queue에서 생성된 자식프로세서가 기다림 C3. (부모 쉘이 sleep으로 wait하고 있을때) 자식프로세스의 코드가 실행됨 C3. 자식 코드 실행 C4. exec()를 통해 디스크에서 명령어에 해당하는 코드를 찾고..

리눅스 커널 강의 1~2강

운영체제 개요 및 정의 스킵 큰 프로그램은 무겁고 다루기 힘드므로 [커널, 쉘, 유틸리티]들로 잘게 나눈다 # 커널 - 항상 메모리에 상주 - 주요 코드는 C로 작성, 나머지는 어셈블리어(하드웨어 의존적, 빠른 속도 덕에) - 3parts [프로세스 관리 / 파일 시스템 / IO시스템] # 유틸리티 - 필요할 때만 메모리에 있다가 다시 사라짐 - 명령 # 쉘 - 커널과 유틸리티의 작업을 관리 - 키보드 입력 관리, 명령 수행 (interpreter) # 파일 - sequence of bytes # Single-user System - Windows - 보안 적음 - 보기좋은 GUI # Multi-user System - Linux - 보안 좋음 # kernel mode - 모든 메모리에 접근이 가능 - ..