본문 바로가기
[Developer]/Android

Linux4Android 4th Morning

by 해피빈이 2010. 11. 11.

 

http://code.google.com/p

 각 구글에 대한 프로젝트 코드를 참고할 수 있다.

 

micro kernel - NT, Message Q

monolithic kernel - Linux

zImage - 통합형커널

자주사용하지 않는 것들을 모듈화 시킨다.

 

$ lsmod 명령어

Linux Kernel의 모듈을 볼 수 있게 해준다.

 

커널코드하고 사용카 코드는 다르다.

 

strace 명령어를 쓰면 intruction에 대한 추적을 할 수 있다.

참고로 ls 명령어를 추적할 수 있으면 커널에 대한 이해를 어느정도 하고 있다고 볼 수 있을 정도이다.

 

Linux는 모든 것을 파일로 취급한다.

단 네트워크 장치만 인터페이스 이름으로 인식을 한다.

 

libpcap -> tcpdump를 할 수 잇다.

 

http://ntop.org를 가면 pf_ring를 사용하여 대용량 패킷을 유용하게 캡처할 수 있다.

 

open ( libc.so )

1) system call number

2) return type

3) 인자의 갯수

4) 인자 type

 

/proc에서 cat devices하면

Character device와 Block device가 있다.

각 주소값은 중복이 가능하다. 영역이 다르니까.

 

/proc에서 kallsyms는 모든 symbom을 볼 수 있다.

/proc/1 로 들어가면 1번 PID에 있는 것들을 볼 수 있다.

 

커널은 ISO C99(2003)의 표준을 따라서 쓰고 있다.

cfaqs.kr.pdf

 

$ uname -r : 현재 실행중인 커널의 정보.

$ insmod : insert module.

 

모듈사이에는 의존성이 있을 수도 있다.

 

모듈의 기본 형태

초기함수 형태 static int my_init(void);

등록 매크로 함수 module_init(my_init);

라이선스 정보매크로

MODULE_LICENSE()

MODULE_AUTHOR()

MODULE_DESCRIPTION()

위의 세개는 꼭 적어주어야 한다.

 

[드라이버 추가 하는 순서]

  1. KConfig에 메뉴를 추가.
  2. Makefile 수정
  3. 모듈 소스를 작성한다.

 

아래는 예제이다.

 

커널디렉토리/driver/char/Kconfig

 스크린샷-1.png

 

그리고 이 아래는 Makefile

스크린샷-2.png

 

 그리고 이 아래는 make menuconfig 했을 때 나타나는 메뉴이다.

스크린샷.png 

 

/nfsdir/example/ 에

vi hello.c 를 하고 아래의 내용을 추가하자.

 

스크린샷-3.png 

 

그리고 테스트를 위해 Makefile을 /nfsdir/example/에 만들어주고.

vi Makefile 하고선

스크린샷-4.png 

그렇게 하고 테스트 하면 된다.

make를 하고 결과물들 생성되는지 확인하고, make clean을 한다.

 

마지막으로

--커널디렉토리/driver/char/에 아래내용의 hello.c를 추가하면 되는데. 이것은 이렇게 복사하자.--

cp /nfsdir/example/hello.c ~/aaa/android-2.~~/driver/char 엔터

cd ~/aaaa/android-2.~~/ 이동

여기에서 make clean; make;

 

만들어진 zImage는 /tftproot에  복사하고, 그담에 target을 리붓!!

(물론 그 전에 make menuconfig를 확인하자)

관련 파일인 .config를 첨부한다.

.config

 

이상.ㅋ 

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

반응형

'[Developer] > Android' 카테고리의 다른 글

Linux4Android 5th Morning  (0) 2010.11.12
Linux4Android 4th Afternoon  (0) 2010.11.11
Linux4Android 3rd Afternoon  (0) 2010.11.10
Linux4Android 3rd Morning  (0) 2010.11.10
Linux4Android 2nd Afternoon  (0) 2010.11.10

댓글