|
|
  |
scmRtos для медных чайников |
|
|
|
Oct 26 2012, 22:32
|
Частый гость
 
Группа: Свой
Сообщений: 197
Регистрация: 31-03-06
Пользователь №: 15 676

|
Ничего не понимаю Код Error[Pe020]: identifier "U0CTL" is undefined G:\My_Designs\RKI\M3\Firmware\M3_Terminal\Peripheral\spi.h 104 Где этот U0CTL определён? Когда начинаю искать, то указывает только на spi.h Если подключаю "msp430.h", то эта ошибка исчезает, но при этом возникает другая: Код Error[Pe101]: "IE1" has already been declared in the current scope (at line 108 of "E:\Design\TI\IAR Systems\Embedded Workbench 6.4\430\inc\io430x24x.h") E:\Design\TI\IAR Systems\Embedded Workbench 6.4\430\inc\msp430f2410.h 133 detected during compilation of secondary translation unit "G:\My_Designs\RKI\M3\Firmware\M3_Terminal\M3_Terminal.cpp" посмотрел директории с файлами msp430...h Нашёл, что там кроме этого есть io430x....h , причём msp430... для С, а io430... = для С++. Хорошо, подумал я. Хоть не любитель менять системные файлы, но сделал следующее в msp430.h Код #ifdef __cplusplus #include <io430.h> #else // здесь выбор кокретного файла, отвечающего за нужный чип #endif /* ifdef __cplusplus */ Но при этом опять возвращается к первой ошибке из указанной здесь. Посоветуйте, что делать?
|
|
|
|
|
Oct 26 2012, 23:57
|
Частый гость
 
Группа: Свой
Сообщений: 197
Регистрация: 31-03-06
Пользователь №: 15 676

|
Логично, конечно. Сейчас посмотрю. Мне казалось, что они одинаковые...  ====================== Посмотрел. Регистры совсем другие. Ладно, попробую разобраться.
|
|
|
|
|
Oct 27 2012, 03:18
|
Частый гость
 
Группа: Свой
Сообщений: 197
Регистрация: 31-03-06
Пользователь №: 15 676

|
Регистры переназначил. Функцию rw для SPI подправил в соответствии с переписанными регистрами. Эта часть откомпилировалась. Теперь вопросы: в spi.h определено: Код template <spi_num_t> // строка добавлена, поскольку без неё потом появлялась ошибка при использовании класса spi_base_t class spi_base_t { private: OS::TMutex mutex; public: .... В соответствии с указаниями маэстро в http://electronix.ru/forum/index.php?showt...t&p=1099201пишу Код typedef spi_base_t<SPI1> TSpi1; extern TSpi1 spi1; // << line 19 in errors list Соответственно получаю ошибку: Код Error[Pe322]: object of abstract class type "spi_base_t<(spi_num_t)1U>" is not allowed: function "spi_base_t<<unnamed>>::rw [with <unnamed>=(spi_num_t)1U]" is a pure virtual function G:\My_Designs\RKI\M3\Firmware\M3_Terminal\M3_terminal.h 19 Также на описание класса spi_t в spi.h Код template <spi_num_t spi_num> class spi_t : public spi_base_t <spi_num> // added <spi_num> { private: typedef spi_regs_t<spi_num> regs; typedef spi_pins_t<spi_num> pins_t; typedef typename pins_t::PinSCK SCK; typedef typename pins_t::PinMISO MISO; typedef typename pins_t::PinMOSI MOSI; public: spi_t(): spi_base_t() { init(); } // << line 151 in errors list получаю следующие ошибки: Код Error[Pe441]: argument list for class template "spi_base_t" is missing G:\My_Designs\RKI\M3\Firmware\M3_Terminal\Peripheral\spi.h 151 пытался ставить Код spi_t(): spi_base_t(spi_num) { init(); } spi_t(): spi_base_t<spi_num> { init(); } не помогает Уфф... тяжко. Надеюсь, что когда проделаю первые шаги дальше будет легче
|
|
|
|
|
Oct 27 2012, 05:53
|
Частый гость
 
Группа: Свой
Сообщений: 197
Регистрация: 31-03-06
Пользователь №: 15 676

|
Ага, спасибо, поменял. Полегчало.  Соотвественно, убрал свои изменения для второй части вопроса. Теперь уже после того, как эта часть откомпилировалась, буду свой класс дисплея допиливать.
|
|
|
|
|
Jan 21 2013, 10:38
|
Участник

Группа: Участник
Сообщений: 25
Регистрация: 18-03-11
Пользователь №: 63 690

|
добрый день! появилась необходимость использовать scmRTOS в своём проекте. пробовал 1-EVENT на кристаллах: STM32F100CB и STM32F103VG. не заработало ни на одном. изменял только main.cpp на предмет светодиодов. приборы взял заведомо рабочие. ни один процесс не запускается, хотя в main() программа заходит. т.е. принудительно светодиоды при инициализации МК включаются (на обеих железках). использую GCC 4.6.2. может в компиляторе какой косяк? собирается всё без ошибок. в makefile правил только компилятор, ну и загрузчик. подскажите пожалуйста куда посмотреть? только начинаю разбираться с ОС.
Сообщение отредактировал dezna - Jan 21 2013, 10:42
|
|
|
|
|
Jan 21 2013, 11:17
|
Участник

Группа: Участник
Сообщений: 25
Регистрация: 18-03-11
Пользователь №: 63 690

|
Цитата(AHTOXA @ Jan 21 2013, 15:10)  Светодиоды в 1-EventFlag мигают быстро-быстро, глазом не углядеть. Может быть, в этом дело? я об этом думал. подключал осцилограф. на всякий случай попробовал - нет, не работает! LSS файл для сравниения. замена Pin<'B', 0> - <'B', 11>, Pin<'B', 1> - <'B', 12>
1_EventFlag.lss.txt ( 11.94 килобайт )
Кол-во скачиваний: 281
Сообщение отредактировал dezna - Jan 21 2013, 11:30
|
|
|
|
|
Jan 21 2013, 16:22
|

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

|
В вашем листинге нет упоминания о конструкторах. Похоже, что они не слинковались. Что за компилятор у вас? Попробуйте yagarto или kgp. С ними я проверял - работает.
--------------------
Если бы я знал, что такое электричество...
|
|
|
|
|
Jan 22 2013, 04:58
|
Участник

Группа: Участник
Сообщений: 25
Регистрация: 18-03-11
Пользователь №: 63 690

|
Цитата(AHTOXA @ Jan 21 2013, 20:22)  В вашем листинге нет упоминания о конструкторах. Похоже, что они не слинковались. Что за компилятор у вас? я просил товарища собрать мне рабочий пример. он у себя проверил - работает. на моей железке тоже. так вот: компилятор уоптимизировал программу до "нельзя" (судя по размеру в 3 раза). там нет упоминания о процессах вообще. судя по всему он посчитал включение выключение выходов не существенным! как это обойти? компилятор gcc-4.6.2 вот флаги сборки: Using built-in specs. COLLECT_GCC=/opt/arm-elf/bin/arm-elf-gcc-4.6.2 COLLECT_LTO_WRAPPER=/opt/arm-elf/libexec/gcc/arm-elf/4.6.2/lto-wrapper Target: arm-elf Configured with: ../gcc-4.6.2/configure --prefix=/opt/arm-elf --target=arm-elf --with-gnu-ld --with-gnu-as --disable-nls --disable-libssp --enable-interwork --enable-multilib --with-newlib --with-headers=../newlib-1.20.0/newlib/libc/include/ --enable-languages=c,c++ --with-float=soft --without-ppl Thread model: single gcc version 4.6.2 (GCC) Цитата(AHTOXA @ Jan 21 2013, 20:22)  Попробуйте yagarto или kgp. С ними я проверял - работает. yagarto - под линук не нашёл kgp - попробую но конечно хотелось бы разобраться с моей сборкой. могу куда-нибудь скинуть для проверки. потому как все остальные проекты то работают.
|
|
|
|
|
Jan 22 2013, 05:47
|

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

|
Цитата(dezna @ Jan 22 2013, 10:58)  COLLECT_GCC=/opt/arm-elf/bin/arm-elf-gcc-4.6.2 А, у вас не-eabi сборка. Она складывает конструкторы в другое место. Попробуйте в скрипт линкера после строки Код KEEP(SORT(*)(.init_array)) /* eabi uses .init_array for static constructor lists */ вставить Код KEEP(SORT(*)(.ctors))
--------------------
Если бы я знал, что такое электричество...
|
|
|
|
|
Jan 22 2013, 06:21
|
Участник

Группа: Участник
Сообщений: 25
Регистрация: 18-03-11
Пользователь №: 63 690

|
Цитата(AHTOXA @ Jan 22 2013, 09:47)  Код KEEP(SORT(*)(.ctors)) уже лучше, но всё равно чего-то ещё не хватает сравниваю один проект от 2-х компиляторов: <OS::TBaseProcess::init_stack_frame - раза в 2 меньше <Default_SystemTimer_ISR> - тоже <__Init_Data> - тоже. к сожалению в арм асме я "0", потому проанализировать не могу вот новый lss
1_EventFlag.lss.txt ( 25.05 килобайт )
Кол-во скачиваний: 266помогите пожалуйста добить этот вопрос!
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|