ucOS-II Porting Os(운영체제)

2007/06/07 17:20

복사 http://blog.naver.com/induction04/90018431532

uCOS-II 포팅

1. 포팅(Porting)이란

- 리얼 타임 커널을 마이크로프로세서나 마이크로컨틀롤러에서 사용할수 있도록 하는 작업을 말한다.

2. uCOS-II를 포팅하기 위해 필요한 일반적인 조건(5가지)

- 재진입(Reentrancy)을 지원하는 코드를 생성할 수 있는 C컴파일러(선점형 커널이므로)

- C언어에서 인터럽트 비활성화, 활성화를 지원

- 인터럽트 지원및 일정한 주기로 발생하는 타이밍 인터럽트를 제공해야 한다.(주기는 초당 10회에서 100회정도)

- 프로세서 수준에서 지원하는 적정크기의 하드웨어 스택기능(수 KByte정도 크기)

- 스택포인터와 레지스터를 스택이나 메모리로 저장하고 가져올 수 있는 프로세서 명령어

 

3. uCOS-II 하드웨어/소프트웨어 구조

하드웨어(CPU, 타이머) + 소프트웨어 (uCOS-II포트, -> uCOS-II(프로세서 독립코드), uCOS-II설정(응용프로그램 의존코드), -> 응용 소프트웨어)

- uCOS-II포트 (포팅을 완료한 프로세서 의존적인 코드) : OS_CPU.H, OS_CPU_A.H, OS_CPU_C.H

- uCOS-II(프로세서 독립코드) : OS_CORE.C, OS_MBOX.C, OS_MEM.C, OS_Q.C, OS_SEM.C, OS_TASK.C, OS_TIME.C,  (uCOS_II.C, uCOS_II.H,)  

- uCOS-II설정 : OS_CFG.H, INCLUDES.H

4.포팅 작업순서

- #define 상수값을 설정(OS_CPU.H)

- 10개의 데이터 타입을 정의한다.(OS_CPU.H)

- 3개의 매크로 함수를 정의한다. (OS_CPU.H)

- 6개의 간단한 C언어 함수를 작성(OS_CPU_C.H)

- 4개의 간단한 어셈블리 함수를 작성한다.(OS_CPU_A.ASM)

 

<<<ucos-II 공식 웹사이트>>>

http://www.ucos-ii.com/

1. 원리

 

N형반도체 두조각 사이에 P형반도체 조각을 넣고,

그 P형반도체로 두 N형반도체 사이로 흐르는 전류를 조절 해보고 싶은

생각을 가진 과학자가 그렇게 해봤다고 생각한다.


         [ N형 ]                     [ P형 ]                        [ N형 ]

 

 

 

아래와 같이 접합면에 절연층이 생기고,

두개의 다이오드를 연결한 모습이 될것이다.

 


 

 

 

B에 (+) 전압을 걸고 A에 (-)를 걸면 B에서 A로 전류가 흐른다.

B에 (+) 전압을 걸고 C에 (-)를 걸면 B에서 C로 전류가 흐른다.

전류는 화살표 방향으로는 흐를 수 있기 때문이다.


 

 

 

 

B에 (-) 전압을 걸고 A에 (+)를 걸면 B에서 A로 전류가 흐르지 못한다.

B에 (-) 전압을 걸고 C에 (+)를 걸면 B에서 C로 전류가 흐르지 못한다.

당연하다. 전류는 화살표 방향으로만 흐를 수 있기 때문이다.

 

그림처럼 전자와 전공이 전극 쪽에 몰리고 절연체 층은 늘어난다.

때문에 어느쪽으로도 전류는 흐르지 않는다.


 

 

 

 

A에서 C로 전류가 흐르려 하면 A->B에서 흐름이 막힌다.

위의 경우와 동일하다.


 

 

 

C에서 A로 전류가 흐르려 하면 C->B에서 흐름이 막힌다. 

역시 위의 경우와 동일하다.


 

 

 

회로 기호와 유사하게 하기 위하여 접합체를 시계방향으로 90도 돌려 세워보자.

또한 절연층 표기는 무시 하기로 하고, 아래와 같이 전압을 걸면 전자와 전공의

위치가 그림과 같이 배치된다. 이때 P형반도체는 N형에 비해 아주 얇게한다.

                         


 

 

 

이상태에서 P형 반도체와 아래에 있는 N형반도체에 낮은 전압(약0.8V 정도)을

걸어보면 아래쪽 N형 반도체에 있는 전자들이 P형 반도체로 오다가 그 대부분이

상대적으로 더 높은 전압이 걸려 있는 위쪽 N형반도체 쪽으로 이동하고 만다.


 

 

 

이렇게 P형 반도체에서 아래쪽 N형 반도체로 흐르는 작은 전류에 비례하면서도

높은 전압으로 인한 훨씬 많은 전류가 위쪽 N형 반도체에서 아래쪽 N형 반도체로

흐르게 된다. P형 반도체의 전류가 막혀있던 문을 열어준것이다.

 

이런 구조를 NPN 트랜지스터라고 하며 배치를 바꾸면 PNP 트랜지스터가 된다.

이해하는 방법은 위와 같으며 흐름만 반대로 보면 된다.

 

이는 0.8V의 전압으로 흘려주는 작은 전류값이 10V에 의해 흐르는 큰 전류값을

제어 할 수 있게 된다. 이것을 트랜지스터 라고 한다. 이는 반도체의 저항값이

변화 한다는 의미에서 주어진것이다. (Trans:변화 + Resistor:저항 = Transistor)

 

위쪽 N형 반도체를 콜렉터(Collector),

가운데 P형 반도체를 베이스(Base),

아래쪽 N형 반도체를 에미터(Emitter) 라고한다.

 

다르게 표현하면, 진공관처럼 전류제어 작용을 한다.

진공관은 그리드에 걸어주는 전압으로 전류를 제어하고,

트랜지스트는 베이스 전류값으로 콜렉터 전류를 제어 할 수 있다.

 

 

 

2. 기호 (Symbol)

 

처음 그린 기호는 이랬을 것이다.

 


 

Emitter는 전자를 보내는 곳이란 뜻을 가지고 있고,

Base는 기초나 출발점의 의미를 가지므로 전자를 제어한다고 생각하며,

Collector는 수집의 의가 있으므로 전자들이 모이는 곳이라고 본다.(주관)

 

Vbe는 베이그와 에미터에 걸어주는 전압으로 전자의 흐름을 제어하는 전압이고,

Vce는 콜렉터와 에미터사이에 걸어주는 전압으로 실제로 일(W)을 하는 전압이다.

 

그리고 나중에 아래와 같이 바뀌었을것 것이고,


지금은 케이스 넣고 아래와 같이 쓰고 있다. PNP 트랜지스터는 에미터의

화살표 방향만 바꾸어 그리면 된다. 모든 동작은 NPN과 반대이다.

 

이 화살표 방향은 다이오드의 방향이다. 그리고 콜렉터 측의 화살표는

표시하지 않는다. 즉 화살표가 있는 곳이 에미터이다.

 


아래의 3진공관과 같이 신호를 증폭하기도 하고, 증폭된 신호일부를

다시 베이스에 넣어 (궤환:Feed Back) 발진하기도 한다.

 


출 처 : http://blog.naver.com/tksvo/150044362840

  반도체
도체와 절연체 중간의 전기적 성질을 갖는 고체

  P형 반도체
인듐(In) 또는 갈륨(Ga) 등 양전하 캐리어수를 많게하는 불순물을 도핑한 반도체로 소수의 전자, 다수의 정공(양전하)이 존재한다.

  N형 반도체
비소(As) 또는 안티몬(Sb) 등 음전하 캐리어수를 많게하는 불순물을 도핑한 반도체로 다수의 전자, 소수의 정공(양전하)이 존재한다.

  PN접합 다이오드
P형 반도체와 N형 반도체를 서로 접합시킨 것..

//////////////////////////////////// 위키백과 인용 ////////////////////////////////////

p-n접합이 처음 생성되면, N영역의 자유영역 전자들이 정공이 많은 P영역으로 확산된다. 자유 전자들이 정공과 결합한 후에는 정공은 사라지며 전자들은 더 이상 자유롭지 못하게 된다. 따라서 두 속성의 전하 캐리어들(정공과 전자)이 모두 사라지고, p-n 접합 주변 지역은 마치 부도체인 것처럼 동작한다. 이를 재결합이라고 한다. 하지만 소모층의 크기에는 한계가 있고 얼마 후에는 재결합이 끝난다. 이때 외부 전압을 다이오드 소모층에 생긴 built-in potential과 같은 극방향으로 걸어주면, 소모층은 계속해서 부도체처럼 동작하고 전류의 흐름을 막는다. 이와 반대로 built-in potential과 반대 극 방향으로 외부 전압을 걸어주면, 재결합을 다시 시작한다. 결국 p-n접합을 지나 상당한 양의 전류가 흐른다.

/////////////////////////////////////////////////////////////////////////////////////

/////////////////// 출처 : http://blog.naver.com/tksvo/150042527877 ///////////////////

P형과 N형 반도체를 서로 접합시키면 빈자리인 정공으로 전자가 들어가

최외곽 전자가 8개로 되어 전자가 이동할 수 없는 부도체 영역이 생긴다.


그렇다고 전부가 부도체로 되는 것은 아니다. 한번 부도체 층이 생기면

전자나 정공이 그 절연층을 통과 하지 못하므로 결합이 중단된다.

부도체 층을 이해하기 좋게 두껍게 그렸지만, 실제로는 미크론( μ :1/1000mm)

단위의 얇은 막 상태이므로 약간의 전압만으로도 무너진다. 실리콘으 로 만든

반도체는 약 0.6V (볼트), 게르마늄으로 만든 반도체는 0.2V(볼트)만 으로도

전자와 정공이 막(절연층)을 통과할 수 있다.


좀더 정확히 말하면, 전자와 정공이 결합한다는 것은, P형반도체 쪽은 균형상태에서

(+)인 정공이 사라졌기 때문에 점점 (-)전위를 가지게 되고, N형 반도체쪽은 (-)를

잃었기 때문에 점점(+)전위를 띠게 된다.


때문에 (+)인 정공이 (+)전위를 띠게된 N형 반도체쪽으로 가기 힘들고, (-)인 전자가

(-)전위를 띤 P형 반도체 쪽으로 가기 힘들어진다. 이 장벽을 전위장벽이라고 한다.

앞의 표현은 우선 쉽게 표현하기 위해서 절연층이라고 했다. 이 전위장벽을 넘어서

전류가 흐를려면은 0.2V ~ 0.6V의 전압이 필요하다.

 

이들 양쪽에 전극(전선을 잇기 위한 금속(도체)단자)을 달고 전압을 걸어보면

다음과 같은 현상이 생긴다.



먼저 아래와 같이 이어보면, 음양이 서로 당기는 이치에 의해 전자는 (+)극으로

정공은 (-) 극으로 끌려간다. 그 결과로 가운데의 부도체 영역만 늘어난다.

 

참고로 전자와 정공의 (-)전하와 (+)전하는 측정하기 어려울만큼 낮으므로 서로

당기지 못하고, 상대적으로 무척 높은 전지의 (+)와 (-) 쪽으로 끌려간다. 전 압이

높아질수록 절연층이 더 두터워지기 때문에 전류는 더욱 흐르지 않는다.

 

하지만 어떤 전압 이상이 되면 전체 절연층을 파손시키고 전극과 전극으로 전류가

흐르게 된다. 이 전압을 Break Down Voltage 라고 하며, 다이오드의 최대 역전압

정격이 된다.

 


 

이제 반대로 이어보면, 당기는 극성이 반대편에 있다. 물론 가까운곳에 정공은 전자가,

전자는 정공이 있지만 비교되지 않을 만큼 높은 (+)와 (-)가 있는쪽으로 끌려가게 된다.

 

저항기를 이어둔 이유는, 큰전류가 흐르는 것(합선:SHORT)을 막기위함이다. 건전지

전압이 1.5V 이고 저항값이 10 Ohm 이라면, 초기에 절연층을 넘어가기 위하여 0.6V 를

소비하고 나머지 0.9V의 힘으로 10 Ohm의 저항기를 지나게 된다.

 

전류(I) = 전압(V) / 저항(R) [A} 이므로  전류(I) = 0.9 / 10 = 0.09[A] 가 흐르게된다.

이때 저항기에서 열로 소비되는 전 력(W) 은 0.9[V] * 0.09[A] = 0.081[W]이다.

1초당 발열량은 0.24 x W [Kcal]이므로, 0.019 [Kcal] 즉, 19 [Cal] 이다.

 

같은 논리로, PN 접합 DIODE 에서 소비되는 전력은 0.6[V] * 0.09[A] = 0.054[W]이고

1초당 발열량은 0.24 x W [Kcal]이므로, 0.013 [Kcal] 즉, 13 [Cal] 이다.  결국 건전지가

소비하는 총전력은 둘을 더한 0.135 [W] 이고, 발생시킨 열량은 32 [Cal] 이다.

 


 

2극 진공관처럼 한쪽 방향으로만 전류가 흐르는 정 류기(DIODE)이다.

진공관과의 차이점은, 진공관은 높은 전압만 정류할 수 있고, PN접합 반도체

다이오드는 1V 미만의 낮은 전압부터 진공관 만큼 높은 전압도 정류할 수 있는것이다.

 

기호는 아래와 같다. 화살표 방향으로만 흐른다는 의미이다. 히터, 모타 등을 제외한

많은 전기제품은 직류를 사용한다. 당시 이 다이오드 덕분에 3극, 4극, 5극 진공과 같은

역할을 하는 전류제어용 반도체 소자만 만들면 낮은 전압으로 동작하는 제품을  만들 수

있다고 생각하고 힘내어 연구하기 시작 했을 것이다.

 


////////////////////////////////////////////////////////////////////////////////////

+ Recent posts