본문 바로가기

PROJECT/ex347_project

LDD_Part 3-3. ADC 디바이스 드라이버 ADC (Analog to Digital Conversion) 디바이스 드라이버는 아날로그신호를 디지털 신호로 바꿔준다. 디바이스 드라이버를 짤때는 항상 봐야 하는 것이 Datasheet 와 Manual 이다. 지금 프로젝트 시에 사용한 s3c2440 soc 칩을 기준으로 어떻게 해결해 나갔는지 정리해보자. s3c2440는 Datasheet를 열어보면 Figure 16 에 ADC&Touch Screen Interface라는 제목으로 ADC에 대한 내용을 다루고 있다. 제목을 보면 알겠듯이 ADC와 Touch Screen 을 같이 사용하고 있음을 볼 수 있다. mini2440보드는 ADC를 쓰기위해서 사용되는 레지스터가 총 6개이다. ADCCON - ADC control register ADCTSC - A.. 더보기
LDD_Part 3-2. SPI 디바이스 드라이버 SPI드라이버는 이번 프로젝트에서 RF통신시에 사용할 디바이스 드라이버 이다. SPI디바이스 드라이버를 알기위해서 맨처음에는 어떻게 해야 할지 감을 잡지 못했다. Part1,2 에서 설명한 디바이스 드라이버에 대한 공부 내용으로 조금씩 감을 잡아가던중.. 아래의 사이트에서 SPI디바이스 드라이버를 사용할 수 있는 해결책을 주었다. 우선 우리가 SPI디바이스 드라이버를 사용할때는 빈트인 시킨 후에 사용 할 것이다. 빌트인이라 한다면 커널이미지 안에 디바이스 드라이버를 박아 놓겠다는 것!!! 그러므로 우리는 다시 kernel 이미지를 " make " 해야 한다... 지금 우리는 kernel 이미지를 만들때 config_mini2440_x35 configuration 파일을 .config 파일로 Copy시킨후.. 더보기
LDD_Part 3-1. GPIO 디바이스 드라이버 이번 프로젝트에서 ir 수/발광부를 이용해서 데이터를 입/출력 해야 한다. 이때 입/출력 하는 것은 gpio를 사용한 mini2440_leds.c 파일을 사용해서 출력의 기본으로 잡고, mini2440_buttons.c 파일을 사용해서 입력의 기본으로 잡아서 모듈을 만들 것이다. mini2440_leds.c 파일과 mini2440_buttons.c 파일에 주석을 달아서 올려놓았다. mini2440_buttons.c 파일의 경우에는 poll함수를 구현하고 있다. 이를 위해서는 함께 올려 놓은 " mini2440_buttons]poll 이해.doc " 문서와 함께 보면 이해가 보다 손쉬울 것이다. 위의 파일에서 leds의 경우에는 기본적인 모듈 디바이스 드라이버를 만들기 때문에 어렵지 않게 읽어 나갈 수 있.. 더보기
LDD_Part 3. 프로젝트와 디바이스 드라이버 이번 Part에서는 우리가 이번 프로젝트에서 사용할 디바이스 드라이버를 보다 자세히 들여다 볼 것이다. 이 파트를 마치고나면 모두들 우리가 가지고 있는 보드에 원하는 디바이스 드라이버를 짤 수 있으시길 바랍니다. 우선 이번 프로젝트에서 우리가 사용하게될 H/W와 디바이스 드라이버를 짝지어 보았다. ir모듈 rf모듈 3축 가속도 모듈 GPIO 드라이버 SPI 드라이버 ADC 드라이버 위의 내용을 보면 아주 간단함을 알 수 있을 것이다. 그렇다 별거 없다~ ㅋㅋ; 이제 슬슬 시작을 해 봅시다. 우선우리가 사용해야 할 핀의 주소값들은 메뉴얼과 Data Sheet에 잘 설명되어 있다. (메뉴얼과 Data Sheet는 보드와 함께 동봉되서 온 CD에 들어있다. ) Data Sheet를 열어서 목차를 살펴보면 Ch.. 더보기
LDD_Part 2. 디바이스 드라이버 도우미 이 파트는 병주형이 맡아서 정리해 주었다. Part 이름은 디바이스 드라이버 도우미라고 했으나... 정확히 말하자면 커널 기능들이다. 커널에서 지원해주는 기능들로서 그 종류에는 Linked List, Hash List, Kernel Thread, Thread helper, Work Queue, Notifier Chains등.... 이 있다. 글이 있는 주소 링크 : http://ex347.tistory.com/entry/%EC%BB%A4%EB%84%90-%EA%B8%B0%EB%8A%A5-%EC%A0%95%EB%A6%AC gpio를 사용해서 ir 드라이버를 만들때 쓰일 kernel thread와 kernel timer를 정리했던 것도 같이 올리겠다. 더보기
5/11 http://members.cox.net/ebrombaugh1/embedded/mini2440/index.html 위의 사이트의 방버버 대로 spi가 제대로 동작하는지 확인해 봤다. 그러기위해서 우선 위의 사이트에서 4.configure and compile the kernel for your hardware 에 있는 config_mini2440_t35_gpio_spi.zip 파일을 받았다. 압축을 풀면 config_mini2440_t35_gpio_spi 파일이 나오고 그 파일과 원래 리눅스 소스코으 최 상단에 있는 config_mini2440_t35 파일과 # diff config_mini2440_t35 config_mini2440_t35_gpio_spi > diff_config_t35 명령으로 두 c.. 더보기
spi 보던 사이트 http://junho85.springnote.com/pages/6088695 http://panicking.kicks-ass.org/blog/index.php?m=11&y=08&entry=entry081124-171211 http://www.linuxforums.org/forum/kernel/143805-linux-2-6-29-port-spi-driver-s3c2440.html http://blog.naver.com/PostView.nhn?blogId=ondal71&logNo=120022040830 http://blog.163.com/jammy_lee/blog/static/101195478201016112945395/ http://friendlyarm.net/forum/topic/2456 http://.. 더보기
LDD_Part 1. 디바이스 드라이버의 이해 ※ Device Driver 란? 커널과 주변 장치간에 데이터를 전달 하는 프로그램이다. 이 Device Driver 는 정의 되어 있는 인터페이스(Interface)로 커널과 연결된다. ※ Linux Device Driver 종류 L.D.D 에는 Character Device Driver Block Device Driver Network Device Driver 가 있다. ※ 어떻게 장치와 커널이 연결 되는가? LINUX에서는 “모든것을 파일로 관리한다” Board에 연결된 장치도 그 장치를 표현하는 하나의 "장치 파일(device file)" 로 관리 된다. 그리고 그 장치 파일을 사용할 수 있도록 해주는 것이 장치드라이버(Device Driver)이다. (디바이스 드라이버는 다바이스를 file로 보.. 더보기
크로스컴파일(Cross Compile) 환경 구축 크로스 컴파일 환경을 구축하는 방법은 아주 간단하다. 1. 크로스 컴파일러파일을 구한다. 2. 원하는 위치에 압축을 푼다. 3. ~/.bashrc 에 경로를 추가 시켜준다. 4. ~/.bashrc 를 적용시켜준다. 이제 자세히 그 방법을 짚어보도록 하자. 1. 컴파일러 파일을 다운받자. http://www.friendlyarm.net/downloads 위의 사이트에서 SoftWare에 linux에 ARM-Linux GCC 4.4.3 / 4.3.2 를 다운 받는다. 그러면 arm-linux-gcc-4.4.3.tgz 파일이 받아진다. 2. 원하는 위치에 압축을 푼다. cp 명령을 이용해서 arm-linux-gcc-4.4.3.tgz 파일을 원하는 디렉토리로 옮긴다. # tar zxvf arm-linux-gcc.. 더보기
Mini2440] GPIO-LED-module 만들기 GPIO핀에 LED를 달고서 그 LED가 깜빡이게 하는 디바이스 드라이버를 모듈형태로 target에 올리려고 한다. 우선 이를 위해서는 디바이스 드라이버를 모듈로 올리는 법을 알아야 한다. 그리고 LED를 깜박이는 소스코드는 gpio-led.c 파일을 보고서 만들었다. 이를 위해서 kernel source에 ctags를 걸어서 gpio 디바이스 드라이버를 만들기 위해서 필요한 함수를 선언하는 header 파일을 찾았다. 더보기
분석!!!]]]Mini2440_gpio-LED] 의 하나를 gpio 로 빼보자. 왜 이 LED가 깜빡이는 녀석은 모듈로 올라가지 않았을까? 이녀석은 built-in되서 kernel 이 init 되는 시기에 호출된다. 이것을 확인하기 위해서 우리는 타겟 보드를 컴퓨터와 nfs로 연결시킬 필요가 있다. nfs연결 방법은... http://kkangstory.tistory.com/entry/Mini2440Kernel-Source여기서 ....^^ minicom으로 직접 타겟소스를 확인해 보자~ 지금 HOST(Computer)의 "/opt/FriendlyARM/mini2440/rootfs_qtopia_qt4" 가 nfs의 root로 잡혀 있다. 여기서 한번 nfs filesystem을 보자~^^ 앞으로 /opt/FriendlyARM/mini2440/rootfs_qtopia_qt4 를 r_q.. 더보기
Mini2440_gpio-LED] 의 하나를 gpio 로 빼보자. 우선 이 작업을 하기 위해서는 우리 kernel source를 알아야 한다. 지금 우리가 건드리는 소스코드는 커널 소스안에 포한되어 있는 녀석이다. 커널안에 포함되어 있기때문에 우리가 이 소스코드를 건드린 다음에 반영시키기 위해서는.. 다시 Kernel Image 를 Make하고 그 이미지 파일을 보드에 올려야 적용이 될 것이다. (Make를 위해서는 cross compile환경을 구축해야 한다. arm-linux-gcc 버전은 4.4.3으로 한다. http://kkangstory.tistory.com/entry/59 이 링크로 따라가면 크로스컴파일 환경 구축 방법이 나와있다.) 이제 소스코드를 어떻게 바꿔 나갈 것인지 알아보도록하자. 지금 작업하는 kernel source는 보드 구입시 함께 동봉되어오.. 더보기
Mini2440]GPIO 제어하기(Data sheet읽기) GPIO를 제어하기 위해서는 DataSheet를 읽을 수 있어야 한다. Mini2440 보드의 경우 S3c2440 CPU를 사용하기 때문에 S3c2440 Datasheet를 어떻게 볼지 알아보자. 위에 첨부된 File이 바로 DataSheet이다. 파일을 열어보면 3페이지 부터 Table of Contents 가 있다. Chepter의 큰 제목 보면서 넘어가보면 Chapter 01. Product Overview Chapter 02. Programmer's Model Chapter 03. ARM Instruction Set Chapter 04. Thumb Instruction Set Chapter 05. Memory Controller Chapter 06. Nand Flash Controller Chap.. 더보기