인터럽트에 관한 좀 엉뚱한 질문 드립니다.

muzie의 이미지

일단 인터럽트의 정의에 대해서는 알고 있습니다.

커널소스를 조금 보니, 인터럽트 핸들러에 인터럽트 시에 불리는 함수를 등록하는 것 같더군요.
그래서 궁금합니다.

현재 임베디드 장비 부트로더에 작업을 하고 있습니다.
BLOB에 인터럽트 핸들러를 구현해야하는데,
이것을 어떻게 해야하는지 잘 모르겠습니다.

정확히는 USB에 관련된 루틴입니다만
USB가 플러그인 되면 Developer's manual상에는 ICPR에 USB관련된 레지스터의 비트값이 세팅이 됩니다.
아마도 이 비트값이 인터럽트가 들어왔다는 신호가 걸리면
인터럽트 핸들러에 등록한 함수가 불리어지는 구조라고 생각하고 있습니다.

그렇다면 만약에,

void doingA(){
 
}

라는 함수가 있을 때, 부트로더 상에서 USB가 플러그인이 되고 인터럽트가 걸려 레지스터 비트값이 세팅되면
이 사실은 누가 알며, 누가 저 doingA라는 함수를 부르게 되나요?

말이 조금 꼬였는데,
조금 쉽게 설명하자면 인터럽트가 걸릴때 그것을 받아들이는(인식하는) 주체는 그것을 어떻게 알게 되나요?

초보의 궁금증을 풀어주세요 :)

라스코니의 이미지

인터럽트가 CPU에 도달하기 전에 ICPR 등등의 인터럽트 관련 레지스터가 세팅이 됩니다.
IVT(Interrupt Vector Table)을 참조해서 CPU는 발생한 인터럽트 번호에 맞는 ISR을 호출하게 되지요.
CPU가 하는 일은 거기까지 입니다. doingA가 ISR에 등록된 함수라면 인터럽트가 발생되었을 때 CPU는 doingA를 호출해 보고 단지 이 함수에서 리턴이 될 때까지 기다립니다.

그 다음은 프로그래머의 몫이죠. 가령 ISR 함수에서 여러 인터럽트 관련 레지스터 및 기타 레지스터를 읽어 해야 할 일을 결정할 수 있죠.

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.