RASPBERRYPI

포스트: 33|조회수: 0|ORGANIZATION
Items

Posts

33 posts

[라즈베리파이] Soft IRQ 서비스 및 서비스 핸들러 등록(디버깅)

Guillermo Austin Kim|2018년 7월 4일

# 인터럽트 후반부 처리1 IRQ Thread(threaded IRQ) 란 2. 인터럽트 후반부 처리(Bottom Half) 소개3. IRQ Thread는 언제 생성할까?[1] 4. IRQ Thread는 언제 생성할까?[2] 5. ksoftirqd 쓰레드란6. Soft IRQ 소개7. Soft IRQ 서비스 및 서비스 핸들러 등록(코드 분석)8. Soft IRQ 서비스 및 서비스 핸들러 등록(디버깅) 라즈베리파이에서 동작 확인라즈베리안에서 Soft IRQ 등록하는지 알려면 어떻게 해야 할까요? 다음 패치를 적용 후 라즈베리파이를 실행하면 됩니다.diff --git a/kernel/softirq.c b/kernel/softirq.cindex 3f3fbc230..b0e75e8d0 100644--- a

[라즈베리파이] Soft IRQ 소개

[라즈베리파이] Soft IRQ 소개

Guillermo Austin Kim|2018년 6월 28일

Soft IRQ는 리눅스 커널 시스템 핵심 기능 중 하나입니다. 리눅스 커널의 타이머, 스케쥴링은 물론 네트워크 시스템과 연관돼 있죠. 그만큼 Soft IRQ는 구조가 복잡해서 전체적인 큰 그림을 그리며 개념을 익히기 힘듭니다. 하지만 Soft IRQ 핵심 개념은 뭐니해도 인터럽트 후반부 처리라고 할 수 있습니다. 그래서 이번 절에서는 Soft IRQ를 인터럽트 후반부 처리 중심으로 알아볼 예정입니다. 이 개념을 정확히 익힌 다음 Soft IRQ에서 프로세스, 타이머 혹은 네트워크 시스템을 어떻게 처리하는지 알아보는 것이 좋습니다. Soft IRQ에 대해 알아보기 전에 우선 Soft IRQ를 왜 알아야 하는지 생각해 봅시다.1. 리눅스 커널 입문자를 벗어나 중급 수준 개발자가 되려면 Soft IR

[라즈베리파이] 인터럽트 핸들러 등록(2) - #CS

Guillermo Austin Kim|2018년 5월 25일

[라즈베리파이] 인터럽트 핸들러 등록(1) - #CShttp://rousalome.egloos.com/9976901에서 계속 ... 이번에는 다른 코드를 입력해서 인터럽트 핸들러와 인터럽트 디스크립터에 대해 알아볼게요. 다음 패치는 인터럽트 핸들러를 등록한 후 바로 해당 인터럽트 번호로 인터럽트 디스크립터를 커널 함수로 읽어와 인터럽트 설정 정보를 출력합니다. 제대로 인터럽트 핸들러를 등록했는지 점검하고 싶을 때 활용하면 좋은 코드입니다. 파라미터가 인터럽트 번호이므로 인터럽트 번호만 대입하면 다른 함수에서도 호출할 수 있죠. 이제부터 코드를 어떻게 작성했는지 함께 살펴볼까요? 우선 dwc_otg_driver_probe 함수 위에 다음 코드를 입력합니다.1 static void interrupt_de

[라즈베리파이] 인터럽트 핸들러 등록(1) - #CS

Guillermo Austin Kim|2018년 5월 22일

인터럽트 핸들러를 등록하는 처리 과정을 배우기 전에 우선 핸들러란 단어의 의미를 알 필요가 있습니다. 보통 핸들러는 동적으로 바뀌는 액션을 처리하기 위한 용도로 호출합니다. 그래서 핸들러는 함수 포인터로 등록해서 처리하는 경우가 대부분입니다. 만약 어떤 시스템에 인터럽트를 36개로 설계했으면 36개의 if else 문으로 인터럽트 핸들러를 호출하면 어떻게 될까요? 만약 다른 시스템에서 40개면요? 참 리눅스 커널 코드를 유지 보수하기 어렵겠죠. 그래서 인터럽트 핸들러는 함수 포인터로 등록합니다. 인터럽트 핸들러는 해당 인터럽트를 처리하기 위한 함수들이며 보통 인터럽트 종류만큼 인터럽트 핸들러 함수들이 있습니다. 인터럽트 핸들러 등록 시 기본 파라미터해당 인터럽트가 발생하면 해당 인터럽트 핸들러 함수가 호출