|
|
  |
Разная компиляция в Debug и Release |
|
|
|
Apr 25 2008, 11:22
|

Местный
  
Группа: Свой
Сообщений: 201
Регистрация: 6-01-05
Пользователь №: 1 830

|
Цитата(SasaVitebsk @ Apr 25 2008, 13:16)  IAR AVR 5.10. Микруха м88. В debug из под JTAG ICE MK2 прекрасно работает. Если программирую внешним программатором, то изделие не работает.
Фузы одинаковы. Опции в проекте одинаковые на всех вкладках.
Кто сталкивался? В чём может быть дело? В оптимизации. Вот несколько причин, когда оптимизатор кардинально ломает функционирование: 1. может соптимизировать (вообще выбросить) переменную, которая ошибочно не была объявлена как volatile 2. может переставить порядок следования команд при инициализации периферии, что ведет к их неправильной работе 3. может выбросить несколько подряд следующих команд в функции, например, задержки, что приводит к неправильному функционированию времязадающих функций. 4. редко (но вполне возможно) может быть просто глюк оптимизатора. Резюме. Не обольщайтесь, что у вас в Debug-е программа вроде бы работает. Оптимизатор - мощная штука не только для уменьшения объема используемой памяти и скорости выполнения, но и для вывления скрытых (неочевидных) ошибок программиста. Так что ищите и найдете  PS. Ну, это все если я правильно понял ваш вопрос и Debug с Release отличаются уровнем оптимизации.
|
|
|
|
|
Apr 25 2008, 11:52
|

Местный
  
Группа: Участник
Сообщений: 355
Регистрация: 27-03-07
Из: Україна, Чуднів
Пользователь №: 26 530

|
Цитата(Dir @ Apr 25 2008, 14:22)  PS. Ну, это все если я правильно понял ваш вопрос и Debug с Release отличаются уровнем оптимизации. Да если внимательно поссмотреть то можно увидеть Фузы одинаковы. Опции в проекте одинаковые на всех вкладках А с минимальным уровнем оптимизации не пробовали? Внешний программатор испытанный?
--------------------
нельзя недооценивать предсказуемость глупости
|
|
|
|
|
Apr 25 2008, 14:58
|

Местный
  
Группа: Свой
Сообщений: 201
Регистрация: 6-01-05
Пользователь №: 1 830

|
Цитата(singlskv @ Apr 25 2008, 15:39)  Не имеет права, весь доступ к портам объявлен как volatile. Точно не имеет права? volatile это ведь говорит только о том, что переменная на чтение меняется когда хочет. Момент записи volatile не регламентирует. Сам я на всякий случай процедуру инициализации провожу с прагмами no optimize или no code motion
|
|
|
|
|
Apr 25 2008, 15:17
|
дятел
    
Группа: Свой
Сообщений: 1 681
Регистрация: 13-05-06
Из: Питер
Пользователь №: 17 065

|
Цитата(Dir @ Apr 25 2008, 18:58)  Точно не имеет права? Точнее не бывает!  Цитата volatile это ведь говорит только о том, что переменная на чтение меняется когда хочет. Момент записи volatile не регламентирует. Факт volatile доступа, говорит о том что в этот момент обязательно будет "sequence points", sequence points менять местами НЕЛЬЗЯ !!! Так что момент volatile доступа вполне регламентирован... Почитайте стандарт насчет sequence points и side effects, все станет на свои места.
|
|
|
|
|
Apr 29 2008, 13:45
|
Частый гость
 
Группа: Свой
Сообщений: 94
Регистрация: 14-04-05
Из: Россия
Пользователь №: 4 130

|
Цитата(SasaVitebsk @ Apr 25 2008, 14:16)  Фузы одинаковы.
Кто сталкивался? В чём может быть дело? DWEN (debugWIRE Enable) запрещаете?
|
|
|
|
|
  |
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0
|
|
|