Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Почему-то перестало компилироваться
Форум разработчиков электроники ELECTRONIX.ru > Cистемный уровень проектирования > Операционные системы > scmRTOS
_Артём_
Выдаёт такую ошибку:
../scmRTOS/Cortex-M0/OS_Target.h:62:2: error: #error "This file must be compiled for ARMv6-M (Cortex-M0) processor only."
Что может быть?
AHTOXA
Кто-то потерял в makefile строчку
MCU = cortex-m0
?
_Артём_
Цитата(AHTOXA @ Feb 28 2012, 17:54) *
Кто-то потерял в makefile строчку
MCU = cortex-m0
?

Только кто этот кто-то?
Из makefile:
Цитата
# program version
VER_MAJOR = 0
VER_MINOR = 1

TOOL = arm-none-eabi-
# TOOL = arm-kgp-eabi-

# compile options
MCU = cortex-m0
OPTIMIZE = -O3
USE_LTO = NO


Даже не теряюсь в догадках. Вооще не понимаю.
AHTOXA
1. А оно вообще компилировалось?
2. Может подхватился другой makefile?
3. Проверьте дальше в makefile наличие строчек
Код
    FLAGS   = -mcpu=$(MCU) -mthumb
...
    AFLAGS  = $(FLAGS)
...    
    CFLAGS  = $(FLAGS)
    CFLAGS  += $(OPTIMIZE)
...    
    CXXFLAGS    = $(FLAGS)
    CXXFLAGS    += $(OPTIMIZE)
_Артём_
Цитата(AHTOXA @ Feb 28 2012, 18:29) *
1. А оно вообще компилировалось?

Компилировалось и работало.

Цитата(AHTOXA @ Feb 28 2012, 18:29) *
2. Может подхватился другой makefile?

Хз. Как проверить?

Цитата(AHTOXA @ Feb 28 2012, 18:29) *
3. Проверьте дальше в makefile наличие строчек

Есть строчки (makefile - ваш).
AHTOXA
Цитата(_Артём_ @ Feb 28 2012, 22:41) *
Как проверить?

Ну например заменить все вхождения слова "compiling" на слово "compiliren", и посмотреть в консоли, появится ли новое слово sm.gif
_Артём_
Цитата(AHTOXA @ Feb 28 2012, 20:14) *
Ну например заменить все вхождения слова "compiling" на слово "compiliren", и посмотреть в консоли, появится ли новое слово sm.gif


Так и сделал:
Цитата
--- compiliren ./src/main.cpp...
In file included from ../scmRTOS/Common/scmRTOS.h:54:0,
from ./src/main.cpp:48:
Сергей Борщ
QUOTE (_Артём_ @ Feb 28 2012, 20:44) *
Так и сделал:
Теперь осталось закомментировать строчку .SILENT (если такая есть, если нет - убрать @ в начале команды компиляции), пронаблюдать в консоли полную строку запуска компилятора, если дальше сами не разберетесь - копируйте сюда.
_Артём_
Цитата(Сергей Борщ @ Feb 28 2012, 23:47) *
Теперь осталось закомментировать строчку .SILENT (если такая есть, если нет - убрать @ в начале команды компиляции), пронаблюдать в консоли полную строку запуска компилятора, если дальше сами не разберетесь - копируйте сюда.


Спасибо, помогло.
Оказалось компилятор сменился - инсталлировал несколько дней назад одну Ide (тоже на базе eclipse), путь к тулчайну сменился, то есть компилировалось не тем, чем я хотел. Снёс - заработало.

Ещё вопрос по порту для M0.
В файле sysinit.cpp есть строка
Код
// 3 FLASH waitstates
        *(uint32_t *)0x4003C010 = 3;

Зто запись в регистр FLASHCFG? Кстати не нашёл упоминания о нём ни в одном h-файле, может его и трогать не надо?
По даташиту для 3 waitstates
Нажмите для просмотра прикрепленного файла
должно быть так:
Код
// 3 FLASH waitstates
        *(uint32_t *)0x4003C010 |= 2;

Или нет?
Сергей Борщ
QUOTE (_Артём_ @ Mar 1 2012, 01:28) *
В файле sysinit.cpp есть строка
CODE
// 3 FLASH waitstates
        *(uint32_t *)0x4003C010 = 3;

Зто запись в регистр FLASHCFG? Кстати не нашёл упоминания о нём ни в одном h-файле, может его и трогать не надо?
Можно и не трогать. "Если вас не интересует результат" wink.gif Не зря ведь в даташите для этого регистра для конкретных частот указаны конкретные значения.
QUOTE (_Артём_ @ Mar 1 2012, 01:28) *
По даташиту для 3 waitstates
должно быть так:
CODE
// 3 FLASH waitstates
        *(uint32_t *)0x4003C010 |= 2;

Или нет?
Да, ошибся. Спасибо, что нашли - сейчас сразу и в боевом проекте исправлю. Еще правильнее будет написать
CODE
*(uint32_t volatile *)0x4003C010 = (*(uint32_t volatile *)0x4003C010 & ~3) | 2;
_Артём_
Цитата(Сергей Борщ @ Mar 1 2012, 09:52) *
Можно и не трогать. "Если вас не интересует результат" wink.gif Не зря ведь в даташите для этого регистра для конкретных частот указаны конкретные значения.

После сброса FLASHCFG находится во вполне определённом состоянии и если значение устраивает можно не писать в него.

Цитата(Сергей Борщ @ Mar 1 2012, 09:52) *
Еще правильнее будет написать
Код
*(uint32_t volatile *)0x4003C010 = (*(uint32_t volatile *)0x4003C010 & ~3) | 2;

Да, правильней: |=2 - это всё равно что старую ошибку исправить и внёсти новую в тоже место.
Спасибо.

Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.