aaarrr 63 6 июля, 2018 Опубликовано 6 июля, 2018 · Жалоба uint32_t len = StrLen(com_str); выдает мусор с оптимизацией. Содержимое R0 посмотрите после возвращения из StrLen - мусор? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Arlleex 131 6 июля, 2018 Опубликовано 6 июля, 2018 · Жалоба usart1_rx_buf принимает правильные значения, адрес передается правильно нигде не затирается. переделал на volatile - по прежнему uint32_t len = StrLen(com_str); выдает мусор с оптимизацией. Вы когда оптимизацию включаете - забудьте про адекватность отладчика сразу. Прочитайте мое сообщение еще раз внимательно. После всех озвученных мной пунктов программа падает в HF? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
aaarrr 63 6 июля, 2018 Опубликовано 6 июля, 2018 · Жалоба Сам буфер usart1_rx_buf должен иметь модификатор volatile, поскольку является буфером приема сырых данных и важно дать понять оптимизатору, чтобы не борогозил особо. Вот все же не должен - ничего страшного с ним оптимизатор не сделает. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Arlleex 131 6 июля, 2018 Опубликовано 6 июля, 2018 · Жалоба Вот все же не должен - ничего страшного с ним оптимизатор не сделает. Согласен, тут я не прав, поспешно сказал. Но, для укрощения рук оптимизатора указатель на этот буфер (в данном случае аргумент функции) я бы сделал с этим модификатором, на мой взгляд. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jenya7 0 6 июля, 2018 Опубликовано 6 июля, 2018 (изменено) · Жалоба Вы когда оптимизацию включаете - забудьте про адекватность отладчика сразу. Прочитайте мое сообщение еще раз внимательно. После всех озвученных мной пунктов программа падает в HF? да. то есть включил оптимизацию - хрен тебе адекватность - выпал в хард фолт. потом отключил дебагер, сделал рисет.....и там же остался - в жо...в хард фолте нет что то ахренительно сломалось. глобальные переменные принимают мусорные значения даже при инициализации. ЧИЗЭС КРАЙСТ! вот я дурак. ошибся и передавал в функцию memcpy(&mot_task, addr, size); неправильный размер. у меня там по ходу убивалось около тысячи переменных в РАМ. все ж таки жив ИАРка, рулит. надо свой мемкопи написать с проверкой размера. Изменено 6 июля, 2018 пользователем Jenya7 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Сергей Борщ 119 6 июля, 2018 Опубликовано 6 июля, 2018 · Жалоба Видимо какие-то новые расширения стандарта си...18 лет прошло. Этот стандарт Си уже не девочка, а вы все "новые". Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
scifi 1 6 июля, 2018 Опубликовано 6 июля, 2018 · Жалоба ЧИЗЭС КРАЙСТ! вот я дурак. ошибся и передавал в функцию memcpy(&mot_task, addr, size); неправильный размер. у меня там по ходу убивалось около тысячи переменных в РАМ. Семён Семёныч... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jenya7 0 7 июля, 2018 Опубликовано 7 июля, 2018 · Жалоба Семён Семёныч... ну а где механизмы защиты? на меммув перейти что ли... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Сергей Борщ 119 7 июля, 2018 Опубликовано 7 июля, 2018 · Жалоба IAR сошел с ума.Мне кажется, кого-то уже пора привлекать за клевету. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jenya7 0 7 июля, 2018 Опубликовано 7 июля, 2018 · Жалоба Мне кажется, кого-то уже пора привлекать за клевету. :) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться