'Engineering/System'에 해당되는 글 2건

  1. 2009/04/07 Endian 정리 (1)
  2. 2008/08/20 Watchdog Timer
Engineering/System2009/04/07 17:05

시작하기 전에

이 글은 내가 가끔은 제대로 생각하기도, 때로는 잘못생각하기도 했던 endian에 대해 확실하게 개념을 잡기위함이다. -_-
나중에 또 헷갈리면 찾아보기 위해 ㅋ

Big/Little Endian

CPU가 multi byte의 데이터를 메모리에 저장할 때 리틀 엔디안(Little Endian)과 빅 엔디안(Big Endian)의 방식이 있다. 2학년 때 어깨너머로 누구에게 잠깐 듣고나서 '으음 그렇군' 하고 넘어갔다가, 3학년 때 컴퓨터 구조수업 때 배우면서 '아하 그랬었군~!' 했던게 기억이 난다.

0x01234567 이라는 4바이트의 데이터를 메모리시작 주소 0x00에 저장한다고 하였을 때, Big/Little Endian은 아래와 같이 저장할 것이다. 간단하다 simple!

Memory Address

Data

Big Endian

Little Endian

0x00000000

0x01

0x67

0x00000001

0x23

0x45

0x00000002

0x45

0x23

0x00000003

0x67

0x01


그런데 내가 헷갈린 것은 1바이트씩 메모리에 쓸 때도 big endian이냐 little endian이냐를 따지는가, 그러지 말아야 하는가였다. 예를들면 0x01(0 0 0 0  0 0 0 1) 을 쓸 때에도 0 0 0 0 0 0 0 1인지 1 0 0 0 0 0 0 0인지가 헷갈렸었던 것이다. 너무 오버해서 생각했다고나 할까? ㅋ

endian은 multi byte를 쓸 때 어떤 순서로 쓰느냐에 따라 분기가 나뉘는 것이지 bit stream의 순서까지를 결정하는 것은 아니기 때문이다. bit stream은 Big/Little Endian에 상관없이 무조건 Big Endian이다. -_-

Intel계열 CPU는 little endian이고, 모토로라 계열은 big endian이다. 그리고 내가 업무에 쓰는 processor인 BF537역시 little endian이다. 맨날 little endian만 보다 보니 이제 요놈이 더 편한 것 같다. ㅋ

Posted by Humaneer
Engineering/System2008/08/20 20:34

Watchdog?

감시견을 의미한다. 뭔가를 감시하다가 그 뭔가가 이상하다 싶으면 짖거나 물어버리는 그런 역할말이다.
주인을 항상 감시하다가 주인이 정해진 시간에 밥을 안주면 주인을 물어버리는 그런 상팔자-_-의 개를 생각해볼 수도 있겠다.

Watchdog Timer?

프로그램 혹은 프로세스를 동작시키는 역할을 하는 녀석중에 가장 중요한 놈이 무엇이냐? 라고 한다면 답은 당연히, 'CPU'이다. 하지만 요놈이 제대로 동작하지 않는다면? 그것이 프로그래머의 실수이건 아니건 간에 말이다. 그래서 프로그래머는 Watchdog Timer(이후 WDT)에게 CPU가 너한테 일정주기로 신호를 보내주지 않거들랑 신호(시그널, 혹은 인터럽트)를 보내달라 이렇게 세팅을 한다. 고로 CPU가 뭔가 오동작을 하거나 프로그래머가 프로그래밍을 잘못하여 WDT에게 주기적인 신호가 가지 않았다면 WDT는 인터럽트를 발생시킨다.

구글링을 해보니 WDT는 다양하게 이용되는 것 같다. CPU를 감시하는 기본적인 역할 외에도 말이다.


Posted by Humaneer