реклама на сайте
подробности

 
 
> Оптимизация в Keil
Arlleex
сообщение Jul 21 2015, 18:24
Сообщение #1


Местный
***

Группа: Участник
Сообщений: 492
Регистрация: 12-11-11
Пользователь №: 68 264



Всем привет!
Использую Keil 5 для программирования STM32.
Заметил интересную особенность. Выключаю оптимизацию (Level 0), запускаю код, в нем все прозрачно и безобидно - выделяется в функции локальная структура, и я ее заполняю. Выхожу из функции в main, захожу в другую функцию и отладчик отваливается с сообщением

Путем проб и ошибок выявил, что, закомментировав одно из заполнений полей структуры,
Код
struct.a = 0;
struct.b = 100;
struct.c = 45;
// struct.d = 50;
struct.e = 150;

все работает. Т.е. поймал багу прямо на строчке заполнения структуры. Если перед объявлением структуры объявить еще что-нибудь, баг тоже исчезает... Подобного никогда не видел. При оптимизации Level 3 все работает, даже при заполнении всех полей структуры. Что там натворил оптимизатор такого?
P.S. И еще вопрос. Почему при оптимизации Level 0
Код
volatile const unsigned int a = 100;

разместится в SRAM, а если она объявлена но не используется по коду - выкидывается вовсе из map-файла (ведь Level 0 предполагает ничего не оптимизировать)? Если просто
Код
const unsigned int a = 100;

то все хорошо - константа будет во Flash.
Для Level 3 вроде как оба случая разместят константу во Flash.
Объясните, пожалуйста, или направьте на нужную информацию.

Сообщение отредактировал Arlleex - Jul 21 2015, 18:25
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- Arlleex   Оптимизация в Keil   Jul 21 2015, 18:24
- - Fedor   Больше похоже на то что в камень заливается не то ...   Jul 21 2015, 18:42
|- - Arlleex   Пересобирал, чего-только не пересобирал. Думал, фл...   Jul 21 2015, 18:49
- - diwil   вне зависимости от volatile или нет, если символ н...   Jul 21 2015, 18:54
|- - scifi   Цитата(diwil @ Jul 21 2015, 21:54) не сов...   Jul 21 2015, 19:16
- - aaarrr   Цитата(Arlleex @ Jul 21 2015, 21:24) отла...   Jul 21 2015, 19:02
- - Arlleex   aaarrr, пардон. Отладчик отваливается с сообщением...   Jul 21 2015, 19:11
- - Arlleex   Покажу на псевдокоде. Кодint main(void) {...   Jul 21 2015, 19:32
|- - Fedor   Если структуру struct s; объявить глобальной или ...   Jul 21 2015, 19:42
||- - Arlleex   Fedor, глобальной - не отваливается. Статической -...   Jul 21 2015, 19:46
|- - scifi   Цитата(Arlleex @ Jul 21 2015, 22:32) Само...   Jul 21 2015, 19:54
- - Arlleex   К сожалению, я шагал не по ассемблеровским инструк...   Jul 21 2015, 19:56
- - Golikov A.   у меня глупый, возможно, вопрос. А у вас какой ко...   Jul 22 2015, 06:24
- - kolobok0   Цитата(Arlleex @ Jul 21 2015, 21:24) ...И...   Jul 22 2015, 07:21
- - Arlleex   Golikov A., вопросы не бывают глупыми, вопросы быв...   Jul 22 2015, 18:56
|- - kolobok0   Цитата(Arlleex @ Jul 22 2015, 21:56) ...в...   Jul 23 2015, 09:45
- - Golikov A.   А никаких модулей защиты памяти и прочей байды слу...   Jul 23 2015, 05:26
- - Booger   Добрый день! Не стал создавать новую тему. Воп...   Feb 5 2016, 12:44
|- - scifi   Цитата(Booger @ Feb 5 2016, 15:44) Может ...   Feb 5 2016, 13:15
- - vlad_new   Я не раз нарывался на проблеммы с оптимизатором в ...   Feb 7 2016, 00:24
|- - scifi   Цитата(vlad_new @ Feb 7 2016, 03:24) Я не...   Feb 7 2016, 06:45
- - ViKo   Я считаю, что работоспособность программы при любы...   Feb 7 2016, 05:58
|- - zltigo   QUOTE (ViKo @ Feb 7 2016, 07:58) Я считаю...   Feb 7 2016, 06:42
|- - ViKo   Цитата(zltigo @ Feb 7 2016, 09:42) Именно...   Feb 7 2016, 08:38
|- - scifi   Цитата(ViKo @ Feb 7 2016, 11:38) Иногда в...   Feb 7 2016, 09:11
|- - zltigo   QUOTE (ViKo @ Feb 7 2016, 10:38) Иногда в...   Feb 7 2016, 09:37
- - RabidRabbit   На выравнивание pdwVal смотрите. Возможно при O0 к...   Feb 8 2016, 03:51
- - Booger   В том то и дело, товарищи! Работает на всех ур...   Feb 8 2016, 04:14
- - Сергей Борщ   Смею предположить, что с включенной оптимизацией к...   Feb 8 2016, 05:44
- - Booger   Спасибо всем за помощь! Действительно, если и...   Feb 9 2016, 05:30
- - GetSmart   В 4-ом Кейле (точнее не скажу) для ARM7 таргета ви...   Feb 9 2016, 22:20


Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 19th July 2025 - 00:37
Рейтинг@Mail.ru


Страница сгенерированна за 0.01565 секунд с 7
ELECTRONIX ©2004-2016