777777 0 12 марта Опубликовано 12 марта · Жалоба В какой-то момент, вероятно когда объём кода превысил некоторый порог, стала стираться флэш программ при выполнении отладки. Результатом стирания является переход на NMI. Стирается блоками по 1 килобайту, если выполнять какую-то отладку - остановиться на точке останова, пошагать и т.д. Иногда обнаруживаются несколько стёртых блоков. Происходит это совершенно стабильно по одному адресу. Если прошить отдельным загрузчиком (например JFlash) или сразу после загрузки выйти из отладчика, то программа запускается и работает. Если код изменить, например добавить что-то, то стираться будет по другому адресу, но столь же стабильно. Пробовал исключить стираемый участок, выделив для программы разделы, в которые не входит стираемый участок. Тогда линкер не размещает там код, но стираться начинают другие участки. Оказалось, что если заменить программатор JetLink на ST-Link, то проблема исчезает. Но он работает только с Cortex, а у нас есть проекты на других процессорах, не хотелось бы плодить программаторы. Встречался ли кто-нибудь с таким явлением и как с ним бороться? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jcxz 231 12 марта Опубликовано 12 марта · Жалоба Какие бряки ставите - аппаратные или программные? И сколько аппаратных бряков всего поддерживает ваш J-Link? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
x893 51 12 марта Опубликовано 12 марта · Жалоба А что на вкладе Breakpoints нарисовано ? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
777777 0 13 марта Опубликовано 13 марта (изменено) · Жалоба В 12.03.2024 в 16:01, jcxz сказал: Какие бряки ставите - аппаратные или программные? И сколько аппаратных бряков всего поддерживает ваш J-Link? Auto. Думаешь от этого что-то зависит? P.S. Да, если поставить Hardware, то всё работает. Правда, больше 6 он не ставит. Изменено 13 марта пользователем 777777 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
x893 51 13 марта Опубликовано 13 марта · Жалоба 14 minutes ago, 777777 said: Auto. Думаешь от этого что-то зависит? Конечно. От этого зависит перепрограммируется флэш во время отладки или нет. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jcxz 231 13 марта Опубликовано 13 марта · Жалоба 6 часов назад, 777777 сказал: Auto. Думаешь от этого что-то зависит? Думаю вы его уже протёрли насквозь. Раз даже не подумали об очевидном... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Obam 37 13 марта Опубликовано 13 марта · Жалоба Думаю вы его уже протёрли насквозь. Помнится, вы тоже участвовали в обсуждении, что 5000 циклов перезаписи флэша, "на столе", израсходовать не реально, не говоря уж про 10000 ;-) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
AlanDrakes 1 14 марта Опубликовано 14 марта · Жалоба Наталкивался на похожее поведение, когда память не успевала считывать данные из себя при слишком быстром тактировании ядра. Проверьте, что латентность Flash'а соответствует скорости ядра. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Сергей Борщ 134 14 марта Опубликовано 14 марта · Жалоба 2 часа назад, AlanDrakes сказал: когда память не успевала считывать данные из себя Это же GD32, у него память отдельно, при старте перегружается в теневое ОЗУ. Дальше работата идет из ОЗУ без задержек. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jcxz 231 14 марта Опубликовано 14 марта · Жалоба 16 часов назад, Obam сказал: Думаю вы его уже протёрли насквозь. Помнится, вы тоже участвовали в обсуждении, что 5000 циклов перезаписи флэша, "на столе", израсходовать не реально, не говоря уж про 10000 😉 Или вы меня с кем-то путаете или речь шла совсем о другом. 5000 реально израсходовать всего за пару месяцев при интенсивной отладке и программных бряках во флешь. PS: Также возможно у ТС выставлены некорректные настройки для J-Link или что-то не так с его подключением (провода, питание, etc.). Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jcxz 231 14 марта Опубликовано 14 марта · Жалоба 6 часов назад, Сергей Борщ сказал: Это же GD32, у него память отдельно, при старте перегружается в теневое ОЗУ. Дальше работата идет из ОЗУ без задержек. А размер кеша каков? Не находится ли указанный адрес за его пределами? И какой именно регион кешируется? Только с 0x00000000 или с 0x08000000 тоже? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Obam 37 14 марта Опубликовано 14 марта · Жалоба Ну да, вас перепутаешь... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться