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

 
 
> Почему-то перестало компилироваться
_Артём_
сообщение Feb 28 2012, 13:57
Сообщение #1


Гуру
******

Группа: Свой
Сообщений: 2 128
Регистрация: 21-05-06
Пользователь №: 17 322



Выдаёт такую ошибку:
../scmRTOS/Cortex-M0/OS_Target.h:62:2: error: #error "This file must be compiled for ARMv6-M (Cortex-M0) processor only."
Что может быть?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
AHTOXA
сообщение Feb 28 2012, 15:54
Сообщение #2


фанат дивана
******

Группа: Свой
Сообщений: 3 387
Регистрация: 9-08-07
Из: Уфа
Пользователь №: 29 684



Кто-то потерял в makefile строчку
MCU = cortex-m0
?


--------------------
Если бы я знал, что такое электричество...
Go to the top of the page
 
+Quote Post
_Артём_
сообщение Feb 28 2012, 16:10
Сообщение #3


Гуру
******

Группа: Свой
Сообщений: 2 128
Регистрация: 21-05-06
Пользователь №: 17 322



Цитата(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


Даже не теряюсь в догадках. Вооще не понимаю.
Go to the top of the page
 
+Quote Post
AHTOXA
сообщение Feb 28 2012, 16:29
Сообщение #4


фанат дивана
******

Группа: Свой
Сообщений: 3 387
Регистрация: 9-08-07
Из: Уфа
Пользователь №: 29 684



1. А оно вообще компилировалось?
2. Может подхватился другой makefile?
3. Проверьте дальше в makefile наличие строчек
Код
    FLAGS   = -mcpu=$(MCU) -mthumb
...
    AFLAGS  = $(FLAGS)
...    
    CFLAGS  = $(FLAGS)
    CFLAGS  += $(OPTIMIZE)
...    
    CXXFLAGS    = $(FLAGS)
    CXXFLAGS    += $(OPTIMIZE)


--------------------
Если бы я знал, что такое электричество...
Go to the top of the page
 
+Quote Post
_Артём_
сообщение Feb 28 2012, 16:41
Сообщение #5


Гуру
******

Группа: Свой
Сообщений: 2 128
Регистрация: 21-05-06
Пользователь №: 17 322



Цитата(AHTOXA @ Feb 28 2012, 18:29) *
1. А оно вообще компилировалось?

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

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

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

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

Есть строчки (makefile - ваш).
Go to the top of the page
 
+Quote Post
AHTOXA
сообщение Feb 28 2012, 18:14
Сообщение #6


фанат дивана
******

Группа: Свой
Сообщений: 3 387
Регистрация: 9-08-07
Из: Уфа
Пользователь №: 29 684



Цитата(_Артём_ @ Feb 28 2012, 22:41) *
Как проверить?

Ну например заменить все вхождения слова "compiling" на слово "compiliren", и посмотреть в консоли, появится ли новое слово sm.gif


--------------------
Если бы я знал, что такое электричество...
Go to the top of the page
 
+Quote Post
_Артём_
сообщение Feb 28 2012, 18:44
Сообщение #7


Гуру
******

Группа: Свой
Сообщений: 2 128
Регистрация: 21-05-06
Пользователь №: 17 322



Цитата(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:
Go to the top of the page
 
+Quote Post
Сергей Борщ
сообщение Feb 28 2012, 21:47
Сообщение #8


Гуру
******

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



QUOTE (_Артём_ @ Feb 28 2012, 20:44) *
Так и сделал:
Теперь осталось закомментировать строчку .SILENT (если такая есть, если нет - убрать @ в начале команды компиляции), пронаблюдать в консоли полную строку запуска компилятора, если дальше сами не разберетесь - копируйте сюда.


--------------------
На любой вопрос даю любой ответ
"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
_Артём_
сообщение Feb 29 2012, 23:28
Сообщение #9


Гуру
******

Группа: Свой
Сообщений: 2 128
Регистрация: 21-05-06
Пользователь №: 17 322



Цитата(Сергей Борщ @ 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;

Или нет?
Go to the top of the page
 
+Quote Post
Сергей Борщ
сообщение Mar 1 2012, 07:52
Сообщение #10


Гуру
******

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



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;


--------------------
На любой вопрос даю любой ответ
"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
_Артём_
сообщение Mar 3 2012, 20:31
Сообщение #11


Гуру
******

Группа: Свой
Сообщений: 2 128
Регистрация: 21-05-06
Пользователь №: 17 322



Цитата(Сергей Борщ @ Mar 1 2012, 09:52) *
Можно и не трогать. "Если вас не интересует результат" wink.gif Не зря ведь в даташите для этого регистра для конкретных частот указаны конкретные значения.

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

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

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

Go to the top of the page
 
+Quote Post



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

 


RSS Текстовая версия Сейчас: 25th June 2025 - 17:15
Рейтинг@Mail.ru


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