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