반응형

시스템 소프트웨어-1

임베디드 시스템 : 범용의 목적이 아닌 정해진 용도에 국한된 기능을 제공해준다. 범용의 목적이 아니므로

각 시스템은 특수 목적을 가지고 제작되기 때문에 시스템을 구성하는 장치나 소프트웨어가 제한적이다.

 

대부분의 임베디드 시스템은 하드웨어와 소프트웨어를 병행하여 개발

 

임베디드용 프로세서는 PC용과 다를까? 그렇다

ARM , MIPS, StrongARM, SA1110, PPC, PXA255

실시간성을 제공하는 시스템에서는 고성능 프로세서가 필요,

이동성을 고려해 전력소모 작아야 하고, 가격도 싸고, 크기도 작아야 한다.

 

PC용 소프트웨어를 개발할 때는 개발환경 = 실행환경

(개발하는 시스템의 프로세서와 프로그램이 실행될 시스템의 프로세서가 같다)-> 네이티브 개발환경

 

임베디드 소프트웨어 개발할 때 개발환경 != 실행환경

(개발하는 시스템의 프로세서와 실행될 시스템의 프로세서가 같지 않다.) -> 크로스 개발환경

 

 

크로스 컴파일러 : 임베디드 sw 개발 시 개발환경과 다른 프로세서용 기계코드를 생성해 주는 컴파일러

크로스 개발에서 sw를 개발하는 환경->호스트 시스템, sw가 실행되는 시스템 -> 타겟 시스템

 

툴체인(tool chain) : 임베디드sw를 개발할 때 필요한 개발툴(크로스컴파일러, 크로스어셈블러, 링커, 로케이터 )

 

pc용 컴파일러 -> 개발환경의 프로세서용 바이너리 생성

크로스 컴파일러-> 개발환경과 다른 타겟 시스템의 프로세서용 바이너리 생성

 

 

 

<크로스 컴파일 과정>

test.c

-> 전처리기(타겟머신에 대해 아직 모름)

-> test.i

-> 크로스컴파일러(타겟 머신이 이해하도록)

-> test.s(타겟이 이해할 수 있는 어셈블리 언어로 제작)

-> 크로스어셈블러(타겟이 이해할 수 있는 바이너리 코드로 변환)

-> test.o

-> 링커 (오브젝트 코드를 하나로 합침)

-> 로케이터(타겟 시스템의 메모리 정보를 필요로 하며 이는 링커 스크립트 파일에 의해 제공됨)

-> test(실행파일)

 

로케이트 : 오브젝트 파일이 실행 가능한 바이너리 이미지로 변환되는 과정, 이 때 프로그램 코드와 데이터 섹션들에 실제 메모리 주소를 할당

 

임베디드 시스템에서 c프로그램이 작동하려면 초기화 작업이 필요하다

스타트업 코드(startup code) : 시스템이 c를 인식하기 전의 코드이기 때문에 어셈블리 코드로 작성되어 있으며, 인터럽트 벡터 테이블을 생성하고 메모리 검사와, c 프로그램에서 사용할 스택과 힙을 생성하고 초기화 하는 등 c프로그램이 작동하기 위한 초기화 작업을 수행한다.

 

'컴퓨터공학' 카테고리의 다른 글

시스템 소프트웨어-3  (1) 2022.09.21
시스템 소프트웨어-2  (0) 2022.09.21
IPv6 주소 할당 방식  (0) 2021.06.18
라즈베리 파이 시작해보기  (3) 2020.06.12
라즈베리 파이는 무엇일까?  (3) 2020.06.03

댓글

Designed by JB FACTORY