카테고리 보관물: Hardware information

부트로더에 대한 개념정리

– 구글 위키에서 부트로더의 정의

부트로더(boot loader, 문화어: 초기적재프로그램)란 운영 체제가 시동되기 이전에 미리 실행되면서 커널이 올바르게 시동되기 위해 필요한 모든 관련 작업을 마무리하고 최종적으로 운영 체제를 시동시키기 위한 목적을 가진 프로그램을 말한다.

 

‘부트로더’ 라는 단어의 사전적 정의입니다. 위 정의만 가지고는 잘 이해가 되지 않으시는 분들도 계실 텐데, 간단하게 설명하면 이렇습니다.

가장 먼저 컴퓨터가 켜지면 롬에 들어있는 BIOS가 로드됩니다. BIOS는 컴퓨터에 연결된 저장 매체에서 설정된 부팅 순서대로 부트로더들을 불러오게 됩니다. 이 때, 하드 디스크가 첫 번째 부팅 장치로 설정되어 있으면, BIOS는 하드 디스크의 부트로더를 로드하게 됩니다.

운영체제는 크게 세 부분으로 나뉩니다. 실제 명령어들이 구동되는 커널, 프로그램에 포함된 명령어들을 커널에 전해주는 프레임워크, 그리고 커널과 프레임워크 위에서 구동되는 UI가 있습니다.

일반적으로 ‘부팅’이라하면 커널을 로드하고, 프레임워크를 실행시킨뒤, UI를 실행하는, 운영체제를 시동하는 행위를 일컫는데요, 위의 정의에서 나타나는 것 같이 부트로더는 커널을 시동시키기 전 하드웨어들을 준비하는 역할을 합니다.

그렇다면 부트로더는 어디에 있을까요?

하드디스크의 파티션 정보는 MBR이라는 하드 디스크의 첫 섹터 속에 존재합니다. 여기서 BIOS는 파티션 테이블을 읽은 후 활성화 되어있는 파티션의 PBR을 읽어 그 데이터로 부팅하게 됩니다. 여기서 이 MBR과 PBR이 바로 1차 부트로더입니다.

여기서 잠깐, 제가 왜 ‘1차’ 부트로더라는 말을 썼을까요? 그렇다면 ‘2차’ 부트로더도 있다는 말인가요?

네, 있습니다. 바로 이렁게 생겼는데요, 여기서 GRLDR은 GRUB4DOS의 2차 부트로더입니다. 윈도우 비스타/7/8의 2차 부트로더는 BOOTMGR이고요, XP는 NTLDR입니다. 2차 부트로더는 파일의 형식으로 부팅 파티션의 루트경로에 존재합니다.

왜 2차 부트로더라는 것이 존재할까요? MBR/PBR의 최대 용량은 512바이트밖에 되지 않기 때문에 도스 같은 운영체제 정도에는 적합했지만 윈도우 같은 복잡한 운영체제의 커널을 로드할 준비를 하기에는 턱없이 모자랐습니다. 그래서 2차 부트로더를 1차 부트로더를 통해 커널을 로드하듯이 로드한뒤, 2차 부트로더를 통해 커널을 로드하는 방식을 택하게 된 것입니다.

따라서 현재 일반적으로 운영체제를 부팅시키는 대략적인 과정은 다음과 그림과 같습니다. 그렇다면 멀티부팅을 하게 되면 어떻게 될까요?

어떤 부트로더인지에 따라 조금씩 달라질 수도 있지만 우리가 사용하게될 GRUB4DOS의 멀티부팅 과정은 이렇습니다. 2차 부트로더가 로드된 후 어떤 운영체제를 부팅할 지 선택하는 화면을 띄워준 뒤, 해당 운영체제의 2차 부트로더를 로드하게 됩니다. 이러한 과정을 체인 로딩 (Chainloading) 이라고 합니다.

 

즉, 부트로더의 역할은 !

– 임베디드 보드의 전원을 켰을 때, 플래시 메모리(ROM)에서 시작되는 시스템 소프트웨어로서 하드웨어를 초기화 시켜 주고, 커널을 메모리(RAM)에 적재(복사)시켜서 사용자 명령 처리를 준비하는 역할을 한다.

즉, 부트로더에 의해서 임베디드 보드가 기동(부팅)된다.  부트로더는 직렬통신, 인터럽트, 타이머, 콘솔, 메모리, 각종 입출력장치 등을 점검하여 실행 가능 상태로 만들어 준다. 임베디드 보드의 하드웨어 구성과 부트로더는 서로 밀접한 관계이며, 임베디드 보드 제작사에 의해서 부트로더가 보통 제공이 된다.
일반적으로 임베디드 보드 제작사에서 제공하는 부트로더를 플래시 메모리에 그대로 적재시켜 사용해도 되지만, 임베디드 보드의 하드웨어 구성과 내부 동작방식을 이해하고 응용하고자 할 때는 부트로더 소스코드를 분석해야 한다. 특히, 새롭게 임베디드 보드를 제작하고자 한다면 부트로더 이해와 코딩은 필수적이다.

 

출처 – http://diginuri.tistory.com/7

http://www.embeddedworld.co.kr/atl/view.asp?a_id=4912

Advertisements

Level Shift에 대한 설명!

먼저 FET의 동작원리를 잘 모른다면 – http://blog.skhynix.com/m/post/941 참조하세요.

FET의 동작원리를 이해하시고 보시는게 좋습니다.

동작원리 

1. 간단히 설명드리자면, FET에(Gate) 3.3V가 걸리면서 DVR_TX_5V와 AU_RX0가 FET으로 몰리게되고, 몰리게 되면서 3.3V는 Drain방향인 AU_RX0로 흐르게 됩니다.

2. 반대로, FET에 5V가 걸리면, DVR_TX_5V와 AU_RX0(3.3V)가 FET으로 몰리게되면서 5V가 Drain인 DVR_RX_5V로 흐르게 됩니다.

사용이유

이걸 사용하는 이유는, 5V를 사용하는 Device와 3.3V를 사용하는 Device가 다를 경우에 사용하게 됩니다.

하나의 Device는 5V동작하고 또 하나의 Device는 3.3V로 동작하는데, 둘다 3.3V를 걸어준다면 ! 하나의 Device는 제대로 동작하겠지만, 5V의 Device는 전압이 부족해서 동작을 안하겠지요?

반대로, 5V를 걸어주면 5V Device는 제대로 동작하겠지만  3.3V Device는 반대로 전압이 Over되서 고장나게 되겠죠?

그래서 이렇게 맞는 전압에 맞춰주기 위해서 Level Shift를 사용합니다.

Transformer 이란.

// // 강좌게시판 – [하드웨어] 10. 변압기(Transformer)에 대해서// //

앞에서 Inductor에 대해 정리할 때 문득 코일이라고 하는 것을 가장 흔하게 볼 수 있는 부분이

바로 변압기에 있는 코일이라는 것이 생각났습니다.

그래서 이번엔 변압기(Transformer)라는 놈에 대해 살짝 정리해 볼까 합니다.

예전에 친구가 저에게 했던 말이 생각나네요..

친구 : 야~ 너희 집에 도란스 있냐?

나   : 도란스가 모냐? -_-;

친구 : 아 도란스 몰라? 변압기~~~

나   : 왜 그게 도란스냐~-.- 변압기지~!

그게 트랜스를 일본말로 도란스~도란스~라 하는데.. 어른들이 많이 쓰는 말이죠~ 도라버리겠으~ㅡㅡㅋ

사실 말로 듣고도 도란스가 변압기인지 첨 알았드랬죠..;;(일본어 쓰지 맙시다요~)

우리가 생활에서 AC110V -> AC220V 또는 AC220V -> AC110V로 만들때 변압기를 사용하지요~

물론 요즘은 대부분의 제품이 AC 220V로 나오고.. 실내의 단자도 대부분 220V 용이니 그렇게 할수밖에 없지요~

그래도 제가 초등학교때부터 고등학교때까지 살던 집에는 110V단자가 많이 있었습니다.

솔직히 옆나라 일본같은 경우도 아직 110V를 사용하고 있지요~ 다른 나라들도 220V를 사용하지 않는 나라가 많습니다요~

이제 각설하고 본론으로 들어갈까요~~

변압기의 원리는 일단 페러데이의 법칙(Faraday’s law -> 전 day라길래 무슨 날인줄 알았습니다..-.-)을 기반으로 합니다.

그냥 사전적인 의미로 말하면

자기적으로 결합되어있는 두개의 코일이 있을 때,한 코일의 전류가 변화하면 다른 코일에 기전력이 발생하여 유도됨.

이라는 어려운 말로 되어있습니다.. 아놔 당췌 뭔소린지..-_-;

그림으로 알기쉽게 설명해보죠~

trans1.jpg

본래 위와 같이 DC에서는 변압기를 사용하지 않는 것이 원칙이지만 꼭 사용하지 말라는 법은 없지요~

암튼 일단 설명을 해보도록 해요~

위와 같은 회로가 있고.. 각 코일은 철심에 위의 모양과 같이 감겨져 있어요~

이 때 각각의 코일이 감겨진 방향을 잘 보시면 서로 반대방향으로 감겨져 있다는 것에 주의해주셔야 합니다!!

동작 순서를 볼까요~

1) 스위치을 닫으면 왼쪽의 코일에 I1이 흐르게 되고, 이는 코일에 전류가 흐르지 않다가 흐르게 되는 것이니까 전류에 변화가생기게 되지요~

2) 이는 전류가 흐르니까 자기장을 만들게 되어 Mutual flux(상호자속)에 변화가 일어나고 자속은 위의 그림과 같이 시계   방향으로 향하게 됩니다.

3) 근데 이때 우리가 전에 배웠던 것과 같이 갑자기 자기장의 방향이 바뀌려 하니까 그에 반대되는 힘인 역기전력이 발생   하게 되요~(렌츠의 법칙)

물론 이 역기전력은 I1에 대해 반대 방향으로 I1의 흐름을 방해하죠..하지만.. 완전히 막아버릴만큼은 아니에요~~

4) 이런 자속의 변화에 따라 2차측의 코일에도 자속의 변화가 생기게 됩니다. 이는 마치 우리가 코일안에 자석을 밀어넣는 것과 같은 원리가 되구요..(코일안에 자석을 휙~하고 넣어주면 순간 전류가 흐른다는 것 알고 계시죠?)

5) 코일에 자석이 휙~하고 들어오는 것으로 인해 자기장의 변화가 생기니까 여기에서도 역시 역기전력이 생기게 되요~

즉, 이런 역기전력으로 2차측 코일에 전류가 흐르게 된다 이거죠~(위 그림의 방향에 주의하세요~)

바로 이것이 전자기 유도현상이라는 것이죠~

근데 여기서 주의할 것이 이건 DC이다 보니까 전류가 변화하는 시점(flux가 변화)에만 전류가 흐르게 된다는 거에요~

스위치를 스위치가 열리고 닫치는 순간에 전류가 증가하고 감소하게 되니까 이런 때에만 전자기 유도 현상이 일어난다는 것이죠~

그래서 본래에는 DC에서 사용하지 않고 AC에서 사용하는 거지요~

위와 같이 DC로 사용할때에는 2차측의 부하전에 Diode를 달아주어야 하겠죠~

참고적으로~

실제 Fly back Convertor와 같은 회로에서는 스위칭 동작을 TR이나 FET로 해주어 Capacitor를 충전하게 하는 용도로도 사용되요~

또한 중요한 포인트는 1차측 코일의 전압과 전달되는 2차측 코일의 전압의 비는 코일을 감은수인 권선수(N1과 N2)의 비와 상응한다는 것이죠. 즉, 유기전압의 비율이 권수비율과 같다는 말이 되는데.. 사실 이것은 이상적일 때입니다.

왜냐하면 철심에 의해 누설되는 자속이 있기 때문이에요~~

출처 – http://j102.net/3578

PCB 패턴 굵기 전류

PCB패턴 두께 계산기
http://cafe.naver.com/circuitsmanual.cafe?iframe_url=/ArticleRead.nhn%3Farticleid=4313

계산기 링크
http://pcb.codns.com:88/v16/tracewidth_cal.htm

* FPCB 패턴폭에 따른 허용전류 계산
통상 pcb lay를 할때 기준은 1 oz(35um)에서 1mm 에대해 1A정도로 생각합니다. 좀더 정확하게 표현하자면
R = 0.017 * L / W * t
R : 저항값
L : 패턴 길이 mm
W : 패턴 폭 mm
t : 동박 두께
이렇게 되죠. 가령 1oz에 대해 1mm 폭에서 10mm길이가 되면 저항값은 6mΩ 이 됩니다.

주변온도와도 관계되지만 패턴에 따른 전압강하에도 영향을 미칩니다. 전류가 그리 많이 흐르지 않는 회로에서도 gnd패턴을 넓게 까는 이유는 기준전압의 안정도를 위한 것이라 할수 있죠.

* PCB원판 1oz가 32um이 되는 이유
저는 1oz가 35um라고 알고 있는데요.
일단 제가알고 있는 35um기준으로 설명해 보겠습니다.
동박의 두께가 1oz라 함은 가로 1ft(피트) 세로 1ft의 원판에 동박을 일정 두께 높이로 깔았을때의
두께를 말하는겁니다.
즉, 가로x세로가 1평방ft일때 1oz.의 동박을 입히면 두께는 0.035mm가 된다는 거지요.
계산은 아래와 같습니다.
부피 = 무게 / 밀도
= 1oz / (8.92g/cm^3)
= 28.3496g / (8.92g/cm^3)
= 3.1782cm^3
자, 이값을 기준으로 1평방ft일때 높이를 구해보면 되겠죠?
1ft = 30.48cm
3.1782cm^3 = 30.48cm × 30.48cm × 두께cm
두께 = 3.1782 / (30.48^2)
= 0.00342cm = 0.0342mm = 34.2um
거의 35um죠?
아무래도 계산중에 이것 저것 버린놈들이 오차를 발생시킨듯 합니다. ^^

출처 – http://orasman.tistory.com/90

크리스탈[X-TAL]과 오실레이터[OSC] 차이

크리스탈(X-TAL)은 수동 발진자고 오실레이터(OSC)는 능동 발진자이다.

오실레이터는 발진 회로가 내장되어 있으므로주변 회로가 간단하지만, 크리스탈은 발진 회로를 구성해야 하고 특히 수십Mhz 이상인 경우는 overtone 발진을 해야 한다.

그러므로 판단 기준은

1.X-TAL 발진 회로가 내장된 IC를 사용하는 경우는 X-TAL을 사용한다.

2. 정밀한 주파수가 필요할 때 – 예를 들어 주파수 카운터, PLL, TIMER 등에 사용하는 경우는 X-TAL을 사용하고 콘덴서 대신 트리머를 사용하여 주파수 미세 조정을가능하게 한다.

3. 대량 생산인 경우는 COST면에서 아무래도 X-TAL이 유리하므로 X-TAL + 74HC04 등으로 발진 회로를 구성하는 것이 OSC보다 LOW COST가 된다.

그 외의 경우라면 OSC를 사용하면 된다.

1. 발진회로를 꾸밀 자신이 없는 경우

2. 가격보다 신뢰성을 원할 때

3. 수십Mhz 이상의 발진 주파수가 필요할 때

서로의 장단점은 있는데
오실레이터는 주변 회로가 필요 없고, 꼽아 사용하면 되므로 매우 편리하지만 가격이 다소 높고, 주파수를 조정할 수 없다. 반면 크리스탈은 발진 회로가 필요한 대신 저렴하고, 트리머를 사용하여 미세한 주파수 조정이 가능하다.

이런 면에서 정확한 주파수를 맞추는 것이 필요한 부분은 오실레이터보다 크리스탈에 트리머를 사용하는 경우가 많다.물론 항온조 내장형 오실레이터의 경우는 매우 정밀하고, 주변 온도에 영향을 받지 않는 정확한 주파수를 발생시킨다. 물론 가격은 매우 비싸다.

crystal은 두께 진동에 의해 주파수가 발생한다.따라서 두께가 얇아짐에 따라 주파수가 증가한다. 이러한 crystal이 발생하는 주파수는 fund, 3rd, 5rd….와 같은 주파수 대역을 가지고 있는데, 이는 어떤 주파수를 이용하느냐에 따라 달라진다.
예를 들어 20MHz를 발생하는 두께를 가진 crystal의 경우는 사실상 20, 60, 100MHz 대역의 주파수를 발생하고 있는 것이다. 여기에서 20MHz를 이용하면 fund이고 60MHz를 이용하면 3rd가 되는 것이다.
가장 안정적으로 발진을 할 수 있는 주파수는 fund를 이용한 주파수 이지만 두께 진동을 하는 crystal은 주파수가 높아지면 두께가 얇아져 가공 및 제작하기가 힘들어진다. (fund 고주파수가 가격이 높은 이유가 여기에 있다.)

이와 같은 이유로 두께는 fund 두께와 동일하면서 주파수는 3배나 높은 3rd 세력을 이용하여 crystal을 만든다. 현재는 연마 및 가공 기술이 발달하여 3rd라 할 지라도 안정적으로 발진을 할 수 있으며(물론 fund 비해 약간은 떨어지지만)사용할 때는 주변의 발진 회로와 안정성, 가격적인 측면을 고려하여알맞는 crystal spec을 정할 수 있다.

발진회로를 만들때 크리스탈은 다른 소자등이 필요하고오실레이터는 그 자체로 모든 발진회로가 구성되어있다.
전원만 넣어주면 된다.

1. 오실레이터 핀 구성 및 구조

1pin – 종류마다 다른긴 한데,,, 인에이블 디스에이블로 또는 사용안함

2pin – GND

3pin – 출력

4pin – VCC

오실레이터 네핀중 세핀이 사용됩니다.

일반 IC를 보듯이 점이 있는곳을 1번핀이라 두고

4번핀에 전원 2번핀에 GND를 연결하면 3번핀에서 클럭이 나옵니다.

OSC 제조업체 스펙 [신형전자 http://www.shinhyung.net/pro02.htm]

2. 크리스탈 핀 구성도

1pin – 발진회로가 없으멵 74hc04 입력 또는 출력에 연결

2pin – 1pin 이 74hc04입력에 연결했으면 2pin 은 출력에 연결하고
출력에 연결했으면 입력에 연결한다.(크리스탈은 1,2 구분은 없습니다)

% mcu 와 같이 발진회로가 내장되었는 경우 특별히 74hc04와 같은 ic 는 사용할 필요는 없습니다.

그냥 단자에 연결하시고 캐패시터등을달아서 사용하시면 됩니다.

크리스탈(X-TAL)과 오실레이터(OSC)는 모두 수정편을 이용한 발진 소자이다. 다만 크리스탈은 수정편 자체이고, 오실레이터는 발진 회로를 내장하여 전원만 넣어주면 파형이 나오도록 만든 것이다.