panda.jpg



안녕하세요 판다 이우영입니다.


오늘은 쉬어가는 타임입니다. ㅎㅎㅎ


디바이스 드라이버를 만들기 위해 필요한것들은 무엇이 있을까?


먼저 공부 해두어야 하는것은 무엇일까?


요런것들을 알아 보도록 하겠습니다.


1. 사전 공부!!




준비라는 말이 필요도 없는 기본중의 기본 C언어 꼭 해두셔야 합니다.


이 디바이스 드라이버 또한 C언어로 작성 되어 있습니다.


c언어는 코두를 보고 이게 무얼 하는건지 알 수 있을 정도로 해두시면 됩니다.


하지만 구조체, 포인터는 꼭 숙지 하고 넘어 가셔야 합니다.

(매우 많이 쓰여요~ 모르면 이해하기 힘듭니다 ㅎㅎ)


자 다음으로 무엇을 알고 있으면 좋을까요?


리눅스에 대한 간단한 이해? 요건 조금 필요할꺼 같습니다.


뭐니뭐니 해도 리눅스의 디바이스 드라이버를 만들기가 목표니까요 


datasheet를 보는 방법 그리고 하드웨어 까지 안다면 당신은 정말 우수한 임베디드 전문가가 될 수 있습니다.


보통 sw,hw를 나누어 시작합니다 그래서 2개의 분야를 다아는 사람이 드물죠.


하지만 임베디드는 하드웨어에 매우 밀접한 작업을 하기 때문에 하드웨어의 특성을 알면 매우 쉽게


일을 진행 할 수 있습니다. 또한 소프트웨어로 해결 못하는 문제를 하드웨어 적으로 해결 하는 경우도 많구요


그러니 양쪽다 알긴 알아야 한답니다 ㅎㅎ

(그러는 저는 하드웨어는 몰라요~)


그리고 우리는 타겟 보드를(ARM)를 사용하기 때문에 ARM에 대해서 알아야 할꺼 같습니다.


정리하면


1. C언어

2. 리눅스의 이해 및 툴 사용법

3. 하드웨어 지식

4. ARM


2. 디바이스 드라이버?




우리가 디바이스 드라이버를 공부하기 전에 확실하게 기억해야 할것이 두가지 있습니다.


바로 디바이스와 드라이버의 차이 입니다.


저도 가끔 해깔려서 적긴 하는데요


확실히 정리를 해두어야 합니다.


컴퓨터는 크게 3가지로 구성되어 있습니다.


바로 CPU, MEMORY, I/O장치


바로 디바이스가 I/O 장치를 말합니다.


컴퓨터에는 여러 I/O 장치가 있겠죠?


예를 들면 그래픽 카드, 사운드카드 등등.


같은 장치가 여러게 달린 경우도 있죠? (USB 등등)


그림1.png

( *간단한 이해를 위해 그린것이니 이해만 하시고 나중에 정확한 이해를 하세요 )


그림과 같이 OS는 CPU에 명령어를 주어 일을 수행 합니다.


그럼 OS는 장치들을 어떻게 제어를 할까요?


바로 드라이버를 통해서 제어를 합니다.


OS는 디바이스 드라이버를 통해 디바이스와 의사소통을 주고 받습니다.

(실제로는 디바이스와 직접 소통하는 것은 아니지만  디바이스와의 인터페이스 역활을 합니다.)


중요한 것은 디바이스마다 의사 소통 방법이 다르기 때문에 우리는 영어를 할 줄알아야 합니다.

(디바이스의 datasheet가 거의 영어 뿐이 없어요 ㅠㅠ)


그러면 앞으로 이 디바이스 드라이버를 간단하게 만들어보면서 이해하고


나중에는 진짜 디바이스드라이버를 만드어 보겠습니다.


그럼 다음시간에 만나요~