타겟보드를 이용하여 디바이스 드라이버를 배워보자!(1)



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


오늘부터는 디바이스 드라이버를 공부해보도록 하겠습니다.


준비물은 리눅스 환경 pc (vmware도 상관 없습니다)과


falinux 에서 만든 EZ-S3C6410 보드가 필요합니다.

(다른 보드는 그에 맞는 커널과 크로스 컴파일러만 바꾸어주면 됩니다.)


환경 구축은 아래 글을 보시고 준비해 주세요.


EZ-S3C6410 보드에 커널 다운로드하기 위한 준비(1)

http://forum.falinux.com/zbxe/?document_srl=555721


EZ-S3C6410 보드에 커널 다운로드하기 위한 준비(2)

http://forum.falinux.com/zbxe/?document_srl=556021


EZ-S3C6410 보드에 커널 다운로드하기 위한 준비(3)

http://forum.falinux.com/zbxe/?document_srl=556410


EZ-S3C6410 보드에 커널 다운로드하기

http://forum.falinux.com/zbxe/?document_srl=556734


여기까지는 falinux에서 제공해주는 커널을 올려 보았습니다.

그럼 커널을 직접 받아서 설정도 해보겠습니다.

먼저 toolchain과 커널을 다운 받습니다.  

6410.png

다운 받은 파일은 /home/woo/Downloads에 있습니다.
(woo는 사용자 이름 입니다 다른 사람의 경우 다른 이름 이겠죠?)

toolchain.png

다운 받은 arm-linux-gnueabi-4.3.2.tar.gz(toolchain-크로스컴파일러)을 /로 복사 해 줍니다.

그리고 /로 이동하시고 tar -zxvf arm-linux-gnueabi-4.3.2.tar.gz 명령으로 압축을 풀어 줍니다.

toolchain_ok.png

cd /usr 명령으로 이동해보면 arm-generic-linux-gnueabi 폴더가 생겨 있습니다.

그럼 다음으로 커널을 컴파일 해보도록 하겠습니다.

01.png

우선 디렉토리를 하나 만들겠습니다. 저같은 경우에는 /home/woo에 device_driver 폴더를 만들어 주었습니다.

그럼 다운 받은 커널을 device_driver 폴더로 복사를 해줍니다.

02.png
 
그리고 device_driver 폴더로 이동해서 압축을 풀어 줍니다.

그럼 다음과 같이 linux-2.6.29-ex-s3c6410 폴더가 생겨있습니다.

03.png

그럼 먼저 보드에 맞게 설정을 해주어야 합니다. 

우리는 make ezs3c6410_android_defconfig 를 해줍니다.
(arch/arm/configs 폴더안에 여러가지 설정 파일이 있습니다. 그 중 ezs3c6410_android_defconfig을 선택 한겁니다)

그리고 make 를 해주면 다음과 같이 zImage가 생성 됩니다. 

04.png


완료 하셨다면 우분투 환경에 TFTP 서버, minicom, 커널, 크로스컴파일러 가 준비되셨을 겁니다.

여기에 NFS 서버만 설치 해주시면 준비 완료입니다.

vi /etc/exports 파일에 작성할 내용은 아래와 같이 작성하면 됩니다.

etc_exports.PNG

/nfs는 서버로 사용할 폴더 입니다.  *은 접근 혀용할 IP입니다.

여기 까지 해서 디바이스 드라이버를 만들 준비가 완료 되었습니다.

다음 시간부터는 디바이스 드라이버를 하나씩 알아가 보도록 하겠습니다.

그럼 다음시간에 만나요~

빠른만남을 원하시면 http://ms-osek.org/ 여기로 찾아오세요~