Артём__ 0 18 февраля, 2012 Опубликовано 18 февраля, 2012 · Жалоба Ещё момент. Не существенный, но всё ж. Как папку SamplesCommon подключить к проекту правильно, а то некоторые файлы не видны? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
AHTOXA 15 18 февраля, 2012 Опубликовано 18 февраля, 2012 · Жалоба А почему а вас не используются файлы core_cmx.c? Да просто не используются. Для примеров не нужны функции, которые там есть. Как папку SamplesCommon подключить к проекту правильно, а то некоторые файлы не видны? Вообще-то там должно быть всё подключено. Обновите просто. (И у вас опять пустые папки scmRTOS) А вручную это делается так: ПКМ на проекте - New-Folder - кнопка Advanced - Link to alternate location (Linked Folder) - Browse - выбираете папку - Finish. Это у нас получится папка с абсолютным путём. Чтобы сменить на относительный, надо ПКМ на папке, Properties - Resource - Location - Edit. И там исправить путь на относительный (../SamplesCommon). Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Артём__ 0 18 февраля, 2012 Опубликовано 18 февраля, 2012 · Жалоба Заменил в 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 Пока так... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Артём__ 0 18 февраля, 2012 Опубликовано 18 февраля, 2012 · Жалоба Вродь все подменил, но --- 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 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Артём__ 0 18 февраля, 2012 Опубликовано 18 февраля, 2012 · Жалоба Да просто не используются. Для примеров не нужны функции, которые там есть. Ясно. Вообще-то там должно быть всё подключено. Обновите просто. (И у вас опять пустые папки 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 Понял: спать пора. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
AHTOXA 15 19 февраля, 2012 Опубликовано 19 февраля, 2012 · Жалоба Вродь все подменил, но ../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 из первого примера в остальные. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Артём__ 0 19 февраля, 2012 Опубликовано 19 февраля, 2012 · Жалоба Похоже, что не заменили в 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 из первого примера в остальные. Я пребывал в уверенности, что они туда уже положены. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
AHTOXA 15 19 февраля, 2012 Опубликовано 19 февраля, 2012 · Жалоба Типа того: DIRS += $(SCMDIR)/Common $(SCMDIR)/CortexM0 Да, только не "CortexM0", а "Cortex-M0". Могит быть. Заменил, помогло, но: Теперь в строке 87 - там скобка лишняя. Я пребывал в уверенности, что они туда уже положены. Если для получения примеров воспользоваться svn, то потом при помощи приложеннго батника всё делается сразу - и ось распихивается по папкам, и содержимое папки prj копируется из первого проекта в остальные. Но вам всё равно придётся заменять это содержимое под свой процессор. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Артём__ 0 19 февраля, 2012 Опубликовано 19 февраля, 2012 · Жалоба Да, только не "CortexM0", а "Cortex-M0". Почему с "-", папка ведь называется CortexM0? Или так решено для cortex папки называть? Теперь в строке 87 - там скобка лишняя. Такая же скобка на стр. 90(это смайлик наверное?, только линкер юмора не понял): PROVIDE ( _estack = .) ); Ещё выдало: ./prj/LPC1114_3xx.ld:147: undefined symbol `_bstack' referenced in expression Если для получения примеров воспользоваться svn, то потом при помощи приложеннго батника всё делается сразу - и ось распихивается по папкам, и содержимое папки prj копируется из первого проекта в остальные. Удобно. Работает сразу или нужно что-то ставить (WinXP)? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ReAl 0 19 февраля, 2012 Опубликовано 19 февраля, 2012 · Жалоба Ничего кроме svn (subversion) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Артём__ 0 19 февраля, 2012 Опубликовано 19 февраля, 2012 · Жалоба Идём дальше. Заменил в 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-файлов? Или всё вручную принято делать? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
AHTOXA 15 20 февраля, 2012 Опубликовано 20 февраля, 2012 · Жалоба Почему с "-", папка ведь называется 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-файлов? Или всё вручную принято делать? Не встречал такой. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Сергей Борщ 121 20 февраля, 2012 Опубликовано 20 февраля, 2012 · Жалоба Не пинайте ногами. Был проект, в него подошел 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(это смайлик наверное?, только линкер юмора не понял):"Сама себе порой я удивляюсь". Откуда там эти строки - загадка. Исправил в репозитории и проверил - больше линкер не ругается. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Артём__ 0 20 февраля, 2012 Опубликовано 20 февраля, 2012 · Жалоба Добавил в main.cpp настройку SysTick, слинковал скриптом из репозитория (LPC1114_2xx.ld), запустил: полёт нормальный. Спасибо всем за помощь. Ушёл осваивать. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
sherr 0 31 марта, 2012 Опубликовано 31 марта, 2012 · Жалоба У кого-нибудь есть скрипт для заливки flash в STM32f4xx для OpenOCD + ST-Link ? А то собрал OpenOCD 0.6.0, проверил - openocd -f interface/stlink-v2.cfg -f target/stm32f4x_stlink.cfg вроде запускается, полдня читал мануал OpenOCD //// в общем мне бы пример для начала ... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться