Arduino Due: JTAG и SWD не работают после нажатия кнопки стирания

arduino-due uploading programmer

У меня есть плата Arduino Due. Я могу успешно загрузить код в него, используя загрузку Arduino через USB. Однако я также изучаю другой подход, который заключается в загрузке кода через Atmel studio с использованием соединения Atmel ICE и JTAG. Обычно это работает нормально (код загружается, и простой скетч "мигания" заставляет встроенный светодиод мигать).

Однако когда я нажимаю кнопку стереть, а затем пытаюсь загрузить тот же скетч через Atmel Studio и JTAG, происходит что-то странное. Код загружается нормально:

Erasing device... OK 
Programming Flash...OK
Verifying Flash...OK

Но тогда программа на должном уровне фактически не выполняется. Светодиод не начинает "мигать". Если я затем снова загружу через USB (порт программирования) и Arduino IDE, программа blink будет работать. И когда я затем загружаю через Atmel Studio и JTAG снова, не нажимая кнопку стирания, все происходит так, как ожидалось (светодиод мигает и т. Д.). Кто-нибудь имеет хоть малейшее представление о том, что может происходить? Причина, по которой я спрашиваю, заключается в том, что я хотел бы спроектировать плату, используя только соединение JTAG. Считаете ли вы, что вышеуказанная проблема может вызвать проблемы и при использовании "пустого" заводского MCU SAM?

EDIT: та же проблема относится и к SWD.

Blink sketch, который я загружаю:

#define led LED_BUILTIN

// процедура установки выполняется один раз при нажатии кнопки reset:
void setup() {
  // инициализировать цифровой вывод в качестве выхода.
  pinMode(led, OUTPUT);
}

// процедура цикла выполняется снова и снова навсегда:
void loop() {
  digitalWrite(led, HIGH);   // включите светодиод (HIGH - уровень напряжения)
  delay(600);               // дождитесь второй
  digitalWrite(led, LOW);    // выключите светодиод, сделав
  delay(600);               // подождите секунду
}

, 👍2


1 ответ


Лучший ответ:

1

После загрузки через Microchip Studio перейдите в раздел GPNVM bits окна "программирование устройств". Убедитесь, что режим загрузки установлен в положение "загрузка с флэш-памяти". Также убедитесь, что регистр GPNVMBITS установлен в 0x00000002. Затем нажмите кнопку "программа". Скетч, который вы загрузили в микроконтроллер, теперь должен работать.

Таким образом, кажется, что происходит то, что нажатие кнопки стирания сбрасывает биты GPNVM, так что MCU загружается из ROM, но затем Atmel ICE + JTAG / SWD не устанавливает режим загрузки обратно в flash после (успешного) программирования MCU.

,