Перейти к содержанию
    

Ещё момент. Не существенный, но всё ж.

 

post-17322-1329596024_thumb.jpg

Как папку SamplesCommon подключить к проекту правильно, а то некоторые файлы не видны?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

А почему а вас не используются файлы core_cmx.c?

Да просто не используются. Для примеров не нужны функции, которые там есть.

Как папку SamplesCommon подключить к проекту правильно, а то некоторые файлы не видны?

Вообще-то там должно быть всё подключено. Обновите просто. (И у вас опять пустые папки scmRTOS)

А вручную это делается так:

ПКМ на проекте - New-Folder - кнопка Advanced - Link to alternate location (Linked Folder) - Browse - выбираете папку - Finish.

Это у нас получится папка с абсолютным путём. Чтобы сменить на относительный, надо ПКМ на папке, Properties - Resource - Location - Edit. И там исправить путь на относительный (../SamplesCommon).

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Заменил в makefile

# Select family

# STM32F10X_LD : STM32 Low density devices

# STM32F10X_LD_VL : STM32 Low density Value Line devices

# STM32F10X_MD : STM32 Medium density devices

# STM32F10X_MD_VL : STM32 Medium density Value Line devices

# STM32F10X_HD : STM32 High density devices

# STM32F10X_HD_VL : STM32 XL-density devices

# STM32F10X_CL : STM32 Connectivity line devices

# STM32F10X_XL : STM32 XL-density devices

CHIP = STM32F10X_MD

на

# CHIP = LPC1114_2xx

CHIP = LPC1114_3xx

Пока так...

 

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Вродь все подменил, но

--- building 1-EventFlag

--- compiling ./src/main.cpp...

In file included from ./src/main.cpp:49:0:

../scmRTOS/Common/scmRTOS.h:54:23: fatal error: OS_Target.h: No such file or directory

compilation terminated.

make: *** [obj/main.o] Ошибка 1

 

Что предполагалось в файле hardware.h?

 

Update.

Попробовал собрать с++-проект без scmrtos (такая же ошибка у меня появлялась вчера. вроде):

In file included from ./src/main.cpp:2:0:

../nxp_cm0_lpc11/cmsis/LPC11xx.h:287:5: warning: ISO C++ prohibits anonymous structs [-pedantic]

--- linking...

c:/yagarto/bin/../lib/gcc/arm-none-eabi/4.6.0/../../../../arm-none-eabi/bin/ld.exe:./prj/LPC1114_2xx.ld:5: syntax error

collect2: ld returned 1 exit status

make: *** [exe/cpp_test.elf] Ошибка 1

 

Что-то не так с LPC1114_2xx.ld?

lpc11xx_proj.rar

v400_cm0_nxp.rar

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Да просто не используются. Для примеров не нужны функции, которые там есть.

Ясно.

 

Вообще-то там должно быть всё подключено. Обновите просто. (И у вас опять пустые папки scmRTOS)

Может что-то попортил на ночь глядя.

 

(И у вас опять пустые папки scmRTOS)

Это просто рисунок тот же.

 

А вручную это делается так:

ПКМ на проекте - New-Folder - кнопка Advanced - Link to alternate location (Linked Folder) - Browse - выбираете папку - Finish.

Это у нас получится папка с абсолютным путём. Чтобы сменить на относительный, надо ПКМ на папке, Properties - Resource - Location - Edit. И там исправить путь на относительный (../SamplesCommon).

Спасибо.

 

P.S. Попробовал открыть остальные примеры:

Description Resource Path Location Type

cannot open linker script file ./prj/STM32F10X_MD_VL.ld: No such file or directory 4-Debug C/C++ Problem

cannot open linker script file ./prj/STM32F10X_MD.ld: No such file or directory 2-Message C/C++ Problem

cannot open linker script file ./prj/STM32F10X_MD.ld: No such file or directory 3-Channel C/C++ Problem

Понял: спать пора.

 

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Вродь все подменил, но

../scmRTOS/Common/scmRTOS.h:54:23: fatal error: OS_Target.h: No such file or directory

Похоже, что не заменили в makefile "CortexM3" на "Cortex-M0".

c:/yagarto/bin/../lib/gcc/arm-none-eabi/4.6.0/../../../../arm-none-eabi/bin/ld.exe:./prj/LPC1114_2xx.ld:5: syntax error

Что-то не так с LPC1114_2xx.ld?

Хм. Странно... Попробуйте изменить комментарий в строке 5 с // на /* */

 

P.S. Попробовал открыть остальные примеры:
cannot open linker script file ./prj/STM32F10X_MD_VL.ld: No such file or directory 4-Debug C/C++ Problem

Надо скопировать содержимое папки prj из первого примера в остальные.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Похоже, что не заменили в makefile "CortexM3" на "Cortex-M0".

Типа того:

DIRS += $(SCMDIR)/Common $(SCMDIR)/CortexM0

 

Что-то не так с LPC1114_2xx.ld?

Хм. Странно... Попробуйте изменить комментарий в строке 5 с // на /* */

Могит быть. Заменил, помогло, но:

c:/yagarto/bin/../lib/gcc/arm-none-eabi/4.6.0/../../../../arm-none-eabi/bin/ld.exe:./prj/LPC1114_2xx.ld:87: syntax error

 

 

Надо скопировать содержимое папки prj из первого примера в остальные.

Я пребывал в уверенности, что они туда уже положены.

 

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Типа того:

DIRS += $(SCMDIR)/Common $(SCMDIR)/CortexM0

Да, только не "CortexM0", а "Cortex-M0".

Могит быть. Заменил, помогло, но:

Теперь в строке 87 - там скобка лишняя.

Я пребывал в уверенности, что они туда уже положены.

Если для получения примеров воспользоваться svn, то потом при помощи приложеннго батника всё делается сразу - и ось распихивается по папкам, и содержимое папки prj копируется из первого проекта в остальные. Но вам всё равно придётся заменять это содержимое под свой процессор.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Да, только не "CortexM0", а "Cortex-M0".

Почему с "-", папка ведь называется CortexM0?

Или так решено для cortex папки называть?

 

 

Теперь в строке 87 - там скобка лишняя.

 

Такая же скобка на стр. 90(это смайлик наверное?, только линкер юмора не понял):

PROVIDE ( _estack = .) );

 

Ещё выдало:

./prj/LPC1114_3xx.ld:147: undefined symbol `_bstack' referenced in expression

 

Если для получения примеров воспользоваться svn, то потом при помощи приложеннго батника всё делается сразу - и ось распихивается по папкам, и содержимое папки prj копируется из первого проекта в остальные.

Удобно. Работает сразу или нужно что-то ставить (WinXP)?

 

 

 

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Идём дальше.

Заменил в makefile:

LD_SCRIPT = $(PRJDIR)/STM32F10X_MD_VL.ld

и в STM32F10X_MD_VL.ld

RAM (xrw) : ORIGIN = 0x10000000, LENGTH = 4K

FLASH (rx) : ORIGIN = 0x00000000, LENGTH = 32K

Запустил build:

../SamplesCommon/lpc11xx.h:464:6: warning: ISO C99 doesn't support unnamed structs/unions [-pedantic]

.....

text data bss dec hex filename

1432 0 1672 3104 c20 ./exe/1-EventFlag.elf

Errors: none

Зашил: похоже что как-то работает.

 

Но появились ещё вопросы.

1) Не работает Systick: наверное потому что закоментил строки в sysinit.cpp:

    LPC_SYSCON->SYSPLLCTRL = 0
            //| ( (PLL_MUL - 1) << LPC_MSEL)
            //| ( PLL_DIV << LPC_PSEL)
          ;

Чему равны PLL_DIV и PLL_MUL?

 

2) Где нынче считается правильным настраивать прерывание OS::SystemTimer_ISR?

В какой-то древней версии scmRTOS_vxx.ru.pdf вроде видел функцию для инициализации таймера, потом она пропала (в v3.10 AVR не нашёл).

 

3) Мелочь но всё ж: ld.exe выдавал ошибку на //. Это у меня версия устаревшая?

 

4) Что делать с

warning: ISO C99 doesn't support unnamed structs/unions [-pedantic]

Где-то обсуждалось вроде, но чтот не нашёл.

 

5) Существует ли программа какая-нибудь для редактирования ld-файлов? Или всё вручную принято делать?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Почему с "-", папка ведь называется CortexM0?

Или так решено для cortex папки называть?

В самом порте (pre-v400\Samples\Cortex-M0\GCC\scmRTOS\) папка называется Cortex-M0. Поэтому и в примерах, когда они появятся, она будет называться так же. Так что лучше переименуйте, чтоб потом не путаться.

Зашил: похоже что как-то работает.

Отлично:)

1) Не работает Systick: наверное потому что закоментил строки в sysinit.cpp:

    LPC_SYSCON->SYSPLLCTRL = 0
            //| ( (PLL_MUL - 1) << LPC_MSEL)
            //| ( PLL_DIV << LPC_PSEL)
         ;

Чему равны PLL_DIV и PLL_MUL?

Думаю, что это надо смотреть в документации на контроллер.

2) Где нынче считается правильным настраивать прерывание OS::SystemTimer_ISR?

В OS_Target_asm.S. Частота зависит от двух дефайнов: SYSTICKFREQ и SYSTICKINTRATE, которые задаются на уровне проекта в файле scmRTOS_TARGET_CFG.h.

3) Мелочь но всё ж: ld.exe выдавал ошибку на //. Это у меня версия устаревшая?

Возможно.

 

4) Что делать с
warning: ISO C99 doesn't support unnamed structs/unions [-pedantic]

Тут ничего не поделать. Только убрать ключ -pedantic в makefile.

5) Существует ли программа какая-нибудь для редактирования ld-файлов? Или всё вручную принято делать?

Не встречал такой.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Не пинайте ногами. Был проект, в него подошел LPC1114. Под этот проект писался и на нем отлаживался порт scmRTOS для Cortex-M0. Потом из этого проекта были выдраны файлы, непосредственно относящиеся к scmRTOS и положены в репозиторий с целью довести их до полноценного порта позже. Перед помещением в реп были сделаны мелкие правки - выкусывание того, что не имеет отношения к ОС. После правок эти огрызки, естественно, не проверялись компиляцией.

 

PLL_DIV и PLL_MUL?

У меня описано так:

#ifndef HARDWARE_H__
#define HARDWARE_H__
#include    <pin_macros.h>

#define IRC_FREQ            12000000ULL

#define PLL_MUL             4
#define PLL_DIV             2

#define MAIN_CLK_FREQ       (IRC_FREQ * PLL_MUL)

#define SYS_CLK_DIV         1
#define SYS_CLK_FREQ        (MAIN_CLK_FREQ / SYS_CLK_DIV)

#define SYSTICK_CLK_FREQ    (SYS_CLK_FREQ / 2)

#define UART_PCLK_FREQ      (SYS_CLK_FREQ)

#define BAUDRATE            115200

#define LED             0,4,H

#endif  // HARDWARE_H__

 

 

2) Где нынче считается правильным настраивать прерывание OS::SystemTimer_ISR?
Однозначного решения нет. В порте CM3 он настраивается в os_start(). Я решил настраивать его в main(), дабы не подключать в исходники ОСи описание регистров и чтобы не подключать туда каким-то образом #define с частотами.

int main()
{
    // setup SysTick timer
    SysTick->LOAD = SYSTICK_CLK_FREQ / RTOS_TICK_RATE - 1;
    SysTick->VAL = 0;   // reset counter
    SysTick->CTRL = 0
            | (1 << SysTick_CTRL_ENABLE_Pos)    // Enable timer
            | (1 << SysTick_CTRL_TICKINT_Pos)   // Enable SysTick interrupts
            | (0 << SysTick_CTRL_CLKSOURCE_Pos) // System clock/2
         ;

    // run
    OS::run();
}

 

3) Мелочь но всё ж: ld.exe выдавал ошибку на //. Это у меня версия устаревшая?
Нет, это я правил файл после "выкусывания" из проекта и по привычке использовал Цеплюсплюсный однострочный комментарий.

 

Такая же скобка на стр. 90(это смайлик наверное?, только линкер юмора не понял):
"Сама себе порой я удивляюсь". Откуда там эти строки - загадка. Исправил в репозитории и проверил - больше линкер не ругается.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Добавил в main.cpp настройку SysTick, слинковал скриптом из репозитория (LPC1114_2xx.ld), запустил: полёт нормальный.

 

Спасибо всем за помощь.

Ушёл осваивать.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

У кого-нибудь есть скрипт для заливки flash в STM32f4xx для OpenOCD + ST-Link ? А то собрал OpenOCD 0.6.0, проверил -

openocd -f interface/stlink-v2.cfg -f target/stm32f4x_stlink.cfg вроде запускается, полдня

читал мануал OpenOCD //// в общем мне бы пример для начала ...

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...