Артём__ 1 February 28, 2012 Posted February 28, 2012 · Report post Выдаёт такую ошибку: ../scmRTOS/Cortex-M0/OS_Target.h:62:2: error: #error "This file must be compiled for ARMv6-M (Cortex-M0) processor only." Что может быть? Quote Share this post Link to post Share on other sites More sharing options...
AHTOXA 25 February 28, 2012 Posted February 28, 2012 · Report post Кто-то потерял в makefile строчку MCU = cortex-m0 ? Quote Share this post Link to post Share on other sites More sharing options...
Артём__ 1 February 28, 2012 Posted February 28, 2012 · Report post Кто-то потерял в 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 Даже не теряюсь в догадках. Вооще не понимаю. Quote Share this post Link to post Share on other sites More sharing options...
AHTOXA 25 February 28, 2012 Posted February 28, 2012 · Report post 1. А оно вообще компилировалось? 2. Может подхватился другой makefile? 3. Проверьте дальше в makefile наличие строчек FLAGS = -mcpu=$(MCU) -mthumb ... AFLAGS = $(FLAGS) ... CFLAGS = $(FLAGS) CFLAGS += $(OPTIMIZE) ... CXXFLAGS = $(FLAGS) CXXFLAGS += $(OPTIMIZE) Quote Share this post Link to post Share on other sites More sharing options...
Артём__ 1 February 28, 2012 Posted February 28, 2012 · Report post 1. А оно вообще компилировалось? Компилировалось и работало. 2. Может подхватился другой makefile? Хз. Как проверить? 3. Проверьте дальше в makefile наличие строчек Есть строчки (makefile - ваш). Quote Share this post Link to post Share on other sites More sharing options...
AHTOXA 25 February 28, 2012 Posted February 28, 2012 · Report post Как проверить? Ну например заменить все вхождения слова "compiling" на слово "compiliren", и посмотреть в консоли, появится ли новое слово :) Quote Share this post Link to post Share on other sites More sharing options...
Артём__ 1 February 28, 2012 Posted February 28, 2012 · Report post Ну например заменить все вхождения слова "compiling" на слово "compiliren", и посмотреть в консоли, появится ли новое слово :) Так и сделал: --- compiliren ./src/main.cpp... In file included from ../scmRTOS/Common/scmRTOS.h:54:0, from ./src/main.cpp:48: Quote Share this post Link to post Share on other sites More sharing options...
Сергей Борщ 186 February 28, 2012 Posted February 28, 2012 · Report post Так и сделал:Теперь осталось закомментировать строчку .SILENT (если такая есть, если нет - убрать @ в начале команды компиляции), пронаблюдать в консоли полную строку запуска компилятора, если дальше сами не разберетесь - копируйте сюда. Quote Share this post Link to post Share on other sites More sharing options...
Артём__ 1 February 29, 2012 Posted February 29, 2012 · Report post Теперь осталось закомментировать строчку .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 Share this post Link to post Share on other sites More sharing options...
Сергей Борщ 186 March 1, 2012 Posted March 1, 2012 · Report post В файле sysinit.cpp есть строка // 3 FLASH waitstates *(uint32_t *)0x4003C010 = 3; Зто запись в регистр FLASHCFG? Кстати не нашёл упоминания о нём ни в одном h-файле, может его и трогать не надо? Можно и не трогать. "Если вас не интересует результат" ;) Не зря ведь в даташите для этого регистра для конкретных частот указаны конкретные значения. По даташиту для 3 waitstates должно быть так: // 3 FLASH waitstates *(uint32_t *)0x4003C010 |= 2; Или нет? Да, ошибся. Спасибо, что нашли - сейчас сразу и в боевом проекте исправлю. Еще правильнее будет написать *(uint32_t volatile *)0x4003C010 = (*(uint32_t volatile *)0x4003C010 & ~3) | 2; Quote Share this post Link to post Share on other sites More sharing options...
Артём__ 1 March 3, 2012 Posted March 3, 2012 · Report post Можно и не трогать. "Если вас не интересует результат" ;) Не зря ведь в даташите для этого регистра для конкретных частот указаны конкретные значения. После сброса FLASHCFG находится во вполне определённом состоянии и если значение устраивает можно не писать в него. Еще правильнее будет написать *(uint32_t volatile *)0x4003C010 = (*(uint32_t volatile *)0x4003C010 & ~3) | 2; Да, правильней: |=2 - это всё равно что старую ошибку исправить и внёсти новую в тоже место. Спасибо. Quote Share this post Link to post Share on other sites More sharing options...