|
Cortex-M4(F) порт под GCC залит в репозиторий. |
|
|
|
Dec 3 2012, 18:03
|

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

|
Всем привет! Собственно, новость указана в теме  Приглашаю к тестированию. На данный момент я протестировал его на паре тестовых проектов, всё работает нормально. Но глюки конечно возможны. Что касаемо скорости. Тестировал на stm32f4discovery, проц STM32F407 Rev A (То есть, не работает ART prefetch), частота 168 МГц. Итак. - Если два процесса не использовали FPU, то передача управления осуществляется за 900ns.
- Если один из двух процессов использовал FPU, то передача управления осуществляется за 1.1us.
- Если оба процесса использовали FPU, то передача управления осуществляется за 1.34us.
Красивая картинка:
К порту залиты примеры для STM32F4xx. Кроме стандартных четырёх примеров добавлен пятый - "5-FPU". Он тестирует неизменность контекстов задач при выполнении действий с плавающей точкой. Да, кстати. Этот порт подходит без изменений для M4F, M4 и M3. Так что, скорее всего, в дальнейшем развиваться будет именно он. Забыл написать. Краткая инструкция по скачиванию.
--------------------
Если бы я знал, что такое электричество...
|
|
|
|
|
 |
Ответов
|
Apr 27 2013, 06:31
|
Частый гость
 
Группа: Участник
Сообщений: 153
Регистрация: 19-11-12
Пользователь №: 74 463

|
Цитата(AHTOXA @ Apr 27 2013, 08:38)  Конечно делали  Пример 5-FPU как раз этим и занимается. Там две задачи постоянно проверяют неизменность своего контекста (контексты изначально различаются), а третья - вычисляет число Пи. я не разбираюсь в асм потому не могу понять что происходит во втором и третьем потоке, пока во всех четырех потоках поставил моргание светодиодами а где можно почитать как проекты на с без оси адаптировать под csmrtos? обязательно ли все делать на с++ или можно подключать старые модули на с? и существуют ли где либо ссылки по прикручиванию к этой оси какой либо виртуальной машины пи-кода?
|
|
|
|
|
Apr 27 2013, 08:33
|

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

|
Цитата(сарматъ @ Apr 27 2013, 12:31)  я не разбираюсь в асм потому не могу понять что происходит во втором и третьем потоке, Там сначала обычные регистры заполняются разными значениями, потом эти значения копируются в плавучие регистры, а потом в цикле производится сравнение их значений. Если выявляется несовпадение - начинает моргать светодиод. А почему у вас возникли сомнения в неизменности контекста? Цитата(сарматъ @ Apr 27 2013, 12:31)  а где можно почитать как проекты на с без оси адаптировать под csmrtos? Почитайте для начала Руководство пользователя. Это поможет понять, как вообще устроены программы с использованием scmRTOS. Цитата(сарматъ @ Apr 27 2013, 12:31)  обязательно ли все делать на с++ или можно подключать старые модули на с? и существуют ли где либо ссылки по прикручиванию к этой оси какой либо виртуальной машины пи-кода? Модули на си подключать можно. Насчёт пи-кода - не припоминаю. Знаю только, что к ардуине прикручивали.
--------------------
Если бы я знал, что такое электричество...
|
|
|
|
|
Aug 11 2013, 18:25
|
Частый гость
 
Группа: Участник
Сообщений: 153
Регистрация: 19-11-12
Пользователь №: 74 463

|
Цитата(AHTOXA @ Apr 27 2013, 11:33)  Там сначала обычные регистры заполняются разными значениями, потом эти значения копируются в плавучие регистры, а потом в цикле производится сравнение их значений. Если выявляется несовпадение - начинает моргать светодиод. А почему у вас возникли сомнения в неизменности контекста? добрый день,задачка стала увеличиваться, увеличил размер памяти под стек заморгал светодиод, контекст нарушается?
|
|
|
|
|
Aug 12 2013, 08:53
|
Частый гость
 
Группа: Участник
Сообщений: 153
Регистрация: 19-11-12
Пользователь №: 74 463

|
Цитата(AHTOXA @ Aug 12 2013, 11:24)  Может быть. Хотя я довольно интенсивно использую порт в нескольких проектах, и ни разу с таким не сталкивался. Какой у вас был размер стека, и какой стал? Может быть всё равно не хватает? И убедитесь, что у вас самая свежая версия оси, я там что-то исправлял вроде. за основу взят ваш пример typedef OS::process<OS::pr0, 4000> TProc0; typedef OS::process<OS::pr1, 1000> TProc1; typedef OS::process<OS::pr2, 4000> TProc2; typedef OS::process<OS::pr3, 306> TProc3;--- так не работает typedef OS::process<OS::pr0, 4000> TProc0; typedef OS::process<OS::pr1, 1000> TProc1; typedef OS::process<OS::pr2, 4000> TProc2; typedef OS::process<OS::pr3, 303> TProc3;--- так работает при величине стека третьей задачи больше 303 начинает моргать светодиод TProc3 Proc3; template <> OS_PROCESS void TProc3::exec() { test_context(0x87654321);--- ваша функция на ассембл } обнаружил случайно - стал в ваш пример свое нутро пихать сохранив эту задачку с проверкой сохранения контекста, пока везде стек был 300байт все работало нормально, на определенном этапе разростания задачи загорелся и не выключался светодиод - решил сначала что плата накрылась поменял отладочную плату поведение не изменилось, подумал, что ошибка возникла изза переполнения стека, везде увеличил до 1000 светодиод стал моргать, тогда стал искать как влиятет размер стека в разных задачах, обнаружил что при размере стека в третьей задаче больше 303 байт светодиод в ней моргает, при меньших значениях не горит, такое поведение меня очень удивило,логичнее было бы еслиб было наоборот, видимо ошибка где то в ядре системы?
Сообщение отредактировал сарматъ - Aug 12 2013, 08:55
|
|
|
|
Сообщений в этой теме
AHTOXA Cortex-M4(F) порт под GCC залит в репозиторий. Dec 3 2012, 18:03 Pat Антон, Спасибо огромное. Dec 3 2012, 18:25 ReAl Цитата(AHTOXA @ Dec 3 2012, 20:03) Собств... Dec 3 2012, 18:46 spf Схемы доступа претерпели изменения, в текущий моме... Dec 25 2012, 08:28 AHTOXA Добавлю сюда, пожалуй. Вот что я раскопал по повод... Dec 26 2012, 14:44  mdmitry Цитата(AHTOXA @ Dec 26 2012, 17:44) Добав... Dec 27 2012, 11:42   AHTOXA Цитата(mdmitry @ Dec 27 2012, 17:42) Вопр... Dec 27 2012, 15:19    сарматъ Цитата(AHTOXA @ Apr 27 2013, 11:33) Там с... Apr 27 2013, 09:52       AHTOXA Увеличивать стек конкретно этой задачи нет смысла,... Aug 12 2013, 10:54        сарматъ Цитата(AHTOXA @ Aug 12 2013, 13:54) Увели... Aug 12 2013, 11:41         AHTOXA Я имел в виду, что не смогу добраться до своих сер... Aug 12 2013, 14:54          сарматъ версия os 4.0
динамически память вообще не выделя... Aug 12 2013, 15:03           AHTOXA Вот тут: ссылка. Там можно нажать на "Downloa... Aug 12 2013, 15:54 сарматъ вот распределение памяти в чистой вашей задаче
... Aug 12 2013, 17:26 AHTOXA Что с осью, у вас была свежая версия?
У меня с так... Aug 12 2013, 17:58 сарматъ копмилятор gcc-arm-none-eabi-4_6-2012q2
********... Aug 12 2013, 18:47 AHTOXA Творится что-то невероятное
Давайте сделаем чистый... Aug 13 2013, 15:02 сарматъ сейчас установил как раз этот тулчейн, устанавлива... Aug 13 2013, 17:03 сарматъ результат сборки со стеком 300
text data ... Aug 13 2013, 19:22 AHTOXA Уф-ф
Я думаю, что причина всё-таки в том, что в за... Aug 14 2013, 05:14 IgorKossak А ещё, на мой взгляд, лучше - создать отдельную те... Aug 14 2013, 07:39 сарматъ а как грамотно подключить в .ld использование 16к ... Aug 14 2013, 08:02 AHTOXA Цитата(IgorKossak @ Aug 14 2013, 13:39) А... Aug 15 2013, 08:16 сарматъ Цитата(AHTOXA @ Aug 15 2013, 11:16) и зат... Aug 15 2013, 09:09  AHTOXA Цитата(сарматъ @ Aug 15 2013, 15:09) в ве... Aug 16 2013, 09:58   сарматъ Цитата(AHTOXA @ Aug 16 2013, 12:58) Но. В... Aug 16 2013, 10:16    AHTOXA Цитата(сарматъ @ Aug 16 2013, 16:16) они ... Aug 16 2013, 14:43 сарматъ короче сломал себе голову и сделал проще, вот так ... Aug 16 2013, 18:37 AHTOXA Цитата(сарматъ @ Aug 17 2013, 00:37) ну и... Aug 17 2013, 20:53  сарматъ Цитата(AHTOXA @ Aug 17 2013, 23:53) А зач... Aug 18 2013, 09:05   AHTOXA Компилятор ставит дефайн __SOFTFP__ в двух случаях... Aug 18 2013, 12:56 сарматъ а как кстати определить адрес функции во флеше? Aug 18 2013, 14:40 Сергей Борщ Что вы подразумеваете под "определить"? ... Aug 18 2013, 15:40 сарматъ я имею ввиду написание загрузчика-биоса отдельно о... Aug 18 2013, 16:17 Сергей Борщ QUOTE (сарматъ @ Aug 18 2013, 18:17) я им... Aug 18 2013, 16:26 сарматъ узнать, т.е. загрузчик-биос загружает из внешней п... Aug 18 2013, 16:31 Сергей Борщ QUOTE (сарматъ @ Aug 18 2013, 18:31) пото... Aug 19 2013, 13:24 сарматъ восстановил задачку, все работает
очень приятное ... Aug 19 2013, 12:07 сарматъ еще раз спасибо, буду осмысливать Aug 19 2013, 13:47 arm-user Добрый день.
Пользуюсь SCM под LPC17xx продолжите... Aug 27 2013, 07:21 Сергей Борщ QUOTE (arm-user @ Aug 27 2013, 09:21... Aug 27 2013, 09:54  arm-user Цитата(Сергей Борщ @ Aug 27 2013, 13:54) ... Aug 27 2013, 17:16 сарматъ добрый день, подскажите а ТMutex.lock() запрещает ... Aug 28 2013, 07:55 Сергей Борщ QUOTE (сарматъ @ Aug 28 2013, 09:55) подс... Aug 28 2013, 09:22 сарматъ а вот эта функция
static __INLINE void __disable_i... Aug 28 2013, 10:37 AHTOXA Да, запретит.
Но удобнее для этого пользоваться TC... Aug 28 2013, 11:01 сарматъ спасибо, сейчас почитаю что это
вот что нашел htt... Aug 28 2013, 11:22 mdmitry А не проще ли почитать документацию на scmRTOS отс... Aug 28 2013, 11:55 сарматъ наверное проще и этот файл у меня открыт, вот толь... Aug 28 2013, 12:01 mdmitry Цитата(сарматъ @ Aug 28 2013, 16:01) наве... Aug 28 2013, 12:15 сарматъ мдмитрий и опять вы правы
антоха, снова я уперся... Aug 28 2013, 12:28 AHTOXA Цитата(сарматъ @ Aug 28 2013, 18:28) а в ... Aug 28 2013, 14:33  сарматъ аааааа.... вот как раз по поводу этого я ссылку вы... Aug 28 2013, 15:13   AHTOXA Ссылки про ARM7TDMI, это не то. У Кортексов всё эт... Aug 28 2013, 16:30 сарматъ дааа.... пока все это далеко от моего понимания, п... Aug 28 2013, 20:20 AHTOXA А чего там понимать? Вы читали не про тот контролл... Aug 28 2013, 22:11 сарматъ а если подобные конструкции будут в паралельных за... Aug 29 2013, 06:12 AHTOXA Цитата(сарматъ @ Aug 29 2013, 12:12) а ес... Aug 29 2013, 11:21 сарматъ #define disable_interrupts() __asm__ __volatile__ ... Aug 30 2013, 21:50 AHTOXA Варианты равнозначны. Ось не сломается.
Но два раз... Aug 31 2013, 07:04 сарматъ RE: Cortex-M4(F) порт под GCC залит в репозиторий. Aug 31 2013, 07:56 сарматъ антоха, я вот нашел что происходит когда во время ... Sep 1 2013, 17:45 AHTOXA Прерывание с тем же приоритетом, что и текущее -- ... Sep 1 2013, 19:39 сарматъ спасибо Sep 1 2013, 20:31 сарматъ а в порте для см4 обработка прерываний происходит ... Sep 2 2013, 14:14 AHTOXA Нет. У нас прерывание системного таймера имеет сам... Sep 2 2013, 17:13 сарматъ а что более ресурсоемко TEventFlag.wait() или slee... Sep 3 2013, 09:46 Сергей Борщ QUOTE (сарматъ @ Sep 3 2013, 11:46) а что... Sep 3 2013, 11:09 сарматъ отсутствие необходимой квалификации как минимум Sep 3 2013, 11:38 Сергей Борщ QUOTE (сарматъ @ Sep 3 2013, 13:38) отсут... Sep 3 2013, 13:28 сарматъ во первых я не ставил целью кого то рассмешить
во... Sep 3 2013, 14:10 сарматъ измерил время выполнения sleep и wait таким образо... Sep 4 2013, 08:04 AHTOXA Цитата(сарматъ @ Sep 3 2013, 20:10) реком... Sep 4 2013, 08:35 сарматъ да у меня ошибочная методика измерения времени, с ... Sep 4 2013, 08:46 AHTOXA Цитата(сарматъ @ Sep 4 2013, 14:46) а в в... Sep 4 2013, 09:50 сарматъ а приоритет этого процесса наивысший? и этот обраб... Sep 4 2013, 10:02 AHTOXA Цитата(сарматъ @ Sep 4 2013, 16:02) а при... Sep 4 2013, 12:43 Сергей Борщ Вы забыли:
а) тег [ code ]
б) в начале обработчика... Sep 4 2013, 12:44 сарматъ спасибо, не помню ставил ли я эту строчку... в дру... Sep 4 2013, 12:50 сарматъ антоха а в планах не стоит для ф417 контроллера по... Sep 19 2013, 08:10 AHTOXA А какая разница с точки зрения порта? Sep 19 2013, 09:38 сарматъ сейчас вот подумал может действительно никакой, пр... Sep 19 2013, 09:53
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|