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

 
 
> Оптимизация в 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
 
Start new topic
Ответов
kolobok0
сообщение Jul 22 2015, 07:21
Сообщение #2


практикующий тех. волшебник
*****

Группа: Участник
Сообщений: 1 190
Регистрация: 9-09-05
Пользователь №: 8 417



Цитата(Arlleex @ Jul 21 2015, 21:24) *
...Использую Keil 5 для программирования STM32....


по внешним признакам было что то подобное с кейлом, под 51 мк.
правда там не си а азм юзал, но суть следующая = тупо изменялся азм на выходе компилятора.
т.е. я нашёл место различия(пара-тройка байт где-то), и после модификации исходников, компиляции - лез в промежуточные файлы = оно родимое.
так-же плавало, так-же влияло и до/после вставка/удаление. вообще не связанное с исходником код. хоть левое, хоть правое - одно цветом.
списал на глюк кейла. т.к. не официальная версия - тупо сообщил на форум просто. т.к. проект корректировался дальше - забил.
прогоны сбоев не дали.

осадочек остался sm.gif

PS
Да, год этак 2005 где-то...

Сообщение отредактировал kolobok0 - Jul 22 2015, 07:21
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
- - 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 Текстовая версия Сейчас: 27th July 2025 - 04:43
Рейтинг@Mail.ru


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