[로직 어날라이저]
로직 어날라이저는 신호를 가로채서 화면에 그래프로 보여주는 또 다른 장비입니다. 이런 것은 오실로스코프와 같지만, 몇 가지 기본적인 면에서 오실로스코프와 차이가 있습니다. 참고 URL 후에 차이점을 나열해보겠습니다.
오실로스코프 참고)
임베디드 소프트웨어 디버깅 장비1 - 전압계/저항계, 오실로스코프
[실험실의 장비를 사용해야 하는 이유] 이전에 아무리 소프트웨어를 주의 깊게 테스트했다고 하더라도 결국에는 실험실에서 실제로 시스템을 테스트하고 디버깅해봐야 합니다. 어떤 자료를 보�
ppojjaknews.tistory.com
- 로직 어날라이저는 많은 신호들을 동시에 측정할 수 있음. 장비를 구입하는데 얼마의 비용을 지불할 것인지에 따라서 십여 개부터 수백 가지의 신호를 한 번에 측정할 수 있음. 물론 수백 가지의 신호를 동시에 보기 위해서는 수백 개의 로직 어날라이저 프로브를 회로에 참을성 있게 연결해야만 함.
- 로직 어날라이저는 단순히 VCC와 그라운드 두 종류의 전압을 이해할 뿐임. 그러므로 로직 어날라이저의 출력은 타이밍 다이어그램과 매우 흡사함. 만약에 시그널이 VCC와 그라운드 사이의 값을 가진다면, 그 전압을 나타내는 오실로스코프와는 다르게 로직 어날라이저는 VCC 또는 그라운드 한쪽으로 보고할 것임. 하드웨어가 제대로 동작을 한다면 시그널의 전압은 VCC이거나 그라운드 둘 중에 하나를 가질 것임. 그 사이의 값을 아닐 가능성이 상당히 높음.
- 모든 로직 어날라이저는 스토리지 장치임. 먼저 신호들을 가로채서 저장한 후에 그것을 화면에 보여줌. 로직 어날라이저를 사용하는 일반적인 방법은 문제의 증상에 트리거를 설정해 놓고 문제의 원인을 찾기 위해 저장된 데이터를 뒤로 조사하는 것임.
- 로직 어날라이저는 오실로스코프보다 훨씬 복잡한 트리거 설정 방법을 가지고 있음. 예를 들자면 만약에 시그널 B는 로우를 나타내고 C와 D는 하이를 나타내는 동안에 시그널 A가 라이징 에지가 되는 순간을 만족하도록 트리거를 걸 수도 있음. 아니면 시그널 E는 450 마이크로세컨드 이상 하이에 머물러 있으면 트리거가 걸리도록 할 수도 있음.
- 로직 어날라이저는 타이밍 모드뿐만 아니라 스테이트 모드에서도 동작을 할 수가 있음. 이런 두 모드에 대해서는 또 설명할 예정.
[로직 어날라이저의 타이밍 모드]
타이밍 모드로 로직 어날라이저를 사용하는 일에 대해서 얘기해보겠습니다. 먼저 나열해서 살펴볼게요.
- 어떤 이벤트가 발생했는지를 알 수 있음. 가령 무선 바코드 스캐너의 소프트웨어가 전파 송수신기 장치를 켰는지를 알고 싶다면, 로직 어날라이저를 전파 송수신기의 전력을 제어하는 신호 선에 연결해서 로우에서 하이로 변할 때나 또는 그 반대로 변할 때 트리거를 설정해서 관찰할 수 있음. 대부분의 오실로스코프도 이것을 관찰할 수 있기는 하지만 일정하지 않은 시간 동안 매우 짧은 시간 동안만 장치가 켜지는 경우에는 관찰하기 쉽지 않을 것임.
- 소프트웨어가 응답하는데 얼마나 걸리는 지를 측정할 수 있음. 예를 들자면 로직 어날라이저를 버튼 인터럽트와 지하 유류 저장 탱크의 경보를 활성화시키는 신호선에 연결해서 버튼을 눌렀을 때, 얼마 만에 소프트웨어가 경보를 끄는지를 점검할 수 있음. 버튼이 눌렀음을 나타내는 에지에 로직 어날라이저의 트리거를 설정해 놓고, 얼마의 시간이 지난 후에 경보의 신호가 바뀌는 지를 관찰할 수 있음. 로직 어날라이저는 그런 것을 보여줄 것임.
- 소프트웨어가 하드웨어를 제어하기 위해서 적절한 신호 패턴을 만들어 내는지를 관찰할 수 있음. 가령 소프트웨어가 시리얼 포트에서 데이터를 전송하는 것을 마치고 나서 일정한 시간이 흐른 후에 RTS 신호 선으로 Low로 만들어야 한다면 로직 어날라이저를 RTS와 데이터 전송 신호 선에 연결하고 소프트웨어가 정확한 시간에 RTS를 Low로 만드는지 너무 빠르거나 늦지는 않는지 아니면 아예 작동을 안 하는지를 관찰할 수 있음. RTS의 폴링 에지에 트리거를 걸어 두고서 얼마 전에 데이터 전송을 끝냈는지를 뒤로 가면서 찾아볼 수 있음. 마찬가지로 로직 어날라이저를 EEROM의 ENABLE/, CLK, DATA 신호 선에 연결하고 EEROM을 정확히 프로그램하는지를 관찰할 수 있음.
일반적인 로직 어날라이저를 보여주는 예도 있습니다. 오실로스코프와 비슷한 화면 표시장치를 가지고 있는데요. 로직 어날라이저를 설정하는 것은 매우 복잡한 작업 중의 하나이기 때문에 대부분의 로직 어날라이저는 화면에 메뉴를 나타내고 선택할 수 있도록 키패드를 제공합니다. 메뉴를 쉽게 선택하기 위해서 마우스를 제공하기도 하고, 컴퓨터에서 원하는 것을 설정하도록 네트워크 연결을 제공하기도 합니다. 설정을 저장하기 위해서 로직 어날라이저는 일반적으로 하드디스크나 플로피디스크를 가집니다.
로직 어날라이저는 많은 시그널들을 동시에 연결할 수 있기 때문에, 하나 이상의 리본 케이블이 연결되어 있습니다. 이런 리본 케이블을 보드의 개개의 시그널에 연결하는 다양한 방법도 있죠.
로직 어날라이저를 사용하는 데 있어서, 중요하지만 간과하기 쉬운 규칙은 각각의 시그널 프로브 아니면 프로브들의 집합은 그라운드에 연결되는 접지선을 가져야 한다는 것입니다. 이런 접지선을 회로의 그라운드에 연결합시다. 그렇지 않으면 로직 어날라이저는 때때로 잘못된 정보를 주게 될 겁니다.
[로직 어날라이저의 스테이트 모드]
앞에서 다루었던 타이밍 모드에서 로직 어날라이저는 스스로의 클럭을 사용합니다. 다시 말하자면 측정하려는 회로에 있는 어떤 기준 클럭 없이 데이터를 저장합니다. 로직 어날라이저는 시스템에 있는 클럭이 발생했을 때만 데이터를 저장하는 스테이트 모드에서도 작동을 합니다.
마이크로프로세서가 어떤 명령어를 가져왔는지 메모리와 I/O로부터 어떤 데이터를 읽고 쓰는지 같은 것을 알아보기 위해서 일반적으로 로직 어날라이저의 스테이트 모드를 사용합니다. 마이크로프로세서가 어떤 명령어를 가져왔는지를 알기 위해서 로직 어날라이저의 프로브를 시스템 보스의 모든 어드레스 신호 선과 데이터 신호 선, 그리고 ROM의 RE/ 신호 선에 연결해야 합니다.
만약 RE/ 시그널의 라이징 에지를 클럭으로 하라고 로직 어날라이저를 설정해 놓으면, 로직 어날라이저는 어드레스와 데이터 시그널 값을 RE/가 라이징 에지가 될 때마다 저장할 것입니다. 그동안 배웠던 것들을 돌이켜보면 마이크로프로세서가 ROM으로부터 데이터를 읽을 때, RE/의 라이징 에지에서 어드레스와 데이터 시그널이 유효한 값이 되는 것을 확인할 수 있습니다. 같은 방법으로 타이밍 다이어그램을 조사해서 적절한 시그널을 클럭으로 동작하게 함으로써, RAM으로부터 읽거나 쓸 때 데이터 값을 저장할 수도 있습니다. 대부분의 로직 어날라이저는 여러 클럭을 동시에 다룰 수 있습니다.
로직 어날라이저의 스테이트 모드는 보통 각 행이 클럭 에지가 발생했을 때의 모든 시그널의 상태를 나타내는 텍스트 모드로 표시합니다. 대부분의 로직 어날라이저는 원하는 형태로 데이터를 재구성할 수 있도록 합니다. 가령 이런 어드레스 줄들을 묶어서 16진수로 표시할 수 있게 합니다. 저장된 데이터가 특히 마이크로프로세서가 수행한 명령어들의 목록을 담고 있다면 트레이스(Trace)라고 불립니다.
출력의 분명한 문제점이 있는 하나의 경우를 살펴보면 프로세서의 기계어 명령어 집합을 기억하고 있지 않는 한, 마이크로프로세서가 실제로 어떤 동작을 하고 있는지를 알기가 어렵다는 겁니다. 어떤 로직 어날라이저는 기계어 명령어들을 역 어셈블 해서 결과를 어셈블리 언어로 나타내 주는 편리한 기능을 제공하기도 하고요. 이렇게 하려면 로직 어날라이저는 어떤 종류의 마이크로프로세서를 사용하는지 알아야만 하고, 미리 정해진 방법으로 로직 어날라이저를 타깃에 연결해야만 합니다. 더 현명한 로직 어날라이저는 일일이 로케이터의 맵에서 어떤 어드레스가 어떤 소스코드와 연관되는지를 찾아볼 필요 없이, 저장된 데이터를 소스 코드와 연계시켜서 소스 코드의 어떠 부분이 실행되었는지를 알려주기도 합니다. 이렇게 하려면, 로직 어날라이저로부터 저장된 트레이스를 네트워크를 통해 호스트에 전송해야만 합니다. 또한 로직 어날라이저가 다른 툴 체인과 호환성을 가져야 할 필요가 있습니다.
참고)
임베디드 소프트웨어 디버깅 장비1 - 전압계/저항계, 오실로스코프
[실험실의 장비를 사용해야 하는 이유] 이전에 아무리 소프트웨어를 주의 깊게 테스트했다고 하더라도 결국에는 실험실에서 실제로 시스템을 테스트하고 디버깅해봐야 합니다. 어떤 자료를 보�
ppojjaknews.tistory.com
'IT > 임베디드 시스템' 카테고리의 다른 글
임베디드 소프트웨어 디버깅 장비4 - 소프트웨어로만 된 모니터 & 요약정리 (0) | 2020.07.06 |
---|---|
임베디드 소프트웨어 디버깅 장비3 - 인 서킷 에뮬레이터 (0) | 2020.07.03 |
임베디드 소프트웨어 디버깅 장비1 - 전압계/저항계, 오실로스코프 (0) | 2020.07.01 |
디버깅 테크닉 - 명령어 시뮬레이션 & assert 매크로 (0) | 2020.06.25 |
디버깅을 위한 호스트 시스템에서의 테스팅3 - 고급기술 그리고 반론/단점 (0) | 2020.06.23 |
댓글