Jump to content

    
Gradient

IAR AVR: Приложение не стартует

Recommended Posts

Столкнулся с такой проблемой.

IAR для AVR, ver6.60.3 Процессор AT90CAN128

Пока писал и отлаживал код "на столе", устройство от питания не отключалось, работало стабильно и все были удивительно счастливы. Но пришел момент передачи заказчику... и тут началось.  Устройство несколько раз вернули с комментарием "не запускается вообще". Стал разбираться. Оказалось, что плата может успешно стартовать, пока не разрядятся емкости на pcb и ram не очистится... это может длиться мин 10-15, поэтому сразу и не нашли.

Далее стал искать почему. После полной разрядки, дебагер попадает на метку __dedug_break, код __low_level_init вроде выполняется, но в итоге процесс до вызова main() не доходит. Те переменные и объекты вероятно не инициализируются.  Стал понемногу "отрезать" код из flash и после порога 32k всё вдруг заработало, стартует без проблем. 

Сейчас размер кода:

33 085 bytes of CODE memory (+     16 range fill )
3 368 bytes of DATA memory (+ 115 absolute )
203 bytes of XDATA memory (+ 2 056 absolute )
6 bytes of CONST memory
16 534 bytes of FARCODE memory

Подскажите, где посмотреть и что с этим делать?

Есть ли вероятность, что это баг IAR и он не правильно делает инициализацию?

 

 

Share this post


Link to post
Share on other sites
6 minutes ago, Gradient said:

это может длиться мин 10-15

У вас место конденсаторов ионисторы что-ли стоят? Ну закоротите пинцетом. И вы приёмо-сдадочные испытания не проводите вообще? Хотя бы элементарный прогон, который бы сразу выявил эту проблему. Или ваше устройство сразу со стола к заказчику поехало без корпуса?

В который раз замечаю, что у вас проблемы с линкером. И в который раз вы, видимо, невнимательно читаете документацию.

Share this post


Link to post
Share on other sites
2 hours ago, Gradient said:

я вам уже писал куда вам пойти... ;)

Что поделать, если вы упорно совершаете одни и те же ошибки. Вам бы сказать спасибо, что вам помогают. Примите чужую помощь, если собственных мозгов не хватает.

Share this post


Link to post
Share on other sites

Помогайте плиз где то в другом месте.

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

Share this post


Link to post
Share on other sites
1 minute ago, Gradient said:

я Вас лично несколько раз уже просил больше мне не "помогать".

Но вам. похоже, нравится дискутировать со мной. Иначе бы вы просто промолчали и проигнорировали меня. А я - видя потерю интереса, больше бы не писал.

Share this post


Link to post
Share on other sites

Нет.. не нравится, вы только мешаете и гадите в темах.

Вы бесполезный тролль, и я не хочу чтоб вы в моей теме что-то писали и портили.

Так Вам более понятно?

Уходите...

Share this post


Link to post
Share on other sites

не знаю, как для IAR/AVR, но если порыться в каталоге с IAR можно найти исходник стартап-кода на ASM, прикомпоновать его к проекту, и в опции проекта "debug" метку начала кода для отладки сменить с "main" на этот reset_code (не помню как оно именуется, см. первую метку в инит-коде).

Share this post


Link to post
Share on other sites
2 часа назад, k155la3 сказал:

но если порыться в каталоге с IAR можно найти исходник стартап-кода на ASM, прикомпоновать его к проекту

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

Share this post


Link to post
Share on other sites

Да, нашел!

Файл "segment_init.с"

строка 55 /* Initialize the INITTAB pointer. */

Следует исправить:

InitTable =  __segment_begin("INITTAB");

InitTable = (SegmentInitBlockPtr_Type) __segment_begin("INITTAB");

И всё снова как новое!

 

Спасибо парни... спасли.

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.