기존 이솝 임베디드 포럼의 지식인 서비스가 게시판 형태로 변경되었습니다.

interrupt 번호에 대해서 궁금한 것이 있어서 문의 드립니다.

제가 아는 내용은 다음과 같습니다.

processor마다 interrupt source가 여러 개 있습니다.
각각의 interrupt source마다 번호가 있습니다.
그래서, interrupt source에서 H/W적으로 발생한 interrupt를 processor가 감지를 하고,
이 후에, OS(Linux)에서는 interrupt를 처리하기 위해서 interrupt를 번호를 사용합니다.
즉…발생한 interrupt source의 번호와 일치하는 isr을 수행합니다.
이상의 내용에서 제가 잘못 알고 있는 부분은 지적해 주시면 감사하겠습니다.

일단, 위에서 설명한 저의 배경지식이 맞다고 가정하고, 제가 궁금한 것을 문의 드립니다.

위에서 interrupt 번호는 누가(또는 어디서)  어떻게 정의하는 것입니까 ?
즉…”A interrupt source는 1번이고, B interrupt source는 2번이고 하는 것”은 processor에서 H/W적으로 결정되어 있는 것인지요 ?
아니면, kernel에서 S/W적으로 정의해서 번호를 할당하는 것인지요 ?
(즉…특정 processor에 대해서, kernel porting시에 porting하는 개발자가 임의로 정하면 되는 것인지요 ?) 물론, 임의라고 해서 중복되면 당연히 안되겠지만 말입니다.

만약, porting하는 사람이 임의로 정한다면,
동일 processor라고 하더라도, C라는 사람이 정한 번호 규칙(s/w적으로 interrupt source의 각 번호 할당)과 D라는 사람이 정한 번호 규칙은 달라도 무관한지요 ?

datasheet에 각 interrupt source별로 interrupt번호가 정의되어 있습니다.
이것으로 판단한다면, H/W적으로 결정되어 있다는 것이 맞을 것 같기도 합니다.
아니면, porting하는 사람 임의 데로 S/W적으로 정의(각 source별로 번호 할당)해도 되지만,
다수의 개발자들의 혼선을 방지하고, 일관성의 유지를 위해서,
processor maker에서 임의로 번호를 할당해서, datasheet에 기술해 놓은 것인지요 ?
이 경우, 특정 kernel porting자가 datasheet에서 할당한 번호체계가 아닌,
다른 번호할당으로 kernel porting을해도 동작은 되지만, 굳이 그렇게 할 필요와 이유가 없기 때문에, 그렇게 안 하는 것이라고 판단이 됩니다만...
정말 혼돈이 되네요...

암튼...좀 횡설수설한 면이 있더라도 양해해 주시고 알려 주시면 감사하겠습니다.

고현철

2008.05.16 13:10:48
*.59.122.203

1. 대부분은 hw에서 사용되는 것을 그대로 씁니다만, software적으로 지정하는 부분도 있습니다. 이유는 main interrupt와 sub interrupt가 동시에 사용되기 때문입니다.

예를 들어 mp2530f의 경우 uart0 에 대한 interrupt가 메인에서는 하나가 뜨지만, 실제 uart쪽을 보면 인터럽트 소스가 4개입니다. 이런경우는 software적으로 지정해서 씁니다.

2. 작성자 맘대로입니다.

3. hw랑 맞추는게 가장 코딩하기 편하고 부가적인 코드가 없이 동작합니다.
하지만, chained interrupt일 경우는 chained의 경우는 software적으로 지정해서 씁니다.

김경식

2008.05.23 08:20:33
*.178.110.19

답변 감사드립니다.
List of Articles
번호 제목 글쓴이 날짜sort 조회 수
268 rtems 를 kvm으로 돌리려고 하는데 문제가 생겼습니다. dudu 2014-07-29 1264
267 Arndale Board용 linaro Kernel Build 방법? [1] Supsupi 2014-08-05 1528
266 android mediaserver 만 restart어떻게 시키나요? [1] 시안 2014-08-05 1237
265 Arndale octa (exynos 5420)보드 모듈 인스톨 관련 [1] 티모 2014-08-08 1431
264 리눅스 파일 크기가 달라요 [1] 김민욱 2014-08-12 1209
263 ARM RESET VECTOR 와 Memory remapping 헷갈려요. [8] 쁘앙쁘앙 2014-08-12 2110
262 구글 CTS 인증 문의 드릴께요... 젤리빈 4.2.2 입니다. [2] 천동이 2014-08-14 1555
261 멀티코어에서 각 코어는 모드별 스택주소를 공유하는게 맞나요. [2] 쁘앙쁘앙 2014-08-20 1291
260 Root file system [2] JinJi 2014-08-26 1265
259 com.google.android.maps.jar는 어디서 얻는 것인가요??? [2] 천동이 2014-09-02 52348
258 Exynos4412 SDIO3문의 [1] funlife 2014-09-03 1235
257 SC54412ACF-A040 과 SC54412ACD-A040 의 정확한 차이를 알고 있... [3] 혜민아빠 2014-09-05 1314
256 u-boot에서 WFE 걸어둔 secondary core들 깨우는법 아시는분(corte... [1] 쁘앙쁘앙 2014-09-06 1461
255 arm 바이너리가 실행이 안되는데요 확인좀 부탁드립니다. [1] ice179 2014-09-11 1159
254 V4L2에서 포멧설정이 여러종류가 있는데요 설정된 포멧으로 데이터를... [2] ice179 2014-09-16 1237
253 NAND bad block 관련 질문 드립니다. [3] 엉금엉금 2014-09-23 1290
252 리눅스(커널)에서 지원하는 웹캠이 따로 있는건가요? 같은소스에서도 ... [1] ice179 2014-09-24 1008
251 S5PV210 MEMCONTROL 레지스터 설정 관련 질문 [2] 김진만 2014-09-25 914
250 사용중인 SDIO(mmc)의 mode를 알 수 있는 방법이 있나요? [1] xoduddk123 2014-09-27 1263
249 /lib/libc.so.6 GLIBC_2.15 not fount가 나오는데요 libc 다른버전... [1] biokk 2014-09-30 1350

사용자 로그인