2017-01-31 17 views
1

북유럽 세미 MCU를 프로그래밍/중단/부팅/지우는 등을 시도하고 있습니다. 이것은 nRF52의 ARM-Cortex M4입니다. 나는 칩의 SWD 핀을 사용하고 있으며 상업용 J-Link를 nrfjprog 명령 줄 도구 또는 Segger windows 유틸리티와 함께 ​​사용하면이 작업을 수행 할 수 있습니다.SWD 인터페이스를 통해 북유럽 nRF52 제어

그러나 두 번째 MCU의 GPIO 핀을 통해 다른 MCU에서 nRF52를 제어하고 3 선을 nRF52 - SWCLK, SWDIO 및 GND에 연결하여 자체 SWD 드라이버를 작성하려고합니다.

이 와이어는 이제 호스트에 의해 구동되며 SWD 용 ARM 참조 설명서를 사용하고 있습니다. 이 프로토콜은 내가 성취하려고 시도하는 것에 대해 비교적 간단하다. 다음 PDF에는 몇 가지 세부 정보가 있습니다. http://hackipedia.org/Hardware/CPU/ARM/pdf,%20Cortex/IHI0031A_ARM_debug_interface_v5.pdfhttps://www.silabs.com/Support%20Documents/TechnicalDocs/AN0062.pdf

초기 패킷 헤더 (START, APnDP, 읽기, 추가, 중지, 패리티 등)를 보낼 수 있습니다. 그러나 그 후에 SWDIO는 절대로 돌아 서지 않습니다. 내 호스트 MCU가 SWDIO를 플로팅하고 입력을받을 준비가되었습니다. 그러나 nRF52는 절대로 ACK로 SWDIO 라인을 구동하지 않습니다.

NRF52는 데이터 패킷 헤더를 보지 못했거나 보낸 문자가 마음에 들지 않았으므로 반드시 있어야한다고 생각합니다. 그러나 무엇을 알 수는 없습니다. 아무도 이것을 경험했거나 이런 일이 일어날 수있는 어떤 단서가 있습니까? 그건 그렇고, SWDCLK 전환은 100kHZ에서 발생합니다. (10 us의 시계 기간).

도움을 주시면 감사하겠습니다.

는 DP ID가 를 등록 읽기 JTAG - 투 - SWD 스위치 패턴 보내기 높은 SWDIO 와 50 개 이상의 시계를 보내기 :

여기에 오는 다른 사람들을위한
+0

초기 패킷 이전에 SWD 웨이크 업 시퀀스 (SWDIO = 1로 50 SWCLK 사이클)를 발행 했습니까? – Nipo

+0

Thanks @Nipo. 나는 그 문제를 발견했다. 먼저 JTAG-SWD 문자열을 보낸 다음 DP ID 레지스터도 읽어야했습니다. – guraaf

답변

0

, 나를 위해 트릭은 다음을 수행하는 것이 었습니다 그 후 나는 북유럽으로부터의 반응을 얻었습니다.