본문 바로가기
코스웨어/15년 스마트컨트롤러

20151014 남수진 라즈베리파이 디바이스 드라이브

by 알 수 없는 사용자 2015. 10. 14.
728x90
반응형

 

  • 왜 리눅스 업데이트를 했나
      • 커널 안에서 프로그래밍 하기 위해서 했음
      • 우리가 커널을 직접 손보지는 않는다
        • 기존의 소스를 복사해서 수정한다(= 포팅)

※ 리눅스 커널 안에서 만든 프로그램 실행 중 에러가 나면 리눅스가 먹통이 된다
=> 응용 프로그램과 달리 커널이 처리해줄 수 없으로

  • 라즈베리 파이의 /usr/src/linux/ 폴더에서 커널 프로그래밍에 사용할 기본 소스파일들을 찾을 수 있다
      • 우리가 사용할 디렉토리 경로
        • /usr/src/linux/arch/mach-bcm2709
      • 커널에서 프로그램을 짜고 build할 때 해당 디렉토리 내부의 내용을 참조
      • 같은 리눅스라도 어떤 CPU를 사용하느냐에 따라 컴파일에 필요한 소스파일이 달라짐
        • 필요 소스는 linux/arch/ 폴더에 칩 별로 분류되어 저장되어있다

ImageImage2Image3

 

  • 분할 컴파일
      • 소스를 여러개로 분할하여 각각을 컴파일 후, 마지막에 링크하여 하나의 실행파일을 만드는 방식
      • 컴파일 시간을 단축시킬 수 있다
        • 소스 중 일부만 수정할 경우. 수정한 파일만 새로 컴파일하고 링크만 다시 한다
      • make
        • 지능적이고 선택적인 컴파일을 도와준다
        • obj 파일이 없거나 소스파일(.c)이 수정될 경우만 컴파일함
          • .c파일 마지막 수정시간이 .o 파일의 수정시간보다 더 뒤이면 재컴파일

 

  • .config 파일
      • 컴파일을 위해 선택한 정보들을 저장함

image

 

  • make menuconfig
      • /usr/src/linux 경로에서 아래 명령 실행
      • apt-get install ncurses-dev
        make menuconfig

Image4

image

 

----------------------------------------------------------------------------------------------------------------------

 

  • 커널 컴파일 프로그램의 종류
    1. 직접 커널을 수정하는 프로그램
    2. 커널형 모듈

 

  • 커널형 모듈
        • 모듈을 추가할 수 있는 커널
          • 모듈: 커널에 부가기능을 부착시키는 것
            • 디바이스 드라이버 모듈(ddm), 리눅스 커널 모듈(lkm)이라 부름
            • 윈도우의 경우에는 wdm(윈도우 드라이버 모듈)이라고 부른다
        • 커널에서 떨어진 모듈은 모듈 프로그램이라 부름
        • 재부팅을 안해도 커널에 기능을 추가하여 실행시킬 수 있다

image

 

  • 응용 프로그램에서 사용하는 메모리는 OS에서 관리한다
      • app이 활용하는 메모리를 할당해 주는 것은 OS
      • app의 메모리 주소는 OS가 할당해준 가상 주소(유저 어드레스)
        • app의 가상 주소를 실제 메모리 주소로 mapping할 때 MMU가 개입
      • MMU(Memory Management Unit)
        • CPU 내부의 메모리 관리 장치(HW)
      • 커널 프로그램은 MMU 개입 없이 실제 주소를 다룰 수 있다
        • 이때의 실제 주소를 커널 어드레스라고 한다

 

  • 커널이 장치 접근에 대한 전권을 가지고 있음
      • 응용 프로그램이 저수준으로 HDD의 파일을 읽고 쓸 때 kernel이 중간에서 중개역할을 한다
      • 응용 프로그램이 파일을 읽고 쓰기위해 커널로 들어가는 입구가 커널의 모듈(접근할 HDD를 위한 모듈)
      • 응용 프로그램에서 장치에 접근 = 장치 드라이버(SW)에 접근

 

  • 커널에 키보드에 대한 모듈을 심어서 키보드 입력정보의 이동 경로를 제어할 수 있다(키보드 후킹)
        • 키보드 입력 정보를 훔쳐올 수 있음
        • 키보드 보안 프로그램은 키보드 후킹 모듈을 찾는 백신

 

  • 조인 C의 표

Image5

 

----------------------------------------------------------------------------------------------------------------------

image

image

image

728x90