시스템 소프트웨어-1
- 컴퓨터공학
- 2022. 9. 21. 00:08
임베디드 시스템 : 범용의 목적이 아닌 정해진 용도에 국한된 기능을 제공해준다. 범용의 목적이 아니므로
각 시스템은 특수 목적을 가지고 제작되기 때문에 시스템을 구성하는 장치나 소프트웨어가 제한적이다.
대부분의 임베디드 시스템은 하드웨어와 소프트웨어를 병행하여 개발
임베디드용 프로세서는 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 |
이 글을 공유하기