|
|
  |
STM32-F4, Отладка из Eclipse |
|
|
|
Feb 18 2012, 20:52
|

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

|
Цитата(_Артём_ @ Feb 19 2012, 00:34)  А почему а вас не используются файлы core_cmx.c? Да просто не используются. Для примеров не нужны функции, которые там есть. Цитата(_Артём_ @ Feb 19 2012, 02:15)  Как папку SamplesCommon подключить к проекту правильно, а то некоторые файлы не видны? Вообще-то там должно быть всё подключено. Обновите просто. (И у вас опять пустые папки scmRTOS) А вручную это делается так: ПКМ на проекте - New-Folder - кнопка Advanced - Link to alternate location (Linked Folder) - Browse - выбираете папку - Finish. Это у нас получится папка с абсолютным путём. Чтобы сменить на относительный, надо ПКМ на папке, Properties - Resource - Location - Edit. И там исправить путь на относительный (../SamplesCommon).
--------------------
Если бы я знал, что такое электричество...
|
|
|
|
|
Feb 18 2012, 20:58
|
Гуру
     
Группа: Свой
Сообщений: 2 128
Регистрация: 21-05-06
Пользователь №: 17 322

|
Заменил в 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 Пока так...
|
|
|
|
|
Feb 18 2012, 22:05
|
Гуру
     
Группа: Свой
Сообщений: 2 128
Регистрация: 21-05-06
Пользователь №: 17 322

|
Вродь все подменил, но Цитата --- 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 ( 208.96 килобайт )
Кол-во скачиваний: 86
v400_cm0_nxp.rar ( 101 килобайт )
Кол-во скачиваний: 78
|
|
|
|
|
Feb 18 2012, 23:55
|
Гуру
     
Группа: Свой
Сообщений: 2 128
Регистрация: 21-05-06
Пользователь №: 17 322

|
Цитата(AHTOXA @ Feb 18 2012, 22:52)  Да просто не используются. Для примеров не нужны функции, которые там есть. Ясно. Цитата(AHTOXA @ Feb 18 2012, 22:52)  Вообще-то там должно быть всё подключено. Обновите просто. (И у вас опять пустые папки scmRTOS) Может что-то попортил на ночь глядя. Цитата(AHTOXA @ Feb 18 2012, 22:52)  (И у вас опять пустые папки scmRTOS) Это просто рисунок тот же. Цитата(AHTOXA @ Feb 18 2012, 22:52)  А вручную это делается так: ПКМ на проекте - 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 Понял: спать пора.
|
|
|
|
|
Feb 19 2012, 06:13
|

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

|
Цитата(_Артём_ @ Feb 19 2012, 04:05)  Вродь все подменил, но Цитата ../scmRTOS/Common/scmRTOS.h:54:23: fatal error: OS_Target.h: No such file or directory Похоже, что не заменили в makefile "CortexM3" на "Cortex-M0". Цитата(_Артём_ @ Feb 19 2012, 04:05)  Цитата 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 с // на /* */ Цитата(_Артём_ @ Feb 19 2012, 05:55)  P.S. Попробовал открыть остальные примеры: Цитата cannot open linker script file ./prj/STM32F10X_MD_VL.ld: No such file or directory 4-Debug C/C++ Problem Надо скопировать содержимое папки prj из первого примера в остальные.
--------------------
Если бы я знал, что такое электричество...
|
|
|
|
|
Feb 19 2012, 15:32
|
Гуру
     
Группа: Свой
Сообщений: 2 128
Регистрация: 21-05-06
Пользователь №: 17 322

|
Цитата(AHTOXA @ Feb 19 2012, 08:13)  Похоже, что не заменили в makefile "CortexM3" на "Cortex-M0". Типа того: Цитата DIRS += $(SCMDIR)/Common $(SCMDIR)/CortexM0 Цитата(AHTOXA @ Feb 19 2012, 08:13)  Что-то не так с 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 Цитата(AHTOXA @ Feb 19 2012, 08:13)  Надо скопировать содержимое папки prj из первого примера в остальные. Я пребывал в уверенности, что они туда уже положены.
|
|
|
|
|
Feb 19 2012, 19:07
|

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

|
Цитата(_Артём_ @ Feb 19 2012, 21:32)  Типа того: Цитата DIRS += $(SCMDIR)/Common $(SCMDIR)/CortexM0 Да, только не "CortexM0", а "Cortex-M0". Цитата Могит быть. Заменил, помогло, но: Теперь в строке 87 - там скобка лишняя. Цитата Я пребывал в уверенности, что они туда уже положены. Если для получения примеров воспользоваться svn, то потом при помощи приложеннго батника всё делается сразу - и ось распихивается по папкам, и содержимое папки prj копируется из первого проекта в остальные. Но вам всё равно придётся заменять это содержимое под свой процессор.
--------------------
Если бы я знал, что такое электричество...
|
|
|
|
|
Feb 19 2012, 20:42
|
Гуру
     
Группа: Свой
Сообщений: 2 128
Регистрация: 21-05-06
Пользователь №: 17 322

|
Цитата(AHTOXA @ Feb 19 2012, 21:07)  Да, только не "CortexM0", а "Cortex-M0". Почему с "-", папка ведь называется CortexM0? Или так решено для cortex папки называть? Цитата(AHTOXA @ Feb 19 2012, 21:07)  Теперь в строке 87 - там скобка лишняя. Такая же скобка на стр. 90(это смайлик наверное?, только линкер юмора не понял): Цитата PROVIDE ( _estack = .) ); Ещё выдало: Цитата ./prj/LPC1114_3xx.ld:147: undefined symbol `_bstack' referenced in expression Цитата(AHTOXA @ Feb 19 2012, 21:07)  Если для получения примеров воспользоваться svn, то потом при помощи приложеннго батника всё делается сразу - и ось распихивается по папкам, и содержимое папки prj копируется из первого проекта в остальные. Удобно. Работает сразу или нужно что-то ставить (WinXP)?
|
|
|
|
|
Feb 19 2012, 22:57
|
Гуру
     
Группа: Свой
Сообщений: 2 128
Регистрация: 21-05-06
Пользователь №: 17 322

|
Идём дальше. Заменил в 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-файлов? Или всё вручную принято делать?
|
|
|
|
|
Feb 20 2012, 03:38
|

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

|
Цитата(_Артём_ @ Feb 20 2012, 02:42)  Почему с "-", папка ведь называется CortexM0? Или так решено для cortex папки называть? В самом порте (pre-v400\Samples\Cortex-M0\GCC\scmRTOS\) папка называется Cortex-M0. Поэтому и в примерах, когда они появятся, она будет называться так же. Так что лучше переименуйте, чтоб потом не путаться. Цитата(_Артём_ @ Feb 20 2012, 04:57)  Зашил: похоже что как-то работает. Отлично  Цитата 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-файлов? Или всё вручную принято делать? Не встречал такой.
--------------------
Если бы я знал, что такое электричество...
|
|
|
|
|
Feb 20 2012, 08:20
|

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

|
Не пинайте ногами. Был проект, в него подошел LPC1114. Под этот проект писался и на нем отлаживался порт scmRTOS для Cortex-M0. Потом из этого проекта были выдраны файлы, непосредственно относящиеся к scmRTOS и положены в репозиторий с целью довести их до полноценного порта позже. Перед помещением в реп были сделаны мелкие правки - выкусывание того, что не имеет отношения к ОС. После правок эти огрызки, естественно, не проверялись компиляцией. QUOTE PLL_DIV и PLL_MUL? У меня описано так: CODE #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__ QUOTE (_Артём_ @ Feb 20 2012, 00:57)  2) Где нынче считается правильным настраивать прерывание OS::SystemTimer_ISR? Однозначного решения нет. В порте CM3 он настраивается в os_start(). Я решил настраивать его в main(), дабы не подключать в исходники ОСи описание регистров и чтобы не подключать туда каким-то образом #define с частотами. CODE 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(); } QUOTE (_Артём_ @ Feb 20 2012, 00:57)  3) Мелочь но всё ж: ld.exe выдавал ошибку на //. Это у меня версия устаревшая? Нет, это я правил файл после "выкусывания" из проекта и по привычке использовал Цеплюсплюсный однострочный комментарий. QUOTE (_Артём_ @ Feb 19 2012, 22:42)  Такая же скобка на стр. 90(это смайлик наверное?, только линкер юмора не понял): "Сама себе порой я удивляюсь". Откуда там эти строки - загадка. Исправил в репозитории и проверил - больше линкер не ругается.
--------------------
На любой вопрос даю любой ответ"Write code that is guaranteed to work, not code that doesn’t seem to break" ( C++ FAQ)
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|