Jump to content
    

Почему-то перестало компилироваться

Кто-то потерял в 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

 

Даже не теряюсь в догадках. Вооще не понимаю.

Share this post


Link to post
Share on other sites

1. А оно вообще компилировалось?

2. Может подхватился другой makefile?

3. Проверьте дальше в makefile наличие строчек

    FLAGS   = -mcpu=$(MCU) -mthumb
...
    AFLAGS  = $(FLAGS)
...    
    CFLAGS  = $(FLAGS)
    CFLAGS  += $(OPTIMIZE)
...    
    CXXFLAGS    = $(FLAGS)
    CXXFLAGS    += $(OPTIMIZE)

Share this post


Link to post
Share on other sites

1. А оно вообще компилировалось?

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

 

2. Может подхватился другой makefile?

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

 

3. Проверьте дальше в makefile наличие строчек

Есть строчки (makefile - ваш).

Share this post


Link to post
Share on other sites

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

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

Share this post


Link to post
Share on other sites

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

 

Так и сделал:

--- compiliren ./src/main.cpp...

In file included from ../scmRTOS/Common/scmRTOS.h:54:0,

from ./src/main.cpp:48:

Share this post


Link to post
Share on other sites

Так и сделал:
Теперь осталось закомментировать строчку .SILENT (если такая есть, если нет - убрать @ в начале команды компиляции), пронаблюдать в консоли полную строку запуска компилятора, если дальше сами не разберетесь - копируйте сюда.

 

Share this post


Link to post
Share on other sites

Теперь осталось закомментировать строчку .SILENT (если такая есть, если нет - убрать @ в начале команды компиляции), пронаблюдать в консоли полную строку запуска компилятора, если дальше сами не разберетесь - копируйте сюда.

 

Спасибо, помогло.

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

 

Ещё вопрос по порту для M0.

В файле sysinit.cpp есть строка

// 3 FLASH waitstates
        *(uint32_t *)0x4003C010 = 3;

Зто запись в регистр FLASHCFG? Кстати не нашёл упоминания о нём ни в одном h-файле, может его и трогать не надо?

По даташиту для 3 waitstates

post-17322-1330557887_thumb.jpg

должно быть так:

// 3 FLASH waitstates
        *(uint32_t *)0x4003C010 |= 2;

Или нет?

Share this post


Link to post
Share on other sites

В файле 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;

Share this post


Link to post
Share on other sites

Можно и не трогать. "Если вас не интересует результат" ;) Не зря ведь в даташите для этого регистра для конкретных частот указаны конкретные значения.

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

 

Еще правильнее будет написать
*(uint32_t volatile *)0x4003C010 = (*(uint32_t volatile *)0x4003C010 & ~3) | 2;

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

Спасибо.

 

 

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...