■임베디드 시스템의 정의■


특정한 기능을 수행하도록 설계된 내장형 컴퓨팅 시스템.


======H/W===========S/W===========

=                                                                =

=    프로세서                    응용 소프트웨어        =

=                                                                =

=    메모리 장치        +      시스템 소프트웨어     =   시스템 소프트웨어 : 함수를 쓸때 함수원형이 OS커널안에 있다.

=                                                                =

=    입출력 장치                OS 커널                  =

=                                                                =

==================================

#MCU(=MPU)


CPU와 각종 Peripheral Controller들의 결합(=>프로세서를 내장하고 있는 SoC를 말한다.)


SoC(System on Chip) : 여러 개의 반도체 부품이 하나로 집적되느 기술 및 제품, 단일 칩으로 구현. 


<구성>

1. CPU Core : ALU, CU, Register로만 구성된 CPU의 핵심

2. ALU(Arithmetic and Logical Unit) : 산술/논리 연산을 위한 장치

3. CU(Control Unit) : 기계어를 분석하고 실행하기 위해 제어 신호를 순차적으로 발생시킴

4. Register : 연산이나 기타 목적으로 사용될 저장 공간, 메모리 계층에서 가장 빠르다(Flip-Flop으로 구성)

(=>1.제어 2.임시 기억 장소)<<범용 레지스터 :GFR, 제어용 레지스터 : CPSR, 상태 레지스터 : Status>>

5. Cache : 프로세서가 최근에 액세스한 메모리의 내용을 보관, 재요철시 메모리 액세스 없이 전달

6. MMU(Memory Management Unit) : 운영체제를 위해 가상메모리 지원

(=>Virtual address와 Physical address를 연결시켜주기 위해서 매핑을 해주는 역할을 한다.)

7.Bus : 1. 공유 2. 공통된 선들의 집합


ARM Processor에서 개발환경을 구성하기 힘들기 때문에 교차 개발을 한다.

교차 개발이란 Host System(PC)에서 개발환경을 구성하고 타켓(ARM Processor) 시스템 전용의 실행 파일을 생성하여 타켓 시스템이

다운로드한다. PC에서 크로스 툴체인을 이용한다.


#컴파일

<컴파일 단계>

전처리 -> 컴파일 -> 어셈블 -> 링크 과정을 거쳐 최종적으로 실행 이미지 생성.


1.전처리

컴파일 전에 전처리기(Preprocessor)에 의해 수행된다.

헤더 내용(.h)과 define 매크로/상수를 소스파일(.c)에 복사하는 작업.

.i 형태로 임시 저장되었다가 삭제된(-E option 컴파일 전에 멈춤)


2.컴파일

C코드를 해당 Machine의 어셈블리로 번역, 코드의 에러 경고 발생, .i -> .S


3.어셈블

어셈블리 코드를 Binary형태의 기계어로 변환하는 작업

어셈블러를 통과시킨 결과물을 Object File이라고 한다.

.S ->.o

<어셈블러가 어셈블리어를 어셈블한다.>


4.링크

오브젝트 파일 단독으로는 실행될 수 없어서 여러 개의 오브젝트 파일들과 라이브러리 파일들의 모든 코드롸 데이터를 포함하여 새로운 오브젝트 생성하는데 Section 단위로 묶여져 1개의 실행 파일(.exe)이 생성된다. 




#메모리 맵

-메모리에 적재되어 실행 가능한 오브젝트 파일


오브젝트 파일은 링커에 의해 해석될 수 있도로 여러가지 섹션들로 구성


대표적 섹션들 : text(code), data(RO),data(RW),bss(ZI),HEAP,STACK .....



1
2
3
4
5
6
7
8
9
10
11
#include<stdio.h>
int g_a = 20;                //DATA(RW)
int g_b;                    //BSS
const double PI = 3.14;        //DATA(RO)
 
void Func(int x)            //STACK
{
    static int cnt;            //BSS
    static int life = 5;    //DATA(RW)
    int result = -1;        //STACK
}
cs


1. DATA(RW) : read-write 로서 초기값이 있는 전역변수

2. ZI(Zero-initialized) BSS : 초기값이 0인 전역변수

3. DATA(RO) : read-only 로서 수정이 불가능한 const 전역변수 text인 code 의미,(단, const붙은 전역변수도 포함) 








+ Recent posts