본문 바로가기

임베디드(embedded)/BSP(Board Support Package) 학습

툴체인(Toolchain)이란? 툴체인(Toolchain)의 설명에 앞서 툴체인의 필요 목적에 대해서 알아보자. [ 그림 1 ] Host and Target System 임베디드 시스템을 개발을 위해서는 대부분 [ 그림 1 ]처럼 호스트 시스템(Host System)과 타겟 시스템(Target System)으로 구성된다. 호스트 시스템은 실질적인 임베디드 시스템을 개발하는 환경으로, 이는 임베디드 시스템의 하드웨어의 제한적인 성능 때문에 큰 용량의 저장장치를 가지고 있지 않기 때문이다. 그래서 상대적으로 성능이 좋은 호스트 시스템을 구축하여 타겟 시스템에서 동작 가능한 프로그램을 만드는데 이것을 교차 컴파일(Cross compile)이라고 한다. 여기서 타겟 시스템이란 실질적인 임베디드 시스템이 동작되는 환경을 말한다. 툴체인(Tool.. 더보기
컴파일러(Compiler)와 인터프리터(Interperter) 컴파일러(Compiler)란 고급 언어로 작성된 프로그램을 컴퓨터에서 즉시 실행될 수 있는 형태의 목적 프로그램으로 바꾸어주는 번역 프로그램입니다. 목적 프로그램이란 프로세서(Processor)가 한 번에 한 명령씩 처리하거나 또는 실행 시킬 수 있는 기계 코드입니다. 컴파일(Compile) 과정 내에도 컴파일(Compile)과 컴파일러(Compiler)가 존재합니다. 이는 하드웨어에 종속적인 코드인 어셈블리어로 변환해주는 역할을 하는데, 전처리(Preprocessor), 컴파일(Compile), 어셈블러(Assembler), 링크(Link) 과정을 묶어서 ‘컴파일(Compile)’ 이라고 통칭하고, 이러한 번역을 해주는 프로그램을 ‘컴파일러(Complier)’ 라고 통칭할 수 있습니다. 컴파일러(Com.. 더보기
컴파일(Compile) 컴파일(Compile)이란 간단하게 프로그래머가 작성한 소스를 컴퓨터가 이해할 수 있는 기계어나 어셈블리어로 변환해주는 과정을 말합니다. 간단하게 Compile이 진행되는 과정은 아래 [ 그림 1 ]과 같습니다. [ 그림 1 ] 그림을 설명하면 단계는 아래와 같습니다. 1. 전처리기(Preprocessor)에 의한 전처리 과정2. 컴파일러(Compiler)를 통한 어셈블리어로 변환 과정3. 어셈블러(Assembler)를 통해 오브젝트 파일 생성4. 링커(Linker)를 통한 Linking(심볼 해석, 재배치 등) 과정 프로그래머가 작성하는 소스 파일은 ‘.c’ 파일입니다. 그리고 가장 처음으로 전처리기(Preprocessor)를 통해 전처리 과정을 거칩니다. 전처리 과정이란 소스파일에 다른 파일의 텍스트.. 더보기
Linux bsp에 대해서 Linux BSP는 충분히 사용할 수 있는 툴체인, 커널과 보드 특정 모듈들이 보장된다. 보드 특정 모듈들은 특정 하드웨어 레퍼런스 플랫폼을 위해 고정된 환경 설정과 함께 사용하기 위해 준비된다. Linux BSP는 다음을 포함하고 있다.1. Linux kernel and Device drivers- 리눅스 커널과 장치를 제어하기 위한 디바이스 드라이버들 2. Applications and services- 응용 프로그램과 서비스들 3. Libraries- 라이브러리들 4. GNU tools(compliers, linkers, etc.)- 컴파일러와 링커를 포함한 툴들 (툴체인) 5. Deployment mechanisms - 배치 방법 더보기
BSP(Board Support Package)란? BSP(Board Support Package)란 이름의 의미 그대로 Board를 사용할 수 있도록 하기 위한 Software 묶음이라고 보면 될 것이다. 자세히 설명하자면 운영체제를 로드하기 위한 최소한의 장치를 지원하고, 하드웨어 보드의 모든 장치를 위한 드라이버를 말한다. 몇몇의 공급자들은 루트 파일 시스템, 임베디드 시스템에서 실행하는 프로그램을 만들기 위한 툴체인 그리고 장치들을 위한 configurator를 제공한다. BSP의 구성은 일반적으로 아래와 같다. 1. Bootloader- 시스템의 하드웨어를 초기화하고 운영체제의 이미지를 RAM에 올려주는 역할을 하는 시스템 프로그램으로 하드웨어 의존성이 강하다. 2. OAL(OEM Adaption Layer)- HAL(Hardware Abstra.. 더보기
리눅스(Linux)란? 리눅스(Linux)란 컴퓨터 운영체제의 하나이며, 커널을 뜻하기도 한다.리눅스의 특징으로는 아래와 같다. 1. 유닉스 계열(clone) 운영체제2. 오픈소스로 개발3. 모노리딕 형태의 커널4. 다중 사용자, 다중 작업(멀티태스킹), 다중 스레드를 지원5. 지원되는 플랫폼의 수가 많다6. 네트워크 운영체제(NOS)= 네트워크 운영체제(Network Operationg System, NOS)는 네트워크와 네트워크 메시지(패킷 등), 트래픽과 대기열(큐)을 제어하고, 여러 명의 사용자가 파일과 같은 네트워크 리소스에 접근할 수 있게 해주며, 보안을 포함한 특정한 관리자 기능을 제공하는 소프트웨어이다. ( 출처 : 위키백과 ) 리눅스는 유닉스 계열 운영체제로서 리눅스가 유닉스 소스 코드에서 파생되지 않았지만 인.. 더보기