|
scmRtos для медных чайников |
|
|
|
Feb 12 2012, 09:04
|

Частый гость
 
Группа: Участник
Сообщений: 93
Регистрация: 5-01-05
Из: Оулу
Пользователь №: 1 811

|
Добрый день всем! Возникло желание - точнее, необходимось использовать многозадачность в своем проекте - вернее, или надо писать свой диспетчер (в котором я уже успел запутаться), или пользоваться чем-то готовым. Увидел scmRtos - попытался запустить демку. Пример под IAR на MSP430F2617 - у меня на плате MSP430F2410, IAR версия 5.30
Немножко подправил демку под свою плату, чтобы нужный светодиодик моргал, указал иару на MSP430F2410 - и ничего. WDT прерывание случается раза 4 (вроде как это системный таймер?), после чего программа улетает неведомо куда.
Кто-нибудь может на путь истинный наставить - что можно трогать, что нельзя. Может ли на работоспособности версия компилятора сказаться? Или, лучше всего, может у кого готовая рыба завалялась для моргания именно на этом кристалле или похожем?
|
|
|
|
|
 |
Ответов
|
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помогите пожалуйста добить этот вопрос!
|
|
|
|
|
Jan 22 2013, 10:11
|
Участник

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

|
Цитата(AHTOXA @ Jan 22 2013, 12:20)  Сложно сказать. Листинг практически идентичен моему. init_stack_frame и Default_SystemTimer_ISR - вообще один-в-один. Должно работать! но не хочет. может ещё какие-нибудь отличия имеются? пытался kgp слить - там 64 бит версия. не пошла. Цитата(AHTOXA @ Jan 22 2013, 12:20)  ЗЫ. Если уж совсем не пойдёт, и вы боитесь самодельных сборок сам собирал gcc. просто, как говорится, на ходу коней не меняют. чтоб не отказались остальные проекты работать. а иметь под каждый проект свой компилятор - не айс, да и места не напасёшься. потому вот и хотелось добить. то что это компилятор это понятно. осталось понять как это обойти.
Сообщение отредактировал dezna - Jan 22 2013, 10:17
|
|
|
|
|
Jan 22 2013, 10:57
|

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

|
Цитата(dezna @ Jan 22 2013, 16:11)  но не хочет. может ещё какие-нибудь отличия имеются? Я добросовестно просмотрел весь листинг. Различия на уровне кодогенерации, ничего криминального. Всё, что надо - присутствует, и вызывается. В плане шаманства - попробуйте закомментировать в makefile строчки Код CFLAGS += -ffunction-sections -fdata-sections , Код CXXFLAGS += -ffunction-sections -fdata-sections и Код LD_FLAGS += -Wl,--gc-sections Ну и ещё раз проверьте, что тип процессора, определённый в makefile, соответствует реальному. Цитата(IgorKossak @ Jan 22 2013, 14:32)  Для сборки под Cortex-Mx пользуюсь тулчейном от Linaro. Я поискал на страничке по ссылке слово "Linaro", и не нашёл. Потом погуглил, и нашёл другую страничку с тулчейном от Linaro  Судя по ответам на первом сайте: Цитата GCC ARM Embedded (call Embedded later) is tuned for Cortex-M/R. Linaro GCC (call Linaro later) is tuned for Cortex-A. Embedded values code size more than performance. Linaro vice versa.
Embedded has a longer release cycle (1 year) and longer maintenance cycle (2 years). Usually no features or optimizations will be added in maintenance period. Linaro has monthly release to follow closely to mainline with latest optimization for newest processors.
Embedded mainly targets bare-metal or RTOS applications. Linaro mainly targets Linux/Andriod kernel/applications. , для нас больше подходит первый вариант. Но он - не Linaro.
--------------------
Если бы я знал, что такое электричество...
|
|
|
|
|
Jan 22 2013, 11:14
|
Участник

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

|
Цитата(AHTOXA @ Jan 22 2013, 14:57)  Я добросовестно просмотрел весь листинг. Различия на уровне кодогенерации, ничего криминального. Всё, что надо - присутствует, и вызывается. В плане шаманства - попробуйте закомментировать в makefile строчки это не понадобилось, хоть и попробовал. всё заработало после правки ld скрипта, за что огромное спасибо. всё оказалось гораздо прозаичнее. связано с программатором и каким-то образом с прерываниями (нога BOOT0 к +VCC постоянно). при выключеных прерываниях всё работает, а как разрешаются, то похоже проц переходит на встроенный загрузчик программ. что и происходило. в main() дёргались светодиоды 3 раза, а когда запускалась ось - всё "висло". Цитата(AHTOXA @ Jan 22 2013, 14:57)  для нас больше подходит первый вариант. Но он - не Linaro. скачал первый вариант, попробовал. всё работает, как и на моём (уже). только код он раздувает почти в 2 раза. моим HEX файл - 3725 байт скачаным - 5705 задумался!
|
|
|
|
Сообщений в этой теме
varvar scmRtos для медных чайников Feb 12 2012, 09:04 varvar Ok, кажется загрузка новой версии (4.0) немного по... Feb 12 2012, 14:56 dxp QUOTE (varvar @ Feb 12 2012, 21:56) Ok, к... Feb 12 2012, 16:34 varvar Цитата(dxp @ Feb 12 2012, 19:34) А зачем ... Feb 12 2012, 18:11 dxp QUOTE (varvar @ Feb 13 2012, 01:11) так н... Feb 13 2012, 06:27 varvar Я с примеров и начинал - с моей версией ИАРа и 3.1... Feb 13 2012, 16:17 dxp QUOTE (varvar @ Feb 13 2012, 23:17) Я с п... Feb 14 2012, 03:52 varvar Попытаюсь воспользоваться еще раз добротой и отзыв... Feb 14 2012, 20:04 a9d Почитай статьи по потокам. Это фактически тоже сам... Feb 14 2012, 20:48 dxp 1. В процессе ждать флаг события от таймера, когда... Feb 15 2012, 05:04 tamam Здравствуйте. Чтобы не плодить лишних тем решил от... Feb 22 2012, 06:18 AHTOXA Цитата(tamam @ Feb 22 2012, 12:18) За осн... Feb 22 2012, 08:10  tamam Цитата(AHTOXA @ Feb 22 2012, 12:10) Ага. ... Feb 22 2012, 09:12 ReAl У меня всё уже работает (1-EventFlag и 4-Debug и н... Feb 22 2012, 08:05 ReAl Цитата(ReAl @ Feb 22 2012, 10:05) Если за... Feb 22 2012, 17:55  tamam Спасибо, буду разбираться дальше. Feb 22 2012, 19:02 ReAl Прошу прощения за задержку. 23-го первый пример бы... Feb 26 2012, 11:55 tamam Спасибо за оперативность. Разбираюсь.... Feb 27 2012, 12:46 ReAl 4-Debug уже там же. Mar 1 2012, 14:28 varvar Товарищи гуру и приближенные к ним!
Помогите р... Jul 12 2012, 08:29 ReAl Как-то так.
Кодvoid SleepUntil(tick_count_t ti... Jul 12 2012, 08:54 varvar Спасибо, когда пояснили, все стало так очевидно... Jul 12 2012, 09:22 Посторонним В... доброго времени днутра или ночера...
есть комплек... Aug 3 2012, 09:06 _Артём_ Цитата(Посторонним В... @ Aug 3 2012, 12... Aug 3 2012, 10:53 Посторонним В... Цитата(_Артём_ @ Aug 3 2012, 11:53) Приме... Aug 6 2012, 08:12 _Артём_ Цитата(Посторонним В... @ Aug 6 2012, 11... Aug 6 2012, 10:34 _Артём_ Цитата(Посторонним В... @ Aug 6 2012, 11... Aug 6 2012, 12:58  Посторонним В... Цитата(_Артём_ @ Aug 6 2012, 13:58) Updat... Aug 7 2012, 08:06   _Артём_ Цитата(Посторонним В... @ Aug 7 2012, 11... Aug 7 2012, 09:56    Посторонним В... Цитата(_Артём_ @ Aug 7 2012, 10:56) Больш... Aug 16 2012, 08:57     _Артём_ Цитата(Посторонним В... @ Aug 16 2012, 11... Aug 16 2012, 11:39     AHTOXA Цитата(Посторонним В... @ Aug 16 2012, 14... Aug 16 2012, 15:44      Посторонним В... Цитата(AHTOXA @ Aug 16 2012, 15:44) Разра... Aug 21 2012, 03:43       AHTOXA У вас, похоже, не работает прерывание от системног... Aug 21 2012, 04:07        Сергей Борщ QUOTE (AHTOXA @ Aug 21 2012, 07:07) У вас... Aug 21 2012, 05:26 Посторонним В... выкладываю исходники Aug 21 2012, 06:31 _Артём_ Цитата(Посторонним В... @ Aug 21 2012, 09... Aug 21 2012, 20:37  Посторонним В... Цитата(_Артём_ @ Aug 21 2012, 20:37) Стра... Aug 22 2012, 04:26 varvar На очередные грабли наступил. В ИАРе для 430 стОит... Sep 6 2012, 18:50 ReAl Если подозрение на стек -- увеличить стек для проц... Sep 6 2012, 20:36 varvar Цитата(ReAl @ Sep 6 2012, 23:36) Если под... Sep 8 2012, 16:17 Chudik Помогите пожалуйста определиться со структурой про... Oct 3 2012, 02:09 dxp Никто, кроме вас, не знает, как лучше распределить... Oct 4 2012, 04:35 Chudik dxp
Спасибо за ответ.
Про общее правило - это-то ... Oct 4 2012, 19:31 _Артём_ Цитата(Chudik @ Oct 4 2012, 22:31) Ага, с... Oct 4 2012, 20:10  Chudik Цитата(_Артём_ @ Oct 4 2012, 13:10) Ну да... Oct 4 2012, 21:11 Chudik Не нашёл в документации других членов класса proce... Oct 4 2012, 23:54 _Артём_ Цитата(Chudik @ Oct 5 2012, 02:54) Не наш... Oct 5 2012, 00:35 Chudik Ага, спасибо, нашёл в доке. Oct 5 2012, 02:17 Chudik Возможно глупый вопрос: может ли mutex быть членом... Oct 5 2012, 14:22 _Артём_ Цитата(Chudik @ Oct 5 2012, 17:22) может ... Oct 5 2012, 14:27  AHTOXA Локальной тоже может.
Например, представьте, что у... Oct 5 2012, 16:41   _Артём_ Цитата(AHTOXA @ Oct 5 2012, 19:41) Локаль... Oct 5 2012, 17:03   Chudik Цитата(AHTOXA @ Oct 5 2012, 09:41) У меня... Oct 5 2012, 23:59    _Артём_ Цитата(Chudik @ Oct 6 2012, 02:59) Вот, в... Oct 6 2012, 01:03     Chudik Цитата(_Артём_ @ Oct 5 2012, 18:03) А чем... Oct 6 2012, 03:07    AHTOXA Цитата(Chudik @ Oct 6 2012, 05:59) Можно ... Oct 6 2012, 08:53 Chudik AHTOXA
Огромное спасибо! Как раз первое, что я... Oct 6 2012, 20:25 Chudik AHTOXA
Прикинул объявление класса для дисплея. Пос... Oct 11 2012, 22:54 AHTOXA По-моему, вполне. В любом случае, по ходу дела все... Oct 12 2012, 03:33  Chudik Цитата(AHTOXA @ Oct 11 2012, 20:33) по хо... Oct 13 2012, 04:07   AHTOXA Я, честно говоря, не совсем понимаю, что я должен ... Oct 13 2012, 05:10 Chudik Ну, вот такие замечания и нужны Спасибо.
Естестве... Oct 13 2012, 18:54 AHTOXA Цитата(Chudik @ Oct 14 2012, 00:54) А поч... Oct 15 2012, 03:26 Chudik AHTOXA
получил сообщение в IAR
КодError[Pe020... Oct 17 2012, 23:45 AHTOXA Я в IAR-е не копенгаген Oct 18 2012, 03:30 Сергей Борщ QUOTE (Chudik @ Oct 18 2012, 02:45) ident... Oct 18 2012, 05:54 Chudik Посмотрел опции компиляции. Там стоял автоматическ... Oct 18 2012, 18:40 AHTOXA А в файле M3_Terminal.h есть строчка
Код#include ... Oct 18 2012, 18:52 Chudik Конечно:
Код#ifndef M3_TERMINAL_H
#define M3_TERMI... Oct 18 2012, 19:36 AHTOXA Хм. Странно.
1. Возможно где-то ещё есть объявлени... Oct 18 2012, 19:49  Chudik Разобрался, мой косяк был - кросс ссылки на файлы ... Oct 18 2012, 21:00  _Артём_ Цитата(AHTOXA @ Oct 18 2012, 22:49) в ИАР... Oct 18 2012, 21:20 AHTOXA Цитата(Chudik @ Oct 19 2012, 03:00) в соо... Oct 19 2012, 04:54 Chudik Цитата(AHTOXA @ Oct 18 2012, 21:54) Ну и ... Oct 19 2012, 20:22  _Артём_ Цитата(Chudik @ Oct 19 2012, 23:22) Угу, ... Oct 19 2012, 23:00 Chudik Ничего не понимаю
КодError[Pe020]: ide... Oct 26 2012, 22:32 AHTOXA Это же GCC-шные названия файлов и регистров у меня... Oct 26 2012, 23:21 Chudik Логично, конечно.
Сейчас посмотрю. Мне казалось, ч... Oct 26 2012, 23:57 Chudik Регистры переназначил. Функцию rw для SPI подправи... Oct 27 2012, 03:18 AHTOXA 1. spi_base_t - это не шаблонный класс, не надо к ... Oct 27 2012, 05:43 Chudik Ага, спасибо, поменял. Полегчало.
Соотвественно, ... Oct 27 2012, 05:53          IgorKossak Цитата(AHTOXA @ Jan 22 2013, 12:57) Я пои... Jan 22 2013, 11:49           demiurg_spb Цитата(IgorKossak @ Jan 22 2013, 15:49) Н... Jan 22 2013, 12:58            IgorKossak Цитата(demiurg_spb @ Jan 22 2013, 14:58) ... Jan 22 2013, 13:26           AHTOXA Цитата(IgorKossak @ Jan 22 2013, 17:49) Н... Jan 22 2013, 14:04 IgorKossak Для сборки под Cortex-Mx пользуюсь тулчейном от Li... Jan 22 2013, 08:32 mdmitry Цитата(IgorKossak @ Jan 22 2013, 11:32) Д... Jan 22 2013, 10:24 dezna Цитата(IgorKossak @ Jan 22 2013, 12:32) Д... Jan 22 2013, 10:28
2 страниц
1 2 >
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0
|
|
|