강좌 & 팁
글 수 2,412
2011.10.17 23:08:41 (*.119.104.193)
44421
타겟보드를 이용하여 디바이스 드라이버를 배워보자!(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)
EZ-S3C6410 보드에 커널 다운로드하기
여기까지는 falinux에서 제공해주는 커널을 올려 보았습니다.
그럼 커널을 직접 받아서 설정도 해보겠습니다.
먼저 toolchain과 커널을 다운 받습니다.
다운 받은 파일은 /home/woo/Downloads에 있습니다.
(woo는 사용자 이름 입니다 다른 사람의 경우 다른 이름 이겠죠?)
다운 받은 arm-linux-gnueabi-4.3.2.tar.gz(toolchain-크로스컴파일러)을 /로 복사 해 줍니다.
그리고 /로 이동하시고 tar -zxvf arm-linux-gnueabi-4.3.2.tar.gz 명령으로 압축을 풀어 줍니다.
cd /usr 명령으로 이동해보면 arm-generic-linux-gnueabi 폴더가 생겨 있습니다.
그럼 다음으로 커널을 컴파일 해보도록 하겠습니다.
우선 디렉토리를 하나 만들겠습니다. 저같은 경우에는 /home/woo에 device_driver 폴더를 만들어 주었습니다.
그럼 다운 받은 커널을 device_driver 폴더로 복사를 해줍니다.
그리고 device_driver 폴더로 이동해서 압축을 풀어 줍니다.
그럼 다음과 같이 linux-2.6.29-ex-s3c6410 폴더가 생겨있습니다.
그럼 먼저 보드에 맞게 설정을 해주어야 합니다.
우리는 make ezs3c6410_android_defconfig 를 해줍니다.
(arch/arm/configs 폴더안에 여러가지 설정 파일이 있습니다. 그 중 ezs3c6410_android_defconfig을 선택 한겁니다)
그리고 make 를 해주면 다음과 같이 zImage가 생성 됩니다.
완료 하셨다면 우분투 환경에 TFTP 서버, minicom, 커널, 크로스컴파일러 가 준비되셨을 겁니다.
여기에 NFS 서버만 설치 해주시면 준비 완료입니다.
vi /etc/exports 파일에 작성할 내용은 아래와 같이 작성하면 됩니다.
/nfs는 서버로 사용할 폴더 입니다. *은 접근 혀용할 IP입니다.
여기 까지 해서 디바이스 드라이버를 만들 준비가 완료 되었습니다.
다음 시간부터는 디바이스 드라이버를 하나씩 알아가 보도록 하겠습니다.
그럼 다음시간에 만나요~
빠른만남을 원하시면 http://ms-osek.org/ 여기로 찾아오세요~