AHTOXA 14 17 февраля, 2019 Опубликовано 17 февраля, 2019 · Жалоба Arlleex, а контекст FPU вы, как я вижу, не сохраняете? Планируете? Почему не какая-нибудь готовая ось? В главе "анализ велосипедной продукции" эта тема не очень раскрыта. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Wese 0 17 февраля, 2019 Опубликовано 17 февраля, 2019 · Жалоба 13 hours ago, Arlleex said: Спасибо, что делитесь опытом на конкретном примере и за описание. Думаю вам стоит выложить код на гитхаб, чтобы он затерялся. У меня бывают простые проекты по хитрому управлению реле, для однообразия тащу туда фриртос. Иногда, создаётся чувство избыточности, с другой стороны это просто ощущение) в любом случаи ещё раз спасибо вам за код. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Arlleex 131 17 февраля, 2019 Опубликовано 17 февраля, 2019 · Жалоба 6 часов назад, AHTOXA сказал: Arlleex, а контекст FPU вы, как я вижу, не сохраняете? Планируете? Дело в том, что к реализации собственного механизма кооперативной многозадачности я пришел в некоторой степени факультативно. По работе требовалось написать ПО для МК STM32F0, который построен на базе Cortex-M3, в котором FPU нет. Поскольку это факультативное занятие я оставил себе на дом (посидеть вечерком, покумекать), нужно было на чем-то проверить свои мысли. А под рукой оказалась только плата с STM32F4. Отсюда, собственно, и получилось, что сейчас контекст FPU я не сохраняю. Но на самом деле, не составляет проблемы сохранять и его, таким образом, адаптируя мою недоОсь под Cortex-M4F. Планирую или нет - хм... Пока что, скорее всего, нет. Однако, если будет желание запустить свою систему на Cortex-M4F, допилю файл EDS.s, реализующий переключение контекста в части сохранения регистров FPU. 6 часов назад, AHTOXA сказал: Почему не какая-нибудь готовая ось? В главе "анализ велосипедной продукции" эта тема не очень раскрыта. Вопрос, по крайней мере для меня, скорее, из разряда риторических Дело в том, что поставить готовую ОС не составляет проблем. Однако, когда требуется написать достаточно простое ПО, ставя туда ОСРВ типа FreeRTOS, меня не покидает чувство стрельбы из пушки по воробьям - то есть чувство неоправданного использования ресурсов. С другой стороны, иногда просто полезно повторить/написать свое, даже если это уже сделано до тебя - так существенно улучшается понимание деталей и всех процессов. Это даже скорее как спортивный хобби-интерес Для жирных проектов я сразу нацеливаюсь использовать ОСРВ, поскольку обратно слезть с ее плюшек очень тяжело. Однако, глядя на объем кода своих исходников выше, пришел к мнению, что для простых проектов тащить ОСРВ ради двух-трех потоков с полудесятком семафоров не имеет смысла (тот же FreeRTOS на минималках будет выглядеть достаточно монструозно, к тому же не совсем оптимально, ИМХО). 2 часа назад, Wese сказал: Спасибо, что делитесь опытом на конкретном примере и за описание. Думаю вам стоит выложить код на гитхаб, чтобы он затерялся. У меня бывают простые проекты по хитрому управлению реле, для однообразия тащу туда фриртос. Иногда, создаётся чувство избыточности, с другой стороны это просто ощущение) в любом случаи ещё раз спасибо вам за код. Вот да, про чувство избыточности я и хотел сказать выше К сожалению, я не достаточно популярен для гитхаба, да и регистрироваться ради пары исходников, думаю, не стоит. Тем, кто заинтересован, лучше просто сохранить себе исходники и иметь в виду такой вот нехитрый способ организации ПО. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
AlexandrY 3 17 февраля, 2019 Опубликовано 17 февраля, 2019 · Жалоба 1 hour ago, Arlleex said: К сожалению, я не достаточно популярен для гитхаба, да и регистрироваться ради пары исходников, думаю, не стоит. Тем, кто заинтересован, лучше просто сохранить себе исходники и иметь в виду такой вот нехитрый способ организации ПО. Спасибо что не запостили на гитхаб, там точно такого добра хватает. Отказываясь от RTOS вы как минимум лишаетесь знаний о нагрузке процессора, т.е. не может сказать насколько гарантировано реальное время. Также не знаете сколько стека потребляется и сколько времени выполняются отдельные задачи. Т.е. теряете контроль над теми самыми ресурсами которые хотите якобы экономить. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ViKo 1 18 февраля, 2019 Опубликовано 18 февраля, 2019 · Жалоба В 15.02.2019 в 23:05, AHTOXA сказал: static constexpr size_t bufferSize { 32 }; size_t rxCount { 0 }; uint8_t rxBuffer[bufferSize]; А почему не написали constexpr uint bufferSize = 32; Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
AHTOXA 14 18 февраля, 2019 Опубликовано 18 февраля, 2019 · Жалоба Это нововведение C++11,называется uniform initialization. Стараюсь применять, где уместно. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Arlleex 131 18 февраля, 2019 Опубликовано 18 февраля, 2019 · Жалоба В 17.02.2019 в 19:40, AlexandrY сказал: Спасибо что не запостили на гитхаб, там точно такого добра хватает. Отказываясь от RTOS вы как минимум лишаетесь знаний о нагрузке процессора, т.е. не может сказать насколько гарантировано реальное время. Также не знаете сколько стека потребляется и сколько времени выполняются отдельные задачи. Т.е. теряете контроль над теми самыми ресурсами которые хотите якобы экономить. Я прекрасно это понимаю. Поэтому сразу оговорился, что эта система имеет недостатки, что она не является заменой полноценной вытесняющей ОСРВ. Но в ядре моей EDS всего 150 строк кода, а глаза она не замыливает в отличие от switch-case-кода. Или Вам так не кажется? Также я указал, что применять EDS (а по сути, предложенный вариант является минималистичной кооперативной ОС) можно в достаточно простых проектах, где реального времени, как такового, и не требуется. И уж тем более, я не навязываю использовать подход упрощенной кооперативной ОС: не хочется - не используйте. P.S. Уж расход (примерный) стека даже в моем варианте можно проанализировать. P.S. Под ресурсами я имел в виду объем ОЗУ на статические флаги в каждой функции, а также время задержки обработки событий в случае однопоточного выполнения "в лоб". P.S. Не стеба ради: покажите, пожалуйста, пару-тройку простых проектов на гитхабе, в которых можно выцыганить интересные фишки и плюшки самопальных ОС (лучше все-таки недоОСей, мне так больше нравится) - я не знаю даже, куда и по каким названиям копать. P.S. Только не упоминайте SSP Synergy, а то у меня укоренится стойкое впечатление, что Renesas Вам доплачивают Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
esaulenka 5 19 февраля, 2019 Опубликовано 19 февраля, 2019 · Жалоба On 2/12/2019 at 10:26 PM, AlexandrY said: Гляньте в сорсы ThreadX. (лежит в известном всем месте) Там каждая! строчка прокоментирована. Ну так эта ось потому в 6 миллиардах устройств и стоит. Эт к вопросу о том "кто так сказал" Глянул в заголовки ThreadX, которая лежит на официальном сайте (Воровать, как известно, нехорошо. Особенно если можно не воровать). Бесплатно (после регистрации) дают только заголовки, документацию и объектник. typedef struct TX_SEMAPHORE_STRUCT { /* Define the semaphore ID used for error checking. */ ULONG tx_semaphore_id; /* Define the semaphore's name. */ CHAR *tx_semaphore_name; /* Define the actual semaphore count. A zero means that no semaphore instance is available. */ ULONG tx_semaphore_count; Ну спасибо большое! Бесценные комментарии! Как без них догадаться, что в переменной semaphore_name будет находиться название семафора?! Ну и бесконечные портянки дефайнов-передефайнов, чтоб удобнее было в IDE к определению обращаться (для тех счастливчиков, кто купил исходники). /* Services without error checking. */ #define tx_kernel_enter _tx_initialize_kernel_enter #define tx_block_allocate _tx_block_allocate #define tx_block_pool_create _tx_block_pool_create #define tx_block_pool_delete _tx_block_pool_delete #define tx_block_pool_info_get _tx_block_pool_info_get #define tx_block_pool_performance_info_get _tx_block_pool_performance_info_get #define tx_block_pool_performance_system_info_get _tx_block_pool_performance_system_info_get #define tx_block_pool_prioritize _tx_block_pool_prioritize #define tx_block_release _tx_block_release Ну, в общем, к вопросу о том, "кто так сказал"... Доверия к восторженным крикам AlexanderY как не было, так и не появляется никак... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
AlexandrY 3 19 февраля, 2019 Опубликовано 19 февраля, 2019 · Жалоба 2 hours ago, esaulenka said: Глянул в заголовки ThreadX, которая лежит на официальном сайте (Воровать, как известно, нехорошо. Особенно если можно не воровать). Ну и бесконечные портянки дефайнов-передефайнов, чтоб удобнее было в IDE к определению обращаться (для тех счастливчиков, кто купил исходники). Ох уж эти наивные передергивания. Речь не о воровать, а о реверсе. И как известно самые либеральные законы по поводу реверса приняты в оплоте демократии. Во вторых надо было показать коммент перед дефайнами, который говорит о том, что в RTOS-е есть API с контролем ошибок и есть более быстрое без контроля. А там ниже еще куча дефайнов с настройками с помощью которых разрешают или запрещают отдельные сервисы, включая кстати очень крутой сервис трассировки. Если не нравятся быстрые и развитые оси юзайте FreeRTOS. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ig_z 0 19 февраля, 2019 Опубликовано 19 февраля, 2019 · Жалоба 23 hours ago, Arlleex said: P.S. Не стеба ради: покажите, пожалуйста, пару-тройку простых проектов на гитхабе, в которых можно выцыганить интересные фишки и плюшки самопальных ОС (лучше все-таки недоОСей, мне так больше нравится) - я не знаю даже, куда и по каким названиям копать. Лет двадцать назад запилил кооперативку начитавшись этого товарища http://www.drdobbs.com/embedded-systems/a-task-dispatcher-for-embedded-systems/184411018 А он вроде начитался каких то интеловских апнот. Прекрасно работало на тогдашних авр и мсп. Все что нужно, прикручивалось по ходу. Единственное, что не попробовали - это маложрущие режимы. Потом похожий подход переписал на плюсы с использованием указателей на методы. Но забросили затею, для тех кристаллов это был явный оверхед. ПС. Сейчас забавно наблюдать, как отдельная личность носится с делегатами, боюс представить, что будет когда доберется до патернов Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Forger 17 19 февраля, 2019 Опубликовано 19 февраля, 2019 · Жалоба 1 hour ago, ig_z said: ПС. Сейчас забавно наблюдать, как отдельная личность носится с делегатами, боюс представить, что будет когда доберется до патернов Паттерны - это не что-то ужасное и монстроподобное в стиле, например, exception, RTTI и т. п., которые действительно плодят порой не прогнозируемый оверхед. А если еще и кучу ипользуете "в хвост и гриву", то вообще - лотерея. Паттерны скорее даже наоборот - позволяют более грамотно выстроить весь проект, а существующий проект вычистить от кучи ненужного "хлама". Оверхеда от него нет, если все делать разумно. Поизучайте матчасть, а уже потом хихикайте :) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
AlexandrY 3 19 февраля, 2019 Опубликовано 19 февраля, 2019 · Жалоба On 2/18/2019 at 8:51 PM, Arlleex said: P.S. Не стеба ради: покажите, пожалуйста, пару-тройку простых проектов на гитхабе, в которых можно выцыганить интересные фишки и плюшки самопальных ОС (лучше все-таки недоОСей, мне так больше нравится) - я не знаю даже, куда и по каким названиям копать. Берете проекты стеков ZigBee или Bluetooth под bareboard, такие есть у NXP , входят в их SDK и находите там эти самые недооси. Обычно лежат в файлике с незатейливым названием *_os_abstraction_bm.c Конечно всем известный - http://www.state-machine.com/qpc/ тож недоось. Недооси, а точнее событийные автоматы теперь не пишут на С, а разрабатывают и отлаживают в средах типа Stateflow или Visual State В отличие от текстового самопала стэйт диаграммы дают любой уровень вложенности и параллелизма, а также прямую передачу ивентов сквозь иерархию. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
haker_fox 60 28 февраля, 2019 Опубликовано 28 февраля, 2019 · Жалоба On 2/16/2019 at 4:23 AM, AHTOXA said: Срочно учить матчасть! Растактовку, потерю на переходах, сброс конвейера и всё такое. Запоздалый вопрос, но где именно про это читать? Cortex-Mx Technical Reference Manual? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Harbinger 10 28 февраля, 2019 Опубликовано 28 февраля, 2019 · Жалоба В 19.02.2019 в 20:45, ig_z сказал: Единственное, что не попробовали - это маложрущие режимы. Чуть позже попробовали, на MSP. Если я правильно понял, о чём речь. :) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
AHTOXA 14 28 февраля, 2019 Опубликовано 28 февраля, 2019 · Жалоба 2 часа назад, haker_fox сказал: Запоздалый вопрос, но где именно про это читать? Cortex-Mx Technical Reference Manual? Да, TRM. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться