Linux/Linux_Device_Drivers
Linux Device Driver
반응형
Device driver 동작의 3가지 구성 요소
1. device driver
2. device node file
3. application
Linux의 device driver 종류
1. character device driver
2. block device driver
3. network device driver
device의 분류는
1. group info (character, block, network)
2. device number
3. port number (같은 device (type) 인데 실제 몇 번째 device인지)
/dev/ttyS0 ← terminal type serial 0
Difference between block device and character device
block device driver requires followings
- buffering layer
- synchronization method
- reordering
(block dev.는 buffering layer가 있어서 async, 가능)
Major number, Minor number
+--------+
| Driver |
+--------+
|
+---------------+---------------+
| | |
+------------+ +------------+ +------------+
| controller | | controller | | controller | ...
| Major #1 | | Major #2 | | Major #3 | <-- OS manages up to major number
+------------+ +------------+ +------------+
| |
| +-------+
| |
+----------+ +----------+
| device 1 | | device 2 | ...
| minor #1 | | minor #2 |
+----------+ +----------+
2.6 kernel 이후 부터는 major number와 minor number가 기존 각 8 bits에서 증가(16 or 18 bits)
OS 입장에서는 major number만 알면 됨 (minor의 처리는 device driver에서만 처리하면 됨)
등록 시, major number만 주게 됨. (OS에 등록 시)
init_module / cleanup_module
init와 cleanup 함수의 이름을 변경할 수 있다.
init_module(), cleanup_module <-- can be changeable but, actually back to these function name
이는 module_init()와 module_exit() macro에 의해서 가능하다. <- linux/init.h
ex.
#include <linux/module.h> // Needed by all modules
#include <linux/kernel.h>
int hello_2_init(void)
{
printk(KERN_ALERT "Hello, world 2\n");
return 0;
}
static void hello_2_exit(void)
{
printk(KERN_ALERT "Goodbye, world 2\n");
}
module_init(hello_2_init);
module_exit(hello_2_exit);
반응형
'Linux > Linux_Device_Drivers' 카테고리의 다른 글
kernel symbol (커널 심볼) 확인 (0) | 2015.05.31 |
---|---|
Linux input device driver (인풋 디바이스 드라이버) (0) | 2015.03.10 |
MTD (Memory Technology Devices) (0) | 2015.03.10 |
Linux character device driver의 정의 (캐릭터 디바이스 드라이버) (0) | 2015.03.10 |
Linux UART device driver - Layer architecture (0) | 2015.03.10 |
댓글