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

uint32_t len = StrLen(com_str); выдает мусор с оптимизацией.

Содержимое R0 посмотрите после возвращения из StrLen - мусор?

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


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

usart1_rx_buf принимает правильные значения, адрес передается правильно нигде не затирается.

переделал на volatile - по прежнему uint32_t len = StrLen(com_str); выдает мусор с оптимизацией.

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

Прочитайте мое сообщение еще раз внимательно. После всех озвученных мной пунктов программа падает в HF?

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


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

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

Вот все же не должен - ничего страшного с ним оптимизатор не сделает.

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


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

Вот все же не должен - ничего страшного с ним оптимизатор не сделает.

Согласен, тут я не прав, поспешно сказал.

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

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


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

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

Прочитайте мое сообщение еще раз внимательно. После всех озвученных мной пунктов программа падает в HF?

 

да.

 

то есть включил оптимизацию - хрен тебе адекватность - выпал в хард фолт. потом отключил дебагер, сделал рисет.....и там же остался - в жо...в хард фолте

 

нет что то ахренительно сломалось. глобальные переменные принимают мусорные значения даже при инициализации.

 

ЧИЗЭС КРАЙСТ! вот я дурак. ошибся и передавал в функцию memcpy(&mot_task, addr, size); неправильный размер. у меня там по ходу убивалось около тысячи переменных в РАМ.

 

все ж таки жив ИАРка, рулит. надо свой мемкопи написать с проверкой размера.

Изменено пользователем Jenya7

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


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

Видимо какие-то новые расширения стандарта си...
18 лет прошло. Этот стандарт Си уже не девочка, а вы все "новые".

 

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


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

ЧИЗЭС КРАЙСТ! вот я дурак. ошибся и передавал в функцию memcpy(&mot_task, addr, size); неправильный размер. у меня там по ходу убивалось около тысячи переменных в РАМ.

Семён Семёныч...

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


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

IAR сошел с ума.
Мне кажется, кого-то уже пора привлекать за клевету.

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


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

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

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

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

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

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

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

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

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

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