Embedded/Arduino

Arduino Nano IoT 33 Bootloader blocked 된 경우 MKR ZERO로 살리기(실패)

변화의 물결1 2024. 4. 13. 00:03

 

 

안녕하세요.

 

  이전 "Arduino Nano IoT 33 Bootloader blocked 된 경우 J-LINK로 살리기"에서 성공을 해서 MKR ZERO로도 가능할 거라 생각하고 참고 삼아해 봐야지 했는데, 결론은 이상한 에러를 발생시키고는 업로드가 되지 않았습니다.

   

 

 

 

Arduino Nano 33 IoT Bootloader blocked 된 경우 J-LINK EDU로 벽돌된 것 살리기 (성공후기)

안녕하세요. 지난번에도 아두이노 나노 IoT 33 보드 살리는 법을 공유드렸습니다. 그런데 그때는 직접 하지 않고 자료만 가지고 가능하다는 것만 알려드렸습니다. 그래서 이번에는 직접 blocked 된

remnant24c1.tistory.com

 

 

  그렇지만 이렇게 공유하는 이유는 작업하는 방법과 이후에 문의글에 답변이 달릴 수도 있으니 참고 삼아 보시면 도움이 되지 않을까 해서입니다.

  

 

1. Arduino Nano 33 IoT 모듈 부트로더 고장 내는 방법 (주의)

 

  - Arduino IDE에서 아무 샘플을 불러온 후 예제 보드를 Nano 33 BLE로 선택하고 포트 선택해서 업로드를 실행합니다. 그러면 보드에 있는 리셋 버튼을 더블 클릭해도 복구 모드가 되지 않고, 벽돌이 되어 버립니다.

 (앞으로 보드 잘 보고 선택해야 이런 귀찮은 일을 하지 않을 수 있습니다.)

 

에러발생

 

 

 

2. Nano 33 IoT 보드에 부트로더 올리는 방법

 

- 아래 참조사이트에서 방법을 참고했습니다. 우선 SD 카드와 리더기가 필요합니다.

 

1) SD Card 슬롯에 SD 메모리를 넣습니다. (SD 필요한 용량은 1M 이상 여유만 있으면 됩니다.)

 

2) 부트로더 다운로드

 

https://github.com/arduino/ArduinoCore-samd/blob/master/bootloaders/nano_33_iot/samd21_sam_ba_arduino_nano_33_iot.bin

 

Nano 33 IoT 부트로더 링크 다운로드

 

 

에서 samd21_sam_ba_arduino_nano_33_iot.bin 파일을 다운로드합니다.

(참고로, Nano 33 iot 보드가 아닌 다른 보드가 고장 났다면 위의 경로에서 상위 경로로 가서 부트로더 파일을 다운로드하시면 됩니다.)

 

3) 부트로더 이름 변경

 

  - 소스상 fw.bin으로 되어 있기 때문에 변경합니다.

  samd21_sam_ba_arduino_nano_33_iot.bin를 fw.bin로 바꿔서 SD 메모리로 복사합니다.

 

4) MKR ZERO 보드를 위한 라이브러리를 다운로드합니다.

 

  - 스케치 -> 라이브러리 포함하기 -> 라이브러리 관리

 

 

 

 

  - Adafruit DAP library 검색해서 설치합니다.

 

 

 

 

  - 만약 같이 설치해야 할 라이브러리가 나오면 같이 설치해 줍니다. (Install all)

 

 

 

 

5) Flash 할 소스 수정

 

  - 부트로더를 다운로드하기 위한 샘플 소스를 불러옵니다. 파일-> 예제-> Adafruit DAP library->flash_from_SD

 

 

 

 

 

- 예제 소스에서 몇 부분 수정 (대략 35번 라인)

  if (!SD.begin(SD_CS)) {

  을

  if (!SD.begin()) {

  로 수정해줍니다. (SD_CS 삭제 안 해주면 준비되지 않았다고 에러 발생합니다.)

 

 

  

 

6) MRK ZERO와 Nano 33 IoT 핀 설명

 

 

 

 

7) 나노 33 IoT 보드와 케이블 연결

 

  - MKR ZERO보드에 우선 케이블 작업을 해줍니다. 그리고 나중에 디버깅 혹은 다시 사용을 대비해서 글루건으로 고정을 해주는 것을 추천드립니다.

 

 

 

 

  - 위의 핀 설명한 것처럼 서로 연결합니다.

 

 

  

 

8) 업로드 하기

 

  - 보드 : Arduino MKRZERO

  - 포트 : COMx(Arduino MKRZERO)

 

 

 

 

3. 최종 결과

 

  - SD 카드와 fw.bin 파일은 인식을 했는데 아래와 같은 에러로 부트로더가 업로드가 되지 않았습니다.

 

 

 

 

  - invalid response writing to reg 0 (count = 0, value = 7)

    에러를 구글링 해보면, 이슈가 된 것이 몇 개가 있는데 실제적으로 해결책이 되는 답변이 확인되지 않았습니다.

  https://githubmemory.com/@ksmith3036?page=3

  https://gitmemory.com/issue/ataradov/edbg/78/476108287

 

  - 혹시 해결하신 분이나 아시는 분은 댓글 부탁드립니다. ~~

 

 

<주의사항>

 

  - 업로드할 때 보드 선택을 Nano나, BLE 등으로 잘못할 경우 MRK ZERO 보드도 벽돌 됩니다.

  실수로 잘못 선택해서 다운했는데, Blocked 되어서 포트가 나타나지 않았습니다. 그래서 이전 내용처럼 J-LINK로 부트로더를 복구시켰습니다.

 

  결론적으로 MKR ZERO를 가지고 Adafruit-DAP library를 사용하여 사이트에 나온 것처럼 Nano 33 IoT 보드를 살릴 수 없었습니다. 현재로서는 J-LINK와 같은 디버깅 툴을 사용하는 것이 복구할 수 있는 확실한 방법이라 보입니다.

 

 마지막으로, 제가 제대로 확인 못한 부분이 있을 수 있으므로 참고 정도가 적당할 것으로 보입니다.

 

감사합니다.

 

  

<참고 사이트>

1. NANO 33 IoT stopped work

https://forum.arduino.cc/index.php?topic=701713.0

2. Programming an M0 using an Arduino

https://learn.adafruit.com/programming-an-m0-using-an-arduino

3. Adafruit_DAP

https://github.com/adafruit/Adafruit_DAP  

반응형