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

 
 
> Непонятные ошибки при компиляции, Непонятные ошибки при компиляции
allsettingsdone
сообщение May 7 2013, 20:29
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 32
Регистрация: 22-01-13
Пользователь №: 75 284



Здравствуйте, пишу значит для STMF4 в коксе, столкнулся с необъяснимыми ошибками вида "Error: offset out of range" на казалось бы совсем нормальных местах (см. скриншот и приложенный код). Возможно кто сталкивался с таким да поможет или хотя бы намекните что это может быть?
Эскизы прикрепленных изображений
Прикрепленное изображение
 

Прикрепленные файлы
Прикрепленный файл  SPI_DMA.rar ( 3.75 килобайт ) Кол-во скачиваний: 16
 
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Genadi Zawidowsk...
сообщение May 7 2013, 20:40
Сообщение #2


Профессионал
*****

Группа: Участник
Сообщений: 1 620
Регистрация: 22-06-07
Из: Санкт-Петербург, Россия
Пользователь №: 28 634



-O0 совместно с -flto смотрится просто поразительно...
Вы или -Os поставьте или -flto уберите.
Может помочь. Если не поможет, то хоть узнаете откуда неправильный ассемблерный код появился - программист вставил или компилятор нагенерировал.
Go to the top of the page
 
+Quote Post
Zol'berg
сообщение May 8 2013, 06:37
Сообщение #3


Участник
*

Группа: Участник
Сообщений: 17
Регистрация: 8-05-13
Пользователь №: 76 761



Всем привет, я новичок на этом форуме и являюсь причиной описанного в данной теме (попросил друга выложить), сразу извиняюсь за не подготовку вопроса должным образом, а если по теме, то..
Отрабатывал инициализацию и работу в отдельных проектах SPI,DMA,GPIO,EXTILine0, по отдельности усе работает laughing.gif ,если собрать до кучи SPI,DMA,GPIO, то тоже нормально работает, добавляю EXTILine0, вылетает эта ошибка, если же при этом убрать SPI, то вновь работает, и подобные заклинания в непонятной зависимости влияют на проект в целом с этой стороны. Чуть раньше было такое, когда объявления типа "GPIO_InitTypeDef GPIO_InitStructure" и "DMA_InitTypeDef DMA_InitStructure" были "вверху проекта", для всех функций (глобальные) - та же ошибка, шаманил, шаманил и перенес их в каждую функцию отдельно, в голове мысль "разницы не должно быть" и это настораживает, но факт, что помогло wacko.gif .
В консоли CooCox увидел "-Os" и "-flto" описанные Вами выше, но что это такое и как с этим бороться не имею и представлений, не могли бы Вы мне разъяснить, заранее спасибо biggrin.gif .
P.S. Если нужно, в целях прозрачности понимания могу очистить проект от неиспользуемого кода и мусора и выложить)).
Go to the top of the page
 
+Quote Post
Сергей Борщ
сообщение May 8 2013, 07:00
Сообщение #4


Гуру
******

Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095



Добро пожаловать.
Для начала отключите -flto. Если поможет - обновляйте компилятор или так и оставьте с отключенной. Оптимизация свежая, все может быть. Если не поможет, читайте дальше.
QUOTE (Zol'berg @ May 8 2013, 09:37) *
и подобные заклинания в непонятной зависимости влияют на проект
Хорошо бы посмотреть на этот ассемблерный файл. Добавьте в ключи компилятора -save-temps и найдите этот файл.

QUOTE (Zol'berg @ May 8 2013, 09:37) *
были "вверху проекта", для всех функций (глобальные) - та же ошибка, шаманил, шаманил и перенес их в каждую функцию отдельно, в голове мысль "разницы не должно быть" и это настораживает, но факт, что помогло wacko.gif .
Если вы не понимаете разницы между глобальными и автоматическими переменными, то это действительно шаманство. А авторы "примеров" к "библиотекам" ее тоже, похоже, не понимают. Их примеры - отличный образец как сделать быстрое железо медленным.
QUOTE (Zol'berg @ May 8 2013, 09:37) *
В консоли CooCox увидел "-Os" и "-flto" описанные Вами выше, но что это такое и как с этим бороться не имею и представлений
Ройтесь по менюшкам, ищите галочки или выпадающие списки с такими или похожими названиями (-flto может называться Link-time optimization). Эти опции связаны с оптимизацией.


--------------------
На любой вопрос даю любой ответ
"Write code that is guaranteed to work, not code that doesn’t seem to break" (C++ FAQ)
Go to the top of the page
 
+Quote Post
Zol'berg
сообщение May 8 2013, 08:42
Сообщение #5


Участник
*

Группа: Участник
Сообщений: 17
Регистрация: 8-05-13
Пользователь №: 76 761



Цитата(Сергей Борщ @ May 8 2013, 10:00) *
Если вы не понимаете разницы между глобальными и автоматическими переменными, то это действительно шаманство. А авторы "примеров" к "библиотекам" ее тоже, похоже, не понимают. Их примеры - отличный образец как сделать быстрое железо медленным.

Глобальные и локальные переменные мне знакомы, работают по разному, но суть одна-в том, что работать должно и так и так ( и глобальные для всех функций инициализации и локальные - в каждой функции свои), а по поводу "медленных примеров", я не только/только начал изучение STM32, для меня и C нов, т.к. ранее работал с AVR на ассемблере! А как сделать быстрее, писать конфигурацию прямо в регистры?

В моем проекте инициализацию можно провести медленно.
Но есть другой вопрос, уже наверное не по теме : как добиться быстрой работы с портами, ассемблерные вставки? Так не могу найти описания этих самых команд для STM32F4! Может есть темы на эту тему?))
Go to the top of the page
 
+Quote Post



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

 


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


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