Перейти к содержанию
    

GD32F105 стирается флэш при отладке

В какой-то момент, вероятно когда объём кода превысил некоторый порог, стала стираться флэш программ при выполнении отладки. Результатом стирания является переход на NMI. Стирается блоками по 1 килобайту, если выполнять какую-то отладку - остановиться на точке останова, пошагать и т.д. Иногда обнаруживаются несколько стёртых блоков. Происходит это совершенно стабильно по одному адресу. Если прошить отдельным загрузчиком (например JFlash) или сразу после загрузки выйти из отладчика, то программа запускается и работает. Если код изменить, например добавить что-то, то стираться будет по другому адресу, но столь же стабильно. Пробовал исключить стираемый участок, выделив для программы разделы, в которые не входит стираемый участок. Тогда линкер не размещает там код, но стираться начинают другие участки.

Оказалось, что если заменить программатор JetLink на ST-Link, то проблема исчезает. Но он работает только с Cortex, а у нас есть проекты на других процессорах, не хотелось бы плодить программаторы. Встречался ли кто-нибудь с таким явлением и как с ним бороться?

erase.thumb.jpg.efd7ee9b1e83ab937294e153640dccda.jpg

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Какие бряки ставите - аппаратные или программные? И сколько аппаратных бряков всего поддерживает ваш J-Link?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

В 12.03.2024 в 16:01, jcxz сказал:

Какие бряки ставите - аппаратные или программные? И сколько аппаратных бряков всего поддерживает ваш J-Link?

Auto. Думаешь от этого что-то зависит?

 

P.S. Да, если поставить Hardware, то всё работает. Правда, больше 6 он не ставит.

Изменено пользователем 777777

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

14 minutes ago, 777777 said:

Auto. Думаешь от этого что-то зависит?

Конечно. От этого зависит перепрограммируется флэш во время отладки или нет.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

6 часов назад, 777777 сказал:

Auto. Думаешь от этого что-то зависит?

Думаю вы его уже протёрли насквозь. Раз даже не подумали об очевидном...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Думаю вы его уже протёрли насквозь.
Помнится, вы тоже участвовали в обсуждении, что 5000 циклов перезаписи флэша, "на столе", израсходовать не реально, не говоря уж про 10000 ;-)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Наталкивался на похожее поведение, когда память не успевала считывать данные из себя при слишком быстром тактировании ядра. Проверьте, что латентность Flash'а соответствует скорости ядра.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

2 часа назад, AlanDrakes сказал:

когда память не успевала считывать данные из себя

Это же GD32, у него память отдельно, при старте перегружается в теневое ОЗУ. Дальше работата идет из ОЗУ без задержек.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

16 часов назад, Obam сказал:

Думаю вы его уже протёрли насквозь.
Помнится, вы тоже участвовали в обсуждении, что 5000 циклов перезаписи флэша, "на столе", израсходовать не реально, не говоря уж про 10000 😉

Или вы меня с кем-то путаете или речь шла совсем о другом.

5000 реально израсходовать всего за пару месяцев при интенсивной отладке и программных бряках во флешь.

 

PS: Также возможно у ТС выставлены некорректные настройки для J-Link или что-то не так с его подключением (провода, питание, etc.).

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

6 часов назад, Сергей Борщ сказал:

Это же GD32, у него память отдельно, при старте перегружается в теневое ОЗУ. Дальше работата идет из ОЗУ без задержек.

А размер кеша каков? Не находится ли указанный адрес за его пределами?

И какой именно регион кешируется? Только с 0x00000000 или с 0x08000000 тоже?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...