|
Глюки компилятора IAR?, Важно! Код прошивки по непонятным причинам не стартует в МК AVR. |
|
|
|
Jan 10 2008, 19:42
|
Частый гость
 
Группа: Свой
Сообщений: 81
Регистрация: 26-10-06
Из: Россия, Пенза
Пользователь №: 21 706

|
Всех с прошедшими праздниками!
Присказка. Чуть больше 6 месяцев вплотную работаю с контроллерами ATMEL и компилятором IAR. Каких только финтов не выкидывала эта связка и вот очередная проблема.Программлю я поэтапно, шаг за шагом проверяя функционально законченные блоки кода. В результате, у меня получился основной код девайса и код, который производит самотестирование периферии контроллера. По отдельности все отлично и стабильно работает. Пришло время отлаживать всё в комплексе и тут начался полтергейст, который я пытаюсь изкоренить методом прямого шаманства. В чём причина конккретно не знаю, одни догадки... Суть проблемы. Короче код после прошивки то запускаетя и работает, то вообще не исполняется ни одной команды. Крутил оптимизацию, распределение памяти - не помогло. Со сбросом всё в порядке, схема не причем, контроллер тоже. Остается компилятор и наверное настройки файла *.xcl Контроллер использую Atmega8. Пишу на С. Использую стандартный lnkm8.xcl. high оптимизация проекта по размеру. IDE: IAR 4.20A/W32 [Evaluation] (4.20.1.3). Компилятор: IAR XLIB 3.29L/386 (3.29.0.12) IAR XLINK 4.59Z (4.59.26.0)
Из своего опыта. Кодил я девайс: считыватель чип-карт, который подключается к USB. Отлаживал отдельно часть кода для работы с картой ичасть кода для обмена по USB. Поставил оптимизацию всего проекта по скорости, т.к. 10 байт с карты приходили верный, а остальные контроллер не успевал обрабатывать (кодил опять же на С). Ладно добился правильной работы оптимизацией. Как только я начал отлаживать все в комплексе - обмен с картой и обмен по USB, то начались проблемы! С картой обмен есть, с USB нет. Оптимизацию вырубаю - наоборот с USB работает, а с карты искаженные данные. Долго я шаманил над проектом... И в итоге сделал так: включил оптимизацию проекта по скорости, а перед теми функциями, которые конкретно отвечают за обмен с USB, воткнул директиву компилятора отключающую оптимизацию именно это процедуры. После этого всё работает. Это конечно ни есть хорошо, но выходя я пока так и не нашёл. Одним словом - шаманство!!!
Посоветуйте, в каком направлении мне копать! Кто сталкивался с такими проблемами?
|
|
|
|
|
 |
Ответов
|
Jan 20 2008, 15:26
|
Частый гость
 
Группа: Свой
Сообщений: 81
Регистрация: 26-10-06
Из: Россия, Пенза
Пользователь №: 21 706

|
Выкладываю исходники проекта. Попробуйте прошить контроллер и прочитать содержимое EEPROM. Что можно предпринять по оптимизации проекта, с учетом вышеизложенных проблем?
Прикрепленные файлы
pwrc.rar ( 286.74 килобайт )
Кол-во скачиваний: 62
|
|
|
|
|
Jan 20 2008, 17:34
|
Знающий
   
Группа: Участник
Сообщений: 596
Регистрация: 26-05-06
Из: Москва
Пользователь №: 17 484

|
Цитата(SasaVitebsk @ Jan 20 2008, 19:58)  Самые распространнённые в этом случае ошибки это ошибки связанные с volatile ... Я не нашел в Вашей програме ни одного "volatile". Прочитайте вот это и добавте "volatile" для тех переменных для которых надо. Сорри что текст на англискон. My program doesn't recognize a variable updated within an interrupt routineWhen using the optimizer, in a loop like the following one: Код uint8_t flag; ... ISR(SOME_vect) { flag = 1; } ...
while (flag == 0) { ... } the compiler will typically access flag only once, and optimize further accesses completely away, since its code path analysis shows that nothing inside the loop could change the value of flag anyway. To tell the compiler that this variable could be changed outside the scope of its code path analysis (e. g. from within an interrupt routine), the variable needs to be declared like: Код volatile uint8_t flag;
|
|
|
|
Сообщений в этой теме
DiMonstr Глюки компилятора IAR? Jan 10 2008, 19:42 prottoss Цитата(DiMonstr @ Jan 11 2008, 02:42) Пос... Jan 10 2008, 19:59 DiMonstr Забыл спросить. А есть ли у компилятора такая фишк... Jan 10 2008, 20:26 arttab у вас не было подозрения что работа по usb и карто... Jan 11 2008, 02:01 GDI При борьбе со стеками очень помогает включение ген... Jan 11 2008, 07:02 DiMonstr Цитата(GDI @ Jan 11 2008, 10:02)
Этой фи... Jan 12 2008, 14:28  Dog Pawlowa Цитата(DiMonstr @ Jan 12 2008, 18:28) И т... Jan 12 2008, 14:48  zltigo Цитата(DiMonstr @ Jan 12 2008, 16:28) Нее... Jan 12 2008, 14:49   DiMonstr Цитата(zltigo @ Jan 12 2008, 17:49)
Есл... Jan 12 2008, 15:00   singlskv Цитата(zltigo @ Jan 12 2008, 17:49) Повто... Jan 12 2008, 18:21    Сергей Борщ Цитата(singlskv @ Jan 12 2008, 20:21) пре... Jan 12 2008, 18:56    DiMonstr Цитата(singlskv @ Jan 12 2008, 21:21) Авт... Jan 12 2008, 19:56     Baser Цитата(DiMonstr @ Jan 12 2008, 21:52) В д... Jan 12 2008, 20:11     Сергей Борщ Цитата(DiMonstr @ Jan 12 2008, 21:56) А у... Jan 12 2008, 20:12      DiMonstr Цитата(Сергей Борщ @ Jan 12 2008, 23:12) ... Jan 12 2008, 20:21    zltigo Цитата(singlskv @ Jan 12 2008, 20:21) Это... Jan 12 2008, 20:00 Сергей Борщ Цитата(DiMonstr @ Jan 10 2008, 21:42) При... Jan 11 2008, 08:11 DiMonstr Цитата(Сергей Борщ @ Jan 11 2008, 11:11) ... Jan 12 2008, 14:03  zltigo Цитата(DiMonstr @ Jan 12 2008, 15:59) Да ... Jan 12 2008, 14:04 MrYuran Цитата(Сергей Борщ @ Jan 11 2008, 11:11) ... Mar 3 2008, 14:31  SasaVitebsk Цитата(MrYuran @ Mar 3 2008, 18:31) А я ч... Mar 3 2008, 15:46  Сергей Борщ Цитата(MrYuran @ Mar 3 2008, 16:31) А я ч... Mar 3 2008, 18:28 zltigo ЦитатаЕсли говорить...
Попробуйте хотя-бы прочитат... Jan 12 2008, 15:10 DiMonstr Цитата(zltigo @ Jan 12 2008, 18:10)
Код... Jan 12 2008, 15:20 Dog Pawlowa Код рабочий? Тогда какие проблемы? Jan 12 2008, 15:52 AndyBig Если контроллер не успевает выполнять все функции ... Jan 12 2008, 22:58  DiMonstr Цитата(SasaVitebsk @ Jan 20 2008, 19:58) ... Jan 20 2008, 17:23   DiMonstr Цитата(aesok @ Jan 20 2008, 20:34)
Прави... Jan 20 2008, 18:39 SasaVitebsk Приведу пример для понимания происходящего
допусти... Jan 20 2008, 19:01 forever failure Кто нить ещё смотрел этот проект?
Впечатление в ц... Jan 21 2008, 03:50 DiMonstr Цитата(forever failure @ Jan 21 2008, 06... Jan 21 2008, 11:58  Сергей Борщ Цитата(DiMonstr @ Jan 21 2008, 13:58) 1) ... Jan 21 2008, 12:19   Qwertty Цитата(Сергей Борщ @ Jan 21 2008, 15:19) ... Jan 21 2008, 12:56    defunct Цитата(Qwertty @ Jan 21 2008, 15:56) Я во... Jan 21 2008, 13:04     Qwertty Цитата(defunct @ Jan 21 2008, 16:04) type... Jan 21 2008, 13:21   DiMonstr Цитата(Сергей Борщ @ Jan 21 2008, 15:19) ... Jan 21 2008, 19:35    SasaVitebsk Цитата(DiMonstr @ Jan 21 2008, 23:27) Т.е... Jan 21 2008, 19:43  aesok В функциях EEPROM_* - не должны разрешаться прерыв... Jan 21 2008, 20:05   DiMonstr Цитата(aesok @ Jan 21 2008, 23:05) В функ... Jan 24 2008, 17:13    defunct Цитата(DiMonstr @ Jan 24 2008, 20:13) Я г... Jan 24 2008, 17:24 forever failure /* if (Value > MinValue & Value < MaxVal... Jan 21 2008, 12:42 SasaVitebsk Если честно я тоже скачал данную прогу. Но при так... Jan 21 2008, 12:52 defunct ЦитатаА я сначала и объявлял переменные через стру... Jan 22 2008, 00:22 SasaVitebsk Цитата(defunct @ Jan 22 2008, 04:22) Саша... Jan 23 2008, 19:45  Сергей Борщ Цитата(SasaVitebsk @ Jan 23 2008, 21:45) ... Jan 23 2008, 22:37   defunct Цитата(Сергей Борщ @ Jan 24 2008, 01:37) ... Jan 23 2008, 23:37    Сергей Борщ Цитата(defunct @ Jan 24 2008, 01:37) Как ... Jan 24 2008, 15:17 Freeze Anti Как я и предполагал с самого начала, вашей програм... Jan 23 2008, 18:45 DiMonstr Цитата(Freeze Anti @ Jan 23 2008, 21:45) ... Jan 24 2008, 16:44 SasaVitebsk 2 Сергей Борщ.
Собственно именно это я и хотел ска... Jan 24 2008, 12:47 prottoss ЦитатаА можно ли увеличить пространство оперативки... Jan 24 2008, 16:58 DiMonstr Цитата(prottoss @ Jan 24 2008, 19:58) Мож... Jan 24 2008, 18:49  prottoss Цитата(DiMonstr @ Jan 25 2008, 01:49) Не ... Jan 24 2008, 19:06   DiMonstr Цитата(prottoss @ Jan 24 2008, 22:06)
Да... Jan 24 2008, 19:34 SasaVitebsk И вы невнимательно прочитали то, что сами процитир... Jan 24 2008, 18:54 Freeze Anti про типы переменных я говорил, что если у вас пере... Jan 24 2008, 19:32 prottoss ЦитатаНо я так и не врубился че значит цифра ... Jan 24 2008, 20:17 DiMonstr Цитата(prottoss @ Jan 24 2008, 23:17) Раз... Jan 24 2008, 21:25  Сергей Борщ Цитата(DiMonstr @ Jan 24 2008, 23:25) Всё... Jan 25 2008, 08:45   DiMonstr Цитата(Сергей Борщ @ Jan 25 2008, 11:45) ... Jan 25 2008, 13:31    SasaVitebsk Цитата(DiMonstr @ Jan 25 2008, 17:31) В у... Jan 25 2008, 13:36    Сергей Борщ Цитата(DiMonstr @ Jan 25 2008, 15:31) Эта... Jan 25 2008, 13:58     DiMonstr Цитата(Сергей Борщ @ Jan 25 2008, 16:58) ... Jan 25 2008, 14:09 Сергей Борщ Вы утверждали, что это "Эта фишка (и не тольк... Jan 25 2008, 15:09 DiMonstr Цитата(Сергей Борщ @ Jan 25 2008, 18:09) ... Feb 9 2008, 19:41 DiMonstr А может попробовать скомпилять проект в WinAVR? Да... Feb 9 2008, 21:24 singlskv Цитата(DiMonstr @ Feb 10 2008, 00:24) А м... Feb 9 2008, 22:09  zltigo Цитата(singlskv @ Feb 10 2008, 01:09) Вы ... Feb 9 2008, 23:17   DiMonstr Цитата(zltigo @ Feb 10 2008, 02:17)
Я с ... Feb 10 2008, 09:28   singlskv Цитата(zltigo @ Feb 10 2008, 02:17) Можно... Feb 11 2008, 21:00 forever failure Хинт: уберите весь (да, весь, вообще весь) код, до... Feb 10 2008, 10:58 DiMonstr Цитата(forever failure @ Feb 10 2008, 13... Feb 10 2008, 12:32 DiMonstr Попутно ещё вопрос. Что происходит если программа ... Feb 10 2008, 13:35 VladislavS 0xFFFF так же как NOP отрабатывается. Ничем забива... Feb 10 2008, 14:56 DiMonstr Как в IAR написать код, который будет выполняться ... Feb 11 2008, 20:17 zltigo Цитата(DiMonstr @ Feb 11 2008, 23:17) Ком... Feb 11 2008, 20:48 DiMonstr Спасибо. Feb 11 2008, 21:00 bzx Цитата(DiMonstr @ Feb 12 2008, 00:00) Спа... Feb 11 2008, 21:20  DiMonstr Цитата(bzx @ Feb 12 2008, 00:20) Надеюсь ... Feb 12 2008, 17:44   singlskv Цитата(DiMonstr @ Feb 12 2008, 20:44) Во-... Feb 12 2008, 18:42 forever failure Кстати, кто-нить смотрел checkjump.asm ? Особенно ... Feb 13 2008, 06:09 DiMonstr Цитата(forever failure @ Feb 13 2008, 09... Feb 13 2008, 20:31  bzx Цитата(DiMonstr @ Feb 13 2008, 23:31) Или... Feb 13 2008, 21:21 GDI ЦитатаЯ не понимаю почему не стоит делать проверки... Feb 13 2008, 07:39 forever failure Прогнать в симуляторе АВР студии полученный код не... Feb 14 2008, 04:36 DiMonstr Цитата(forever failure @ Feb 14 2008, 07... Feb 14 2008, 06:10  IgorKossak Цитата(DiMonstr @ Feb 14 2008, 08:10) Про... Feb 14 2008, 06:34  Сергей Борщ Цитата(DiMonstr @ Feb 14 2008, 08:10) Да ... Feb 14 2008, 08:48 DiMonstr Всех приветствую!!!
Я нашел причину ... Mar 3 2008, 19:51
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0
|
|
|