분류 전체보기 37

임베디드 펌웨어 실기 용어 정리

MCU (Micro Controller Unit)에 전원이 인가되었을 때 처음 실행되는 코드로 칩 초기화, 데이터 메모리 및 코드 메모리 배치 등의 MCU의 시작 과정을 실행하는 코드는? 더보기 Startup Code or BIOS or bootstrap or boot code 커널 또는 OS를 메모리에 올리는 과정에서 하드웨어를 초기화하고 커널을 압축해제 후 메모리의 적재, 제어를 OS에 넘기는 과정을 수행하는 프로그램은? 더보기 부트로더 (Boot Loader) 동적 주파수 스케일링과 동적 전압 스케일링을 이용하여 CPU와 주변 기기에 공급되는 클럭과 전압을 조절하여 전력 소모를 줄이는 기술은? 더보기 DVFS (Dynamic Voltage and Frequency Scaling) 임베디드 시스템에서..

임베디드 하드웨어 실기 용어 정리

어떤 종류의 기록 방식으로 자기 테이프에 정보를 기록할 때, 각 블록의 선두에 기록되는 2진 문자열로, 순방향 판독 시 에 동기를 취하기 위해 사용되는 것은? 더보기 프리앰블 (Preamble) 회로의 출력 값이 입력 값에 의해서만 정해지는 논리 회로는? 더보기 조합 논리 회로 bit의 code화 된 정보를 그 code의 각 bit 조합에 따라 2^n개의 출력으로 번역하는 회로는? 더보기 decoder 단위 시간당 Access 되는 메모리 수를 증가시켜 메모리의 BandWidth를 증가 시키는 방법 더보기 메모리 인터리빙 회로의 출력 값이 내부상태와 입력에 따라 정해지는 논리 회로는? 더보기 순차논리회로 AND/OR 게이트와 같은 조합 논리 회로의 집합과 프로그래머블 인터페이스를 통해 다양한 조합 로직 ..

1. 임베디드 프로그램 분석 및 설계하기

1.1 요구사항 분석 1. 요구공학 1) 요구공학 - 시스템 요구사항 문서를 생성하고 검증하고 관리하기 위하여 수행되는 구조화된 활동의 집합 - 요구공학은 크게 두 부분으로 나눌 수 있다. ㄴ 개발 단계 : 요구사항 추출, 분석, 정의, 검증. 누락 없는 요구사항 수집, 명확한 요구사항 도출 등 ㄴ 관리 단계 : 요구사항 변경 관리. 요구사항이 어떻게 설계되고 어느 프로그램에 구현되었는지 등 2) 요구공학 프로세스 단계 ① 요구사항 추출 : 문제를 이해하고 요구사항 추출 ② 요구사항 분석 : 추출된 요구사항을 분석하여 구조화하고 대안들을 결정 ③ 요구사항 정의 : 시스템이 무엇을 해야 할지를 기술. 요구사항 명세서(SRS) 작성 ④ 요구사항 검증 : 문제를 기술하고, 서로 다른 부분들과 일치하는지 여부 ..

2. 임베디드 커널 프로그래밍

2.1 시스템 콜 1. 시스템 콜 1) 시스템 콜 - 운영체제가 제공하는 서비스에 대한 프로그래밍 인터페이스 - 보통 C 또는 C++과 같은 고급 언어로 만들어지고, 직접 시스템 콜을 호출하기 보다는 고급 API를 통해 접근한다. 2) 시스템 콜의 절차 ① 유저 프로세스에서 라이브러리 (fork())를 호출한다. ② 라이브러리에서 mvl 2가 eax 레지스터에 저장되고, 0x80 인터럽트를 일으킨다. ③ Interrupt Vector Table에 0x80을 찾아가 시스템 콜 주소를 찾는다 ④ 시스템 콜에서 인덱스 값을 넣어 시스템 콜 테이블에 있는 sys_fork()를 실행 시킨다. 3) 시스템 콜 추가 절차 ① 시스템 호출 번호 할당 - (커널 소스 위치)/arch/(CPU Architecture)/i..

1. 임베디드 OS의 이해하기

1.1 커널의 구조 1. 커널 1) 커널 - 운영체제 중 항상 메모리에 올라가 있는 핵심 부분 - 운영체제의 여러 가지 기본적인 서비스를 제공 2) 커널의 디렉터리 구조 - kernel : 리눅스 커널의 제어 및 디버깅 관련 설정 - mm : 물리, 가상 메모리 관리 옵션 - FS : 가상 파일 시스템 및 각종 파일 시스템 설정 - NET : 네트워크 프로토콜 옵션 - IPC : System V IPC 지원 옵션 (공유 메모리, 세마포어, 메시지) - INIT : 부팅 시 호출되는 초기화 관련 옵션 - crypt : 암호 처리를 위한 공통 기능 - block : 블록디바이스 제어 - drivers : 디바이스 드라이버 제어 관련 옵션 - Sound : 사운드 카드 및 드라이버 관련 - arch : CPU..

3. 디바이스 드라이버 작성하기

3.1 데이터시트와 레지스터 향후 추가 3.2 디바이스 드라이버 표준 API 1. 디바이스 드라이버 작성 절차 1) 디바이스 드라이버 이름, 주번호 결정 2) 코어 함수 구현 3) 커널 연계 래퍼 작성 : 코어 함수를 커널에 등록하기 위해 리눅스 디바이스 드라이버가 참조하는 파일 오퍼레이션 구조체 (fops)에 대한 인터페이스 함수 구현 ㄴ open(), release(), read(), write(), ioctl() 인터페이스 함수 구현 ㄴ file_operations 구조체에 인터페이스 함수 등록 4) 커널에 등록 : 커널 내부 함수(register_XXXdev) 이용하여 개발한 디바이스 드라이버를 Insmod 명령을 이용하여 커널에 등록 5) 장치 파일 생성 : mknod 명령을 이용하여 디바이스 ..

2. 임베디드 이해 및 포팅하기

2.1 커널 포팅 1. 커널 포팅 1) 커널 포팅 : 커널을 특정 타겟 보드의 하드웨어 환경 및 특정 응용에 맞게 수정하는 과정 2) 커널 포팅 과정 ① 커널 소스 풀기 - 오리지널 커널을 사이트에서 다운로드 하여 압축 해제 ② 커널 패치 - 개발하는 시스템 CPU Architecture 에 맞는 core 패치 적용 - 개발 보드에 맞는 board 패치 적용 ③ 커널 Configuration - 타겟 보드에 포함된 구성요소와 기능 지원 옵션 선택 - make xconfig 또는 make menuconfig 명령어 사용 ④ 커널 컴파일 - make 툴 이용하여 커널 빌드 - make zimage 명령어 사용하여 zimage 생성 ⑤ tftp 전송 - tftp zImage kernel 명령 사용 - JTAG..

1. 펌웨어 설계, 구현 및 테스팅 하기

1.1 파일 포맷과 빌드 도구 1. ELF 포맷 1) ELF - Executable and Linkable Format의 약어로 실행파일, Object 파일 Shared 라이브러리 파일과 Core Dump 파일 구조를 정의하고 있는 표준 형식 2) ELF 포맷 구조 - ELF Header, Program Header Table, Section Header Table로 구분 할 수 있다. ① ELF Header : 전체 파일 구조 정보를 포함하는 Road Map 같은 역할 ② Program Header Table : 실행을 위해 메모리에 재배치되기 위한 정보. 세그먼트 단위로 정의됨 ③ Section Header Table : 섹션에 대한 정보를 포함. 섹션 정보를 Linking시 활용 ※ 세그먼트 : S..

3. 임베디드 시스템 주변장치 분석하기

3.1 임베디드 시스템 주변 장치 1. GPIO란 - IC Chip의 Pin을 입력과 출력 또는 특정한 기능의 수행이 모두 가능하도록 설계된 방식 - 개발자에 의해 해당 Pin 용도를 다양하게 변경하여 활용이 가능한 확장 기술을 말함 2. GPIO 제어 레지스터 종류 - GPDR (GPIO Direction Register) : 해당 핀 방향을 입 / 출력으로 설정하는 레지스터 - GPLR (GPIO Level Register) ㄴ 특정 GPIO의 입력 레벨 또는 출력 레벨을 검출 ㄴ 해당 핀의 전압 low인지 high 인지를 검출하는 Read Only 레지스터 - GPSR (GPIO Set Register) ㄴ GPIO를 출력으로 사용하는 경우 High(1)로 설정 ㄴ 0값이 설정된 비트는 이전 상태를..

2. 임베디드 시스템 성능 및 구조 분석

2.2 임베디드 시스템 최적화 1. 임베디드 시스템 프로그램 코드의 크기를 줄이는 기법 3가지는? - 압축 ㄴ H/W적 복원 : 공간 효율성을 높일 수 있으나, 복원 시간으로 인한 수행 속도는 저하됨 - 컴팩션 ㄴ Local Factoring : 입구, 출구가 동일한 기본 블록들에 존재하는 이동 가능한 동일 명령어를 기본 블록 입구, 출구로 이동시키는 방법이다. 아래 그림의 (a)에서 (b)로 변환된 부분이 Local Factoring을 수행한 후를 나타낸다. ㄴ Procedural Abstraction : 반복되는 명령어들을 하나의 함수로 구성하여 해당 함수에 대한 호출 명령어로 대치한다. 아래 그림의 (a)에서 (d)까지의 과정이 Procedural Abstraction 과정이다. # Referenc..