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

Помогите начать с IAR

Что нужно сделать, чтобы, код DoSmth( SomeArray ); нормально работал ?
void DoSmth( char __flash *Arr ){
}

Только при этом такая функция перестанет работать с массивами в ОЗУ. Поэтому в pgmspace.h введены дополнительные фукции типа puts_P().

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


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

Продолжаем череду глупых вопросов )).

Что может означать подобная картина в дебаггере ( см. аттач ) ?

Появляеться она при вызове одной из функций, причём сразу же после старта дебаггера. Если этот вызов функции закомментировать, то всё работает нормально.

Пробовал рыться в коде с целью выяснения конкретной строчки, наткнулся на простое присваивание.

post-30404-1192002237_thumb.jpg

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


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

Что может означать подобная картина в дебаггере ( см. аттач ) ?
Что он исполняет какой-то код. Возможно, в вашей функции произошло зацикливание.

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


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

Дело в том, что такая картина появляеться СРАЗУ при старте программы, то есть функция, из-за вставки которой в код появляеться такое чудо, ещё не вызывалась.

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


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

Что он исполняет какой-то код. Возможно, в вашей функции произошло зацикливание.

Или улетел куда-нибудь из поля зрения исходника.

Такое возможно при уровнях оптимизации выше среднего, когда текст есть, а код, соответствующий этому тексту соптимизирован (например, в другое место).

В таких случаях я открываю окно дизассемблера и шагаю по нему одновременно контролируя по исходнику.

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


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

Оптимизация выключена, и, как видно на скриншоте, в окне дизассемблера вместо ассемблерного кода стоят прочерки.

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


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

Оптимизация выключена, и, как видно на скриншоте, в окне дизассемблера вместо ассемблерного кода стоят прочерки.
Ну раз это происходит в самом начале - выкиньте из проекта все лишнее и выложите минимальный проект, в котором эффект воспроизводится. Будем посмотреть. Обычно прочерки выводятся при попытке просмотра несуществующей памяти или если дебаггер не может считать данную область памяти по JTAG (нет связи с процессором или процессор чем-то сильно занят). Вы не упомянули, какой процессор и какой отладчик используете.

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


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

Подскажите как в IAR отключить чувствительность к регистру? Чтобы PortA и PORTA было одинаково для компилятора.

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


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

..как в IAR отключить чувствительность к регистру?

Очень неправильная "идея" для любого 'С' компилятора. Забудьте.

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


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

Подскажите как в IAR отключить чувствительность к регистру? Чтобы PortA и PORTA было одинаково для компилятора.

Перейти на Pascal :)

Кстати, ИАР некорректно работает c именами, отличающимися только регистром.

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


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

Почему это некорректно ?, -в соответствии со стандартом,- ANSI _C.

"Компилятор С обрабатывает прописные и строчные буквы, как разные символы"

хотя например, 0xff или 0xFF ему помоему побарабану

ЗЫ, хотя, учебник говорит (повторение- мать учения-:) ), что вышесказанное относится к идентификаторам

"примеры трех форм целых констант

Десятичные Восьмеричные Шестнадцатеричные

32179 076663 0x7db3 или 0x7DB3"

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


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

Почему это некорректно ?, -в соответствии со стандартом,- ANSI _C.

"Компилятор С обрабатывает прописные и строчные буквы, как разные символы"

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

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


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

Если не забудете, покажИте, любопытно будет узнать про эти грабли.

И может, в более поздних версиях этот баг устранен?

(по телесистемах рыться поиском неохота)

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


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

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

Это не я придумал, это - человечество. - Да, есть проколы и неудобства в ИАРЕ, но даже я не идеален. Мне кажется, за качество компайлера иаровцам можно простить все что угодно! К тому же не каждый день ведь приходится переходить на новые чипы, вполне можно ( и многие так делают) брать старый проект как заготовку. Когда кого-то ругаешь, вроде как сам возносишься... А откуда мы так хорошо знаем недостатки системы? Не потому ли, что пользуемся интенсивно и предпочитаем иар другим?!

Но не будем о пристрастиях. Все же вопрос был типа помогите начать. Могу предложить фрагментарный перевод нужных разделов хелпы (усерской гиды или чего еще) с квалифицированным комментарием. В смысле, спросите - переведу.

 

пришлите мне перевод dred73{dog}inbox.ru

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


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

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

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

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

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

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

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

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

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

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