EzDoum

찾기
처음으로 | 찾기 | 아카이브 | 글 올리기 | 링크 | 자료실 | 통계 | 연락처 | 자유게시판
이지도움 특집
전체보기
네트워크
TI OMAP35x
TI DaVinci
Analog Blackfin
RobotWar2005
임베디드!
캐쉬의 모든것
메모리 할당 알고리즘
CPU 파이프라이닝
자료구조(Tree)
금융

Login
이름

암호

기억하기


사용자 등록

현재 접속중인 등록 사용자는 0명, 익명 사용자는 7명 입니다.
전체 등록 사용자: 751명

마지막 답장
·libcurl + fuse 조합으로 되는게 많네. (1)
·Linux Ftrace에 관해 (3)
·Android MTP ( Media Transfer Protocol ) (1)
·Lighttpd에 인증을 digest 사용시 IE 오동작 문제? (1)
·Dtrace에 관해 (1)

최근글
·OpenSSL and multi-threads (0)
·ARM 환경에서 OpenCL 사용 (0)
·IoT용 WIFI 모듈 비교 ( MCU ) 클래스 (0)
·Glances - 리눅스 여러 가지 항목을 한 화면에서 모니터링 (0)
·plugin 방식의 로그 분석기 (0)

뜨거운 감자
·나는 인터렉티브한 환경에서 역어셈블 한다. (12)
·GNU REGEX (정규표현식) 프로그래밍 강좌 (7)
·SoCRobotWar 2005 - 신입생 기초 교육자료 (7)
·ASP.NET의 데이터 그리드와 사용자 컨트롤 (7)
·DHTML Editing Control (7)

가장 많이 읽은 글
·[Cache] 2-way Set-Associative 방식이란 무엇일까? (2)
·멀티쓰레드(Pthread) 프로그래밍
·GNU REGEX (정규표현식) 프로그래밍 강좌 (7)
·Sorting Algorithm Animation (2)
·SoCRobotWar 2005 - 신입생 기초 교육자료 (7)

임베디드! - 엣지트리거, 레벨트리거 인터럽트
글쓴이: EzDoum 글쓴날: 2004년 07월 19일 오후 05:41
하드웨어



[성남군] 님의 말:
네... 에지트리거 와 레벨 트리거 인터럽트의
장단점이 뭐가 있을까요
[bugiiim] 님의 말::
네...
[성남군] 님의 말:
제가 책을 하나 보고 있는데
퀴즈로 이런 문제가 나왔는데.. 잘 모르겠습니다.
[bugiiim] 님의 말::
레벨 트리거는 반응이 느린 쪽에 좀 쓰이면 좋다고 생각합니다.
예를 들어서
[성남군] 님의 말:

[bugiiim] 님의 말::
동시에 여러개의 인터럽트가 뜨는데....
이걸 제대로 된 인터럽트 컨트롤러가 없다면....
에지만 뜨고 떨어져 버리면 놓칠 가능성이 있겠죠.
[성남군] 님의 말:

[bugiiim] 님의 말::
레벨은 CPU 쪽에서 떨어뜨려주는게 보통이니까... ISR 에서 처리하고 떨어뜨려주면 될거구요.
[성남군] 님의 말:
레벨은 인터럽트를 요청한 장치에서 떨어 뜨리지 않나요..
[bugiiim] 님의 말::
그러면 높은 순위 ISR 중에 처리 못한 것도 어느정도 커버되리라 봅니다.
[성남군] 님의 말:
high있다가..
cpu는 low로ㅓ 떨어지면
인터럽트를 그만 두는거 아닌가요?
[bugiiim] 님의 말::
그러니까... active 상태...
active 상태가 low 인지 high 인지는 칩 만든 사람 마음이죠.
[성남군] 님의 말:
네... active가 high로 가정한다면요..
좀전에.. cpu가 반전 시킨다고 말씀 하셔서요..
[bugiiim] 님의 말::
그럼 디바이스쪽에서 올려주고 그걸 cpu 가 받은 다음에 디바이스 레지스터를 건드려서 low 로 떨어뜨리는 것 아닌가요
인터럽트 신호 자체를 그렇게 한다는 건 아니구요.
[성남군] 님의 말:
제가 이해하기엔.. cpu가 이 레벨의 변화를 수동으로 보고 동작하는거 같거든요..
아...
ok
[bugiiim] 님의 말::
-_-;
[성남군] 님의 말:
인터럽트 받았다고
[bugiiim] 님의 말::
네.
[성남군] 님의 말:
디바이스 레지스터를 조절해주고
[bugiiim] 님의 말::
네....
[성남군] 님의 말:
그럼 ack받은거를 장치가 알고
[bugiiim] 님의 말::
네.....
[성남군] 님의 말:
자신이... 레벨을 떨어 뜨리군요..
[bugiiim] 님의 말::
네....
[성남군] 님의 말:
그럼 엣지트러거의 장점은 뭐가 있을까요?
[성남군] 님의 말:
단점은 노칠수도 있따가 되겠네요
[bugiiim] 님의 말::
보통은 인터럽트 컨트롤러가 따로 있어서 그걸 알아서 처리해주는 거니까....
단점이라고까지는 하기가 좀 그런대요... 그게....
그러니까...
[성남군] 님의 말:

[bugiiim] 님의 말::
보통 ISR 은 아주 최적화 하니까요. 놓치기는 어렵다고 봐야죠.
사실... 디바이스쪽 인터럽트는 그렇게 빠른 건 아니거든요.
[성남군] 님의 말:
네... 될수 있으면 짧게 코드를 작성 하라고요..
마자요 디바이스 많이 느리더라구요
cpu보다
wait 핀이나 wait 상태를 배웠거든요 ^^
[bugiiim] 님의 말::
오히려 레벨이라면... cpu 쪽에서 디바이스쪽 건들여주기도 해야하고... 뭐.... 엣지도 그런 경우가 있지만....
둘 다 나쁜 구현은 아니라고 봅니다.
[성남군] 님의 말:
네...
두번째 질문은요...
[bugiiim] 님의 말::
쓰임새가 있거든요 둘다.
[성남군] 님의 말:
마으크로프로세서의 io핀을 rom과 ram의 칩 인에블 신호로 안쓰이는 이유가 뭘까요?
음 일딴 제생각엔
타이밍 제어 때문일것 같은데
제가 쓰는 보드에서는 pld로...
중계해서 chip enable을 내보내는 구조더라구요
[bugiiim] 님의 말::
아 그런건 대부분....
[성남군] 님의 말:
io핀에 바로 붙이면.. pld없이도 될것 같다는 생각이 들어요
[bugiiim] 님의 말::
어드레스 매핑 때문에 그렇습니다.
예를 들자면...
[성남군] 님의 말:

[bugiiim] 님의 말::
지금 하고 계시는 cpu 는 여러 cs 핀이 나와있는 cpu 죠...
[성남군] 님의 말:
아니요
그걸 pld가 조절해주더라구요
[bugiiim] 님의 말::
메모리 영역 별로 cs 가 있어서 간단하게 되는 것일텐데요.
그때 맵은 그렇게 보이던데요?
[성남군] 님의 말:
아 마자요
있어요
여러개네요
chip select는 여러개고
[bugiiim] 님의 말::
그러면 칩에 cs 핀이 여러개 나올겁니다.
[성남군] 님의 말:
write,read는 공통이네요
[bugiiim] 님의 말::
그러니까 그런 경우는 운이 좋은거죠.
[성남군] 님의 말:
음 책에서 보기에..
어드레스 디코딩 회로가 있어야 하는 경우가
[bugiiim] 님의 말::
붙힐 디바이스 cs 를 이미 구분할 수 있도록 해놨으닌까요.
[성남군] 님의 말:
있어야 한다고
그거 io핀에서도 해결 가능하지 않나요?
[bugiiim] 님의 말::
만약 cpu 에서 제공하는 cs 가 모자란다면 그렇게 해야겠죠
모자라서 그렇게 한게 아닌가요?
[성남군] 님의 말:
그런데 질문이 io핀이 칩 인에이블 신호로
사용하지 못할까요라고 물어봤거든요
뭔가 불가능 이유가 있는거 같아요
[성남군] 님의 말:
안하는거랑 못하는거랑은 다른거잖아요..
[bugiiim] 님의 말::
io 핀 만으로 가능 여부를 질문한건가요?
[성남군] 님의 말:

[bugiiim] 님의 말::
안됩니다. 당연히.
[성남군] 님의 말:
아.. 당연히 안되는 이유가 제 생각엔
타이밍이라고 생각했는데
맞나요?
[bugiiim] 님의 말::
rd / wr 신호만으로는 절대 불가 입니다.
타이밍이라고도 할 수 있겠지만....
예를 들어보면요.
cpu 에서 나오는 address 신호는 메모리 접근에만 쓰이는게 아니거든요.
[성남군] 님의 말:
"왜 마이크로프로세서의 i/o핀을 rom과 ram의 칩 인에블 신호로 사용하지 못할까요?"
아 그건 이해해요
그래서 칩 인에블이 필요하다는거요
여러개가 어드레스와 데이터버스를 공유하니까요
위에 따옴표가 질문 고대로 친거거든요
[bugiiim] 님의 말::
네. I/O 명령이 존재할 수도 있고 DMA 디바이스가 address 라인을 cpu 하고 단절시키고 신호가 뜰 수도 있거든요.
[성남군] 님의 말:
음..
[bugiiim] 님의 말::
칩 인에이블 신호는 어드레스 디코딩 된 결과를 가지고 해야 하고 또 하나가... (기종마다 틀리겠지만) 어드레스 라인에 뜨는 신호가 유효한 시점이 wr/rd 에서만 컨트롤 되는 것이 아니라
cs 에서 엣지에서 되는 경우도 있습니다.
그냥 일반적인 질문이라면 다른 디바이스와 cross-talking 을 방지하기 위해서다 라고 답하면 될 듯합니다만
[성남군] 님의 말:
네.. i/o핀이 다른 용도로는 안쓰고 오직
cs로 사용하면 가능은 한건가요
?
io핀이 한 100쯤 있는데 그중 하나를 cs전용으로 생각하고 코딩하면.. 어쩐가 싶어서요
[bugiiim] 님의 말::
만약 외부에 롬 하나만 달랑 달렸다.... 이러면 cs 를 항상 active 로 놓고 동작 시킬 수는 있습니다.
[성남군] 님의 말:
아 io핀을 할당하면
메모리 뭐 접근할때마다
그넘을
끄고키고 난리도 아니겠네요
어드레스맵핑방식으로 쓰고 어드레스디코딩회로를 추가하면 자동으로 될것을요 ㅎㅎ
[bugiiim] 님의 말::
그런 식으로도 문제겠지만... wr/rd 신호가 그 메모리 뿐만 아니라 모든 메모리 접근시에 active 된다는게 더 문제죠.
그러면 디코딩을 해서 뽑은 cs 를 사용해야 합니다.
[성남군] 님의 말:
아...
이해가 되요..
[bugiiim] 님의 말::
그 cpu 는 미리 그게 있는 거구요.
[성남군] 님의 말:
그리고요. 아까 인터럽트에서 에지트리거 레벨트리거가 각각 용도가 있다고 했는데
어떤경우가 그런가요?
[bugiiim] 님의 말::
뭐... 제 경험으로는.... 레벨이라면 좀 테크닉을 부릴 수도 있는 경우가 있을 것 같습니다.
예를 들자면....
소켓을 한번 생각해보면요....
[성남군] 님의 말:

[bugiiim] 님의 말::
보통 select 하고나서 뭔가를 읽어오는데... 다 안읽고 조금 읽었다고 다음번 select 가 뜨지 않으면 곤란한 경우가 있자나요?
버퍼에는 뭔가 남아있는....
[성남군] 님의 말:
그런 경우엔 다음번 select할때
[bugiiim] 님의 말::
ISR 이 끝나고 다시 처리해야 하는 그런 경우가 생기거든요.
[성남군] 님의 말:
바로 또 리턴이 되어서 인식이 되지요
그리고 데이터 읽는 부분은 헤더를 만ㄷ르어서
다 읽을때까지 버퍼에서 조립하는 과정을 하구요
[bugiiim] 님의 말::
네. 그런 경우가 있습니다... 그럴 때 디바이스에서 계속 엣지 엣지 할 수는 없고....
[성남군] 님의 말:

[bugiiim] 님의 말::
그런식으로 동작하는 디바이스가 있습니다.
[성남군] 님의 말:
UART?
[bugiiim] 님의 말::
뭐 지금은 딱히 그런 걸 쓰지 않으시겠지만 (또 차이도 없을 겁니다.)
UART 는... 칩에 따라 그 신호를 선택할 수 있을 겁니다.
보통 다 선택 사항이죠.
cpu 쪽도 그렇구요.
[성남군] 님의 말:
네... 보니가 control 레지스터에 파라메터가 있더라구요
[성남군] 님의 말:
한가지만 더 여쭤봐두 될까요?
[bugiiim] 님의 말::
딱히 뭐다라고 말씀드리기가 뭐한게.... 저도 그걸 구분해서 한다기보다는.... 있는거대로 사용하는 편이라...
네.
[성남군] 님의 말:
uart에 fifo같은 버퍼가 없는 상황에서요..
[bugiiim] 님의 말::
네.
[성남군] 님의 말:
지금 하나 들어와서 cpu로 인터럽트 보냈어요
읽어가라고 ;..
[bugiiim] 님의 말::

[성남군] 님의 말:
그런데 그사이에 하나 더 들어왔어요..(아니면 더 못들어오게 막는 뭔가가 있는지도 모르겠네요)
[성남군] 님의 말:
uart에 그럼 어떻게 되나요
[bugiiim] 님의 말::
uart 읽기 버퍼가 하나 있기는 하거든요. 실제 시리얼 데이터를 한비트씩 쉬프트하면서 담아 놓는게 있는데... 그것마져 넘쳤다....
이러면 하나 잃는거죠.
[성남군] 님의 말:
그게 없다면요..
그냥 일어 버리는건가요?
버퍼가 없다면
[bugiiim] 님의 말::
한바이트이상 잃어버릴겁니다.
[성남군] 님의 말:
rts/cts
[bugiiim] 님의 말::
보통 uart isr 은 버퍼에 덜렁 쓰고 빠져나오는게 단데요...
[성남군] 님의 말:
는 컨트롤에 사용되지 못하나요
[bugiiim] 님의 말::
네. 그걸 제대로 사용하면 flow 제어를 할 수 있습니다만
보통 임베디드는 3선 연결을 많이쓰죠.
프로토콜 단에서 더이상 보내지 마라든가... 하는 걸 제어하는 수 밖에는 없는 상황이 많습니다.
[성남군] 님의 말:
아.. 네..
[bugiiim] 님의 말::
실제로는 9핀을 다 제대로 써야하는데요.
만약 9핀을 다쓴다면... line break 도 체크할 수 있고 좀 쉬엄쉬엄 보내라고도 할 수 있고....
[성남군] 님의 말:
아 그게 하드웨어 흐름제어 뭐 이런건가보죠..?
[bugiiim] 님의 말::
좋긴한데... 마지막 전압 드라이브 칩 가격이 만만찮아서...
[성남군] 님의 말:
컴통시간에 배우긴 했는데 간단히 지나가서요.. 생각이 가물...
[bugiiim] 님의 말::
네. 그 신호에 따라서 종단에서 보낼 수 있는지 없는지 알 수있습니다.
[성남군] 님의 말:
네.. rs-232프로토콜때 배웠습니다.
[bugiiim] 님의 말::
그냥 crc32 넣고... 패킷 단위로 재전송하셔야 합니다.
하다보면 결국 tcp/ip 비슷한 구현물이 되곤 합니다....
[성남군] 님의 말:
이것 저것 추가하다보면 네
제가 하려는 말이..
tcp/ip가 되겠네요
[성남군] 님의 말:
lab-d
[성남군] 님의 말:
뭐 이런거요..
[bugiiim] 님의 말::
결국 아랫단 ip 단 비슷한 것 만들고 udp 비슷한 거 만들어서 사용합니다.
[성남군] 님의 말:
hdlc이였나.. 프로토콜이 ..
[성남군] 님의 말:
네/
[bugiiim] 님의 말::
uart 읽기는 편한데.. 쓰기를 대부분 좀 어설프게 만들어서 제대로 효율이 안나오는 경우가 많습니다.
예를 들자면....
읽는 것은 버퍼링 해서 그냥 담아놓기만 하면 되고 그걸 메인에서 빼가는 방법이면 충분한데요.
쓰기 인터럽트는 그 시점이 uart 출력 쉬프트 레지스터에 바이트를 보냈다는 순간에 뜨기 때문에... 조금 신경 써주셔야 합니다.
그냥 패킷 다 보낼 때까지 기다리면 낭패...
[성남군] 님의 말:
음 방금 하신 말씀은 아직 제가 지식이 부족해서 감이 안옵니다.
[bugiiim] 님의 말::
그러니까... select 생각을 해보시면요.
[성남군] 님의 말:
iuart는 만들어져 있는 상황에서 제가 작업을 해서 그런가봅니다.
[bugiiim] 님의 말::
보통 select 할 때, read bit 는 키고 조사하자나요.
하지만 write bit는 잘 안키죠?
[성남군] 님의 말:
네 그렇죠
write는 제대로 동작을 안하더라구요
그리고 제쪽 write버퍼가 있어서
항상 on이죠
그거 다 찰때 까지는요
[bugiiim] 님의 말::
그게... write bit 가 온 되는 경우가... 이제 나 쓸 수 있는 버퍼가 충분하다라고 되는 경우자나요.
[성남군] 님의 말:
네..
마자요
[bugiiim] 님의 말::
uart 같은 경우에 쓰기 버퍼가 1 라고 생각해보세요.
[성남군] 님의 말:

[bugiiim] 님의 말::
isr 에서 처리하는 것이 조금 까다로울 수가 있거든요. 버퍼 다 비었으면 다음 인터럽트 금지시키고...
뭐 하여튼 그런 일을 select 같은 개념으로 처리해 놓으셔야 하기 때문에....
보통은 그냥 패킷의 모든 바이트가 다 나갈때까지 기다리는데...
이러면 효율이 엄청 떨어진다는거거든요.
[성남군] 님의 말:

[성남군] 님의 말:
그러면 어떻게?
[bugiiim] 님의 말::
그래서 write 도 버퍼링하고 isr 에서 하나 하나 uart tx 인터럽트 뜨면 보내고 마지막 바이트에서 인터럽트 금지시키고
[성남군] 님의 말:
어짜피 uart도 dma통신하니까..
[bugiiim] 님의 말::
하는 read 와는 반대되는 처리를 해야 합니다.
[성남군] 님의 말:
dma블럭단위로..
[bugiiim] 님의 말::
dma dma ???
uart 를요?
[성남군] 님의 말:
uar랑 cpu랑 dma로 주고 그럴수 있다고 하던데요..
[bugiiim] 님의 말::
고속인가요?
[성남군] 님의 말:
112k
[bugiiim] 님의 말::
powerpc 계열은 그렇게 하긴 합니다만....
112k 라면 fifo 정도라면 어떻게 좀 될텐데요.
[성남군] 님의 말:
네... fifo를 사용하는데요
이게.. sdram에서 읽어서..
fifo 까지 dma 블록전송을 하는거 같드라구요
[bugiiim] 님의 말::
아 좋군요.
[성남군] 님의 말:
아직 정확히 소스 분석을 안했지만요
[bugiiim] 님의 말::
멋진 cpu 입니다.
[성남군] 님의 말:
blackfin 멋져요.. ^^


[분류: 하드웨어 인쇄용 페이지 본문 email로 보내기 ]

<  임베디드! - 관련 커뮤니티 | 마이크로컨트롤러 기반형 설계의 8가지 디버깅 힌트  >

답장 쓰기
글을 올리시려면 로그인 (사용자 등록) 하셔야 합니다.

검색
Google

분류
·공지 (6)
·인터넷 (87)
·하드웨어 (260)
·C/C++ (65)
·어셈블리 (7)
·리눅스 (136)
·리눅스 커널 (67)
·윈도우즈 (25)
·데이터베이스 (20)
·보안 (16)
·.NET (25)
·그래픽 (13)
·책소개 (42)
·호기심 천국 (80)
·잡담 (111)
·사랑 (3)

전체 본문수: 963
전체 답장수: 525


분류 : 하드웨어
최근글
최근글
가장 많이 읽은 글
·[Cache] 2-way Set-Associative 방식이란 무엇일까? (2)
뜨거운 감자
·SoCRobotWar 2005 - 신입생 기초 교육자료 (7)

EzDoum투표
이지도움 어때요?
이게 뭐야. 다시 안올란다. --;
아이 좋아라~ +_+;
관심없다.
먼가는 있는거 같은데 뭐하는 곳이지?
기타 (자유게시판에 글로 남겨 주세요)
[ 결과 | 투표 ]

랜덤 링크
http://kldp.net


 Home ^ BACK TO TOP ^ EzDoum - 도움이 필요하세요~??
 Powered by KorWeblog 1.5.8 Copyleft © 2001 EzDoum, 관리자: EzDoum