2013-11-03 2 views
2

USB를 통해 장치 (STM32Fx Discovery)에서 실행중인 임베디드 응용 프로그램에서 변수를 읽는 stmicro STM-STUDIO과 유사한 응용 프로그램을 작성하려고합니다. 보드 (아마도 C# 응용 프로그램을 사용하는 응용 프로그램)에서 나오는 결과 (변수)를 읽으려면 어떻게해야합니까?USB를 통해 swd 출력을 읽는 방법은 무엇입니까?

+0

어떤 USB 클래스를 구현 하시겠습니까? STM Studio는 JTAG 또는 SWD 디버거와 함께 작업하므로 USB로 동일한 기능을 어떻게 구현할 것인지 명확하지 않습니다. –

+0

SWD 디버거를 사용 중입니다 .They (St Micro)는 즉시 SWD를 읽는 인상적인 응용 프로그램 인 STMStudio를 가지고 있습니다. 일단 .elf 파일을 실행하면 모든 변수를 나열하고 현재 값을 동적으로 읽습니다. – TonyP

+1

Ok .. 나는 SWD 디버거 출력을 읽고 싶다고 말하면서, 그리고 usb/swd를 사용하여 swd 명령을 다시 보드에 쓰고 싶다고 생각합니다. 그것은 나에게 HID 또는 다른 클래스를 사용하는 경우 상관 없어요 .. 그게 내가/USB를 통해 swd를 읽고 쓸 수있게 해주는 것이면 좋습니다. – TonyP

답변

1

SWD 디버거와 대화하는 데 사용할 수있는 API 또는 라이브러리가 있는지 검색해야합니다. 아니면 프로그램에서 실행할 수있는 명령 줄 인터페이스가있을 수도 있습니다. 제조업체 (ST)에 문의하십시오.

그들이 당신을 지원하지 않으면 리버스 엔지니어링 모자를 착용 할 차례입니다. 나는 USB 프로토콜 분석기를 얻을 것이다. Total Phase은 좋은 것들을 판매하며 오랜 기간 USB 디바이스를 디버깅하기 위해 400 달러를 사용했습니다. 운영 체제에는 내장 된 USB 디버깅 기능이있을 수도 있습니다. 그런 다음 STM STUDIO를 실행하고 다양한 버튼을 클릭하면 어떻게되는지보십시오. 잘하면 당신은 그것을 알아낼 수 있습니다.

분석기에서보고있는 USB 트래픽을 파악하려면 SWD 프로토콜에 대한 확실한 이해가 필요합니다.

0

당신이 (당신은 USB로 연결된 ST-링크를 통해 개발 및 디버깅을위한 OpenStm32를 사용하는 경우 당신은 아마) OpenOCD를 사용하는 경우에 당신은 포트 4444 및 문제 명령에 텔넷를 통해 OpenOCD에 연결할 수 있습니다 메모리를 읽고 쓸 수 있습니다. 대화 형 텔넷 세션으로이 작업을 시도 할 수 있습니다. 텔넷 세션에서 32 비트 변수를 읽는 OpenOCD commandmdw <hexAddress>입니다. 예를 들어 주소 0x20000024의 RAM에서 변수를 읽으려면 명령 mdw 0x20000024을 사용하고 0x20000242: 89ABCDEF과 같은 응답이 필요합니다. 여기서 89ABCDEF는 16 진수 값을 나타냅니다. C#의 16 진수 값 변환은 UInt32 myUInt32 = UInt32.Parse(myHexString, System.Globalization.NumberStyles.HexNumber);

와 같은 식으로 수행 할 수 있습니다. 텔넷으로 OpenOCD에 연결하는 방법을 설명하는 튜토리얼 .pdf here이 있습니다.

다음 질문은 ... 어떤 메모리 주소를 사용해야합니까? 주소를 얻는 방법은 링커 .map 파일 (프로그램 방식 또는 수동)에서 가져 오거나 라이브러리를 사용하여 & .elf 파일에서 디버그 정보를 추출하는 방법입니다.

이 모든 것을 하나의 패키지에서 수행하는 자체 포함 DLL 또는 닷넷 래퍼를 아직 찾지 못했습니다.

STM-Studio와 유사한 또 다른 도구는 T.I.의 ARM 프로세서에서 작동하며 JTAG 또는 SWD를 통해 통신하는 T.I.의 GUI Composer입니다. 나는 STM 프로세서와 함께 GUI Composer를 사용하려고 시도하지 않았지만, 개념은 FW를 수정하지 않고 GUI를위한 일종의 통신 코 프로세서로서 디버그 인터페이스를 사용하는 것과 비슷하다.

관련 문제