리눅스14 platform driver, device [블로그 통합으로 이전해 온 자료] - 2008. 4. 30. 12:24 * platform device platform_bus_type 이라는 가상의 플랫폼 버스 상에 새로운 디바이스를 등록하는 방법 struct platform_device xxx_device = { .name = .id = .dev = xxx_device, -> struct device .num_resources = .resource = -> struct resource }; platform_device_register() platform_device_register_simple() platform_device_unregister() xxx_init() / xxx_cleanup() 에서 등록 * platform driver struc.. 2021. 2. 8. 디바이스 드라이버의 동작 [블로그 통합으로 이전해 온 자료] - 2008. 4. 29. 21:45 * 초기화 - 드라이버의 등록 - 드라이버의 동작에 필요한 내부 구조체 메모리 할당 - 여러 프로세스가 하나의 디바이스에 접근하는 경우에 필요한 사전 처리 - 주 번호에 종속된 부 번호를 관리하기 위한 사전 처리 - 하드웨어 검출 처리 및 에러 처리 - 하드웨어 초기화 - 사용 자원 등록 - 인터럽트 핸들러 등록 * 종료 - 드라이버의 해제 - 드라이버의 동작에 필요한 내부 구조체 메모리 해제 - 여러 프로세스가 하나의 디바이스에 접근하는 경우에 종료 처리 - 제거 가능한 하드웨어의 경우 제거 처리 - 사용 자원 해제 - 인터럽트 핸들러 해제 * 열기 - 여러 프로세스가 하나의 디바이스에 접근하는 경우에 필요한 사전 처리 - 하드웨.. 2021. 2. 8. Major, Minor # [블로그 통합으로 이전해 온 자료] - 2008. 4. 29. 21:11 - 테스트나 특정 플랫폼용으로 사용 가능한 Major # 60 ~ 63 120 ~ 127 240 ~ 254 - Major 10 의 사용 가능한 Minor 240 ~ 255 - character device 중 major # 10을 가지는 device의 등록 char dev - major # 10의 minor #을 가지는 디바이스는 miscdevice이라고 해서 등록하는 함수가 따로 있다. struct file_operations xxx_misc_fop = { }; struct miscdev xxx_miscdev = { .fops = &xxx_misc_fop, .minor = XXX_MINOR, .name = "xxx_misc", }.. 2021. 2. 8. DMA 처리 [블로그 통합으로 이전해 온 자료] - 2008. 4. 29. 20:58 * DMA DMA 할당/해제 int request_dma( unsigned int dma, const char *device_id ); void free_dma( unsigned int dma ); DMA를 위한 메모리 할당/해제 void *dma_alloc_coherent( struct device *dev, size_t size, dma_addr_t *dma_handle, int flags ); void *dma_free_coherent( struct device *dev, size_t size, void *cpu_addr, dma_addr_t dma_handle ); unsigned long clain_dma_lock( voi.. 2021. 2. 8. 이전 1 2 3 4 다음