Busan IT/로봇제어2015. 10. 15. 09:15

==================================Outline====================================

라즈베리파이 커널 업데이트 내용 확인

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

 

'uname -r‘을 입력하여 현재의 버전 정보를 보자. 커널이 업그레이드 된 것을 알 수 있다.

 

3.18.7-7+ --> 4.1.10-v7+

 

커널을 업데이트한 이유는 커널 프로그램을 작성하기 위해서이다.

 

커널 프로그램은 운영체제에 속한 최상위 프로그램이기 때문에 오류가나면 전원을 뽑는 것 이외에는 방법이 없다.

 

레지스터는 CPU에 따라 모양이 바뀐다.

 

//porting작업은 기존의 같은 내용을 복사해 사용하고 수정된 내용만 덮어씌운다.

 

/usr/src/linux/arch에 들어가면 CPU의 소스들이 저장되어 있다.

 

intel : ia64, x86

 

arm 디렉토리에 들어오면 mach-'제조사로 된 디렉토리들을 볼 수 있다.

 

mach-bcm2709폴더 들어가서 파일들을 살펴보자. ARM CPU를 컴파일하게 되면 해당 폴더에 있는 파일들이 동작하게 된다.

 

make프로그램은 컴파일 시 변동된 부분만 컴파일하도록 해주는 프로그램이다.

 

menuconfig 창을 띄워보자.

 

'apt-get install ncurses-dev'

 

'make menuconfig'

 



 

config파일은 해당 설정을 저장해놓은 파일들이다.

 

joinc에서 Linux 커널에서의 디바이스 드라이버 작성

 

http://www.joinc.co.kr/modules/moniwiki/wiki.php/Site/Embedded/Documents/WritingDeviceDriversInLinux

 

linux에서 커널을 프로그램을 만드는 방법은 두 가지이다.

1. 직접 커널을 건드려 만든다.

2. 모듈을 사용하여 만든다.

 

이 모듈을 device driver라고 하고 linux에 사용되는 모듈을 lkm(Linux Kernel Module)이라고 한다.

 

CPU내에는 메모리를 관리해주는 MMU(Memory Management Unit)가 필요하다.

 

커널에서 프로그램을 작성하면 실제 메모리를 사용하게 된다. 이 실제 메모리를 kernel메모리라고 한다.

 

사용자가 장치에 내리는 모든 명령어는 커널을 통해 수행된다.

 

//키보드 보안 프로그램은 키보드 후킹을 감시하는 역할을 한다.

 

... 그래서 디바이스 드라이버를 배울 필요가 있다.

 

 

kernel에 모듈을 올리는 함수는 'insmod', 모듈을 삭제하는 함수는 ‘rmmod'이다.

 

 

반응형
Posted by newind2000