реклама на сайте
подробности

 
 
> scmRtos для медных чайников
varvar
сообщение Feb 12 2012, 09:04
Сообщение #1


Частый гость
**

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



Добрый день всем!
Возникло желание - точнее, необходимось использовать многозадачность в своем проекте - вернее, или надо писать свой диспетчер (в котором я уже успел запутаться), или пользоваться чем-то готовым.
Увидел scmRtos - попытался запустить демку. Пример под IAR на MSP430F2617 - у меня на плате MSP430F2410, IAR версия 5.30

Немножко подправил демку под свою плату, чтобы нужный светодиодик моргал, указал иару на MSP430F2410 - и ничего. WDT прерывание случается раза 4 (вроде как это системный таймер?), после чего программа улетает неведомо куда.

Кто-нибудь может на путь истинный наставить - что можно трогать, что нельзя. Может ли на работоспособности версия компилятора сказаться? Или, лучше всего, может у кого готовая рыба завалялась для моргания именно на этом кристалле или похожем?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
dezna
сообщение Jan 21 2013, 10:38
Сообщение #2


Участник
*

Группа: Участник
Сообщений: 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
Go to the top of the page
 
+Quote Post
AHTOXA
сообщение Jan 21 2013, 11:10
Сообщение #3


фанат дивана
******

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



Светодиоды в 1-EventFlag мигают быстро-быстро, глазом не углядеть. Может быть, в этом дело?
Для проверки попробуйте поменять TProc1::exec() вот на такую:
Код
    OS_PROCESS void TProc1::exec()
    {
        for(;;)
        {
            sleep(500);
            PB0.On();
            sleep(500);
            PB0.Off();
        }
    }


--------------------
Если бы я знал, что такое электричество...
Go to the top of the page
 
+Quote Post
dezna
сообщение Jan 21 2013, 11:17
Сообщение #4


Участник
*

Группа: Участник
Сообщений: 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
Go to the top of the page
 
+Quote Post
AHTOXA
сообщение Jan 21 2013, 16:22
Сообщение #5


фанат дивана
******

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



В вашем листинге нет упоминания о конструкторах. Похоже, что они не слинковались.
Что за компилятор у вас?
Попробуйте yagarto или kgp. С ними я проверял - работает.


--------------------
Если бы я знал, что такое электричество...
Go to the top of the page
 
+Quote Post
dezna
сообщение Jan 22 2013, 04:58
Сообщение #6


Участник
*

Группа: Участник
Сообщений: 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 - попробую
но конечно хотелось бы разобраться с моей сборкой. могу куда-нибудь скинуть для проверки.
потому как все остальные проекты то работают.
Go to the top of the page
 
+Quote Post
AHTOXA
сообщение Jan 22 2013, 05:47
Сообщение #7


фанат дивана
******

Группа: Свой
Сообщений: 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))


--------------------
Если бы я знал, что такое электричество...
Go to the top of the page
 
+Quote Post
dezna
сообщение Jan 22 2013, 06:21
Сообщение #8


Участник
*

Группа: Участник
Сообщений: 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

помогите пожалуйста добить этот вопрос!
Go to the top of the page
 
+Quote Post
AHTOXA
сообщение Jan 22 2013, 08:20
Сообщение #9


фанат дивана
******

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



Сложно сказать. Листинг практически идентичен моему. init_stack_frame и Default_SystemTimer_ISR - вообще один-в-один.
Должно работать!

ЗЫ. Если уж совсем не пойдёт, и вы боитесь самодельных сборок, то есть Sourcery CodeBench Lite, бывшая sourcery g++ lite. (качать ARM EABI Release).


--------------------
Если бы я знал, что такое электричество...
Go to the top of the page
 
+Quote Post
dezna
сообщение Jan 22 2013, 10:11
Сообщение #10


Участник
*

Группа: Участник
Сообщений: 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
Go to the top of the page
 
+Quote Post
AHTOXA
сообщение Jan 22 2013, 10:57
Сообщение #11


фанат дивана
******

Группа: Свой
Сообщений: 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 sm.gif
Судя по ответам на первом сайте:
Цитата
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.


--------------------
Если бы я знал, что такое электричество...
Go to the top of the page
 
+Quote Post
dezna
сообщение Jan 22 2013, 11:14
Сообщение #12


Участник
*

Группа: Участник
Сообщений: 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
задумался!
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- 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 страниц V   1 2 >


Reply to this topicStart new topic
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 29th July 2025 - 17:05
Рейтинг@Mail.ru


Страница сгенерированна за 0.01639 секунд с 7
ELECTRONIX ©2004-2016