Study

Linux Device Driver

슈라。 2008. 11. 24. 21:41

 

  •  /dev -> 제어.

    linux/Documentaion/devices.txt (/root/work/bsp/wenders/linux/Documentation/devices.txt) -> 예약된 디바이스 주번호등 확인.

  • $ mknod /dev/bit_test c 240 1 -> char형으로 주번호 부번호 | 주번호자리에 0넣으면 자동으로 넣어줌(배포, 다른컴에 넣을때)
  • $ dmesg -> insmod나 rmmod시 등록됫나 확인.
  • printk -> 꼭 "\n"을 넣어줄것.
  • gcc 2.95.3 -> 안정화 버전

--방화벽 off--

  • $ vim /etc/selinux/config -> disable로 변경
  • $ iptables -F ->packet filtering (회사내것만 설정하고 시작)
  • $ service ipconfig stop
  • $ setup->sys서비스->iptables 별제거, nfs[*] check

  • $ cat /proc/cpuinfo
  • $ cat /proc/kallsyms -> 커널에서 이용가능한 함수/변수
  • ko -> elf에 대한 경로? 경고? 추가되면서 o->ko로 바뀜
  • $ lsmod -> *   *   숫자(모듈 사용하고 있는 사람수)
  • @ 기존것 주석처리해두고 복사해서 쓰는 습관~!! @

  • $ gcc -o test_hello_intel test.c ->intetl용
  • $ arm-linux-gcc -o test_hello_arm test.c ->arm용

--setting-- 개발환경 구축( linux )

  • $ make menuconfig

    • dev ->NetDevSupport->Eth 10 or 100
                           DM9000 support
    • *  표시 - 자동으로 적재되서 올라감 | M표시 - 나중에 올라감 (모듈화)
  • vi /etc/exports (빈파일)

    • /root/work/bsp/wenders/rootfs_gtk   <tab>   *(rw,no_root_squash) <no enter>
  • $ exportfs -> 보드와 연결될 폴더
  • $ setup  -> system service -> NFS 되있나?
  • $ /etc/rc.d/init.d/nfs restart
  • $ service nfs restart
  • $ make WENDERS_NFS_defconfig ->make 하는폴더에서.. 보드bsp/linux/
  • $ vi .config & /CMDLINE(검색) & CONFIG_CMDLINE="root=/dev/nfs nfsroot=/root/work/bsp/wenders/rootfs_gtk ip=192.168.1.50:192.168.1.100::255.255.255.0::eth1:on console=ttyS0,38400 rw mem=128M " ->make 하는폴더에서.. 보드bsp/linux/
  • linux/arch/arm/boot/zImage -> tftpboot로 복사후 minicom
  • $ tftp zImage ->minicom에서 zImage를 램에 올림
  • $ nandwrite -z 0x80800000 0x00040000 0x00200000 -> minicom에서 램에 올린 zImage를 nand플레시에 올림
  • 디렉토리 경로등의 환경을 보드별로 파일로 만들어두면 편리함 | 터미널 열때마다 실행시켜 줘야함 | source /root/work/env/wenders_2.6 wenders_2.6

--arm용 개발환경 구축-- (module.makefile) $source ~환경설정파일을 터미널에 실행시켜둬야한다.

CC   := $(ARM_GCC)

obj-m   := no.o sy1.o sy2.o

KDIR   := $(ARM_KDIR)

all:

make -C $(KDIR) SUBDIRS=$(PWD) modules

clean:

rm -rf *.o *.ko *.mod *.cmd


  • bsp/wenders/linux/drivers/X-HYPER-IEB/key.c 등 각종 device source있음.
  • 기본 key디바이스 드라이버를 복사해고 수정해서 보드에 올려보자!
  • -T> source 환경설정파일 -> 터미널 키면 실행한다. ($ARM_ 같은 설정을 사용하기 위해)
  • cd $ARM_KDIR/drivers/X_HYPER_IEB -> 기본 DD가 있는 폴더로 이동
  • cp key.c /root/work/ldd/my_key.c -> key DD를 내가 작업하는 폴더로 복사.
  • vi /root/work/ldd/my_key.c -> major device number를 변경한다.
  • 모듈 컴파일~!
  • Tip: major num 사용중 확인 -> cat /proc/devices

 


****강의자료****

실습_BIT_DD_PXA320_1.ppt  BIT_DD_Day1_PXA320.ppt  이론_BIT_DD_PXA320_1.ppt  이론_BIT_DD_PXA320_2.ppt  이론_BIT_DD_PXA320_3.ppt

이 글은 스프링노트에서 작성되었습니다.

'Study' 카테고리의 다른 글

vim 설정  (0) 2008.11.24
Makefile  (0) 2008.11.24
Autotools  (0) 2008.11.24
device driver  (0) 2008.11.24
Boot Logo change  (0) 2008.11.23