Перейти к содержанию
    

Вытесняющая задача по времени выполнения. Очень маленькая ОС.

15 минут назад, Картошка сказал:

А о размере can фрейма не наслышаны случаем :) ?!

А вы 5000 на "тыс" умножить сможете в уме или калькулятор нужен? :dash1:

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

5 часов назад, jcxz сказал:

Например есть TCP/IP-стек (через Ethernet) и в нём нужно работать с быстрой реакцией на короткие UDP и медленно и объёмно обрабатывать HTTP-запросы или например - длинные JSON-ы парсить?

Задачи делать быстрые сетевые стеки у меня не было, так наверно на прерывание таймера бы его вешать пришлось...

"длинные JSON-ы парсить?" - чур меня от этого убожища :bad:

Я еще могу понять HTTP, т.к. от него просто не деться никуда в случае веб-морды, но все остальные м2м коммуникации делаю только бинарными пакетами в режиме TCP RAW сокетов. Стараюсь не вносить еще свой вклад в засирание инета ненужной текстовухой :dirol:

Да и в HTTP, как правило часто требуется доступ к ФС, поэтому быстро это никогда и не будет...

Изменено пользователем mantech

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

On 10/1/2020 at 8:23 PM, Картошка said:

Надеюсь что-то выковырять получится.

Спрашивай, если чего непонятно. У меня где-то валяются старые версии, без математики. Просто М3 сейчас не применяю, а для М0 ось уже избыточна. 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

01.10.2020 в 18:28, x893 сказал:

Так это можно и без всякой ОС сделать. Проверяйте время во время долгих операций и выходите если время закончилось. При следующем входе - продолжайте.

Это называется кооперативная многозадачность а не вытесняющая. Вообще топикстартеру выгоднее выбросить из FreeRtos то что ему не нравиться, чем добавлять сущности, в которых плохо сведущ. Хотя, совет правильный, начинать нужно с кооперативной логики, она проще. Кстати, в вытесняющей ОС полезно писать задачи в стиле ОС кооперативной, так всем легче и, отпадет привычка часто блокировать диспетчер, а напротив, ему помочь.

Изменено пользователем germinik

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

On 10/1/2020 at 8:13 PM, Картошка said:

Кто-нибудь реализовывал механизм вытеснения задачи по времени выполнения, самостоятельно, без подключения RTOS-ов и др. каше-топорных вещей.

Автор, перечитал весь тред. Вот вам мой ответ прямой и без наездов: вы пишите ерунду. Хотя бы в терминологии и "топорных с кашей" выражениях. И не вы первый. На этом форуме тысячи раз поднимали темы подобные вашей. Для тех, кто не достиг нужного уровня профессионализма ОСРВ всегда будет оставаться чёрным ящиком, жрущим мегабайты памяти и тысячи циклов процессора. Возьмите лёгкую ОСРВ, например, scmRTOS. Её создавали в начале 2000-х для микроконтроллеров с 1 кб ОЗУ и тактовыми частотами единицы МГц. Если же вы хотите написать свою ОС, то берите книгу Джозефа Ю по кортекасам, там есть целая глава, как написать переключатель контекста и создать простейшие задачи. Хотя, я не понимаю, чем вам переключатель из любой системы не понравился. Та же FreeRTOS имеет довольно короткий код для переключения контекста. В scmRTOS он ещё меньше. В принципе, понимая суть, вы его и сами можете написать за пару вечеров. Но при условии, что понимаете работу своей архитектуры и знаете ассемблер. И пожалуйста, не заваливайте сообщения эмоциями в стиле "5000 фреймов can" или "выкинули шедулер чибиос для ускорения системы". Здесь же профессионалы обитают. Вы нас на "слабо" не возьмёте)))

12 hours ago, germinik said:

Вообще топикстартеру выгоднее выбросить из FreeRtos то что ему не нравиться

Для этого топикстартеру нужно уметь программировать и знать, что выбрасывать. А с такими знаниями он бы мог написать своё, или понять, что готовое написано не с избыточностью, чтобы затормозить его процессор, а потому что это минимальный джентельменский набор. Вот такая-то вот логика.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

03.10.2020 в 13:13, haker_fox сказал:

 Здесь же профессионалы обитают. Вы нас на "слабо" не возьмёте)))

 

Это то да. Но разжечь огонь как раз с Вами сложнее, то костыли не дрова, то кремний не спички :).  

Всем спасибо.   

Особое спасибо AVI-crak.  

Искал готовое решение, чтоб не изобретать велосипед. В принципе все понятно.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

2 minutes ago, Картошка said:

Но разжечь огонь как раз с Вами сложнее

Для этого тут есть раздел "для новичков", там как раз обитают самые безумные и нелепые идеи. Это нормально. Среди них проскакивают путные.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

02.10.2020 в 18:09, Сергей Борщ сказал:

А вы 5000 на "тыс" умножить сможете в уме или калькулятор нужен? :dash1:

Тут тему просто переключили на мускалатуру. Не в этом вопрос. Видели где-нибудь отдельные проект по примеру вытеснения задачи по времени ? Может готовое уже кто-то писал, я поэтому и создал топик, чтоб не изобретать велосипед, вдруг уже готовое где-то есть.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

1 час назад, Картошка сказал:

Тут тему просто переключили на мускалатуру. Не в этом вопрос.

Нет, это вы написали очередную глупость и вам на нее указали, но вы не поняли.

1 час назад, Картошка сказал:

Видели где-нибудь отдельные проект по примеру вытеснения задачи по времени ?

в scmRTOS есть сервис "Round-robbin". Возможно это именно то, что вы ищите. 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

3 hours ago, Картошка said:

Искал готовое решение, чтоб не изобретать велосипед.

Странный вы. То боитесь "чёрного ящика", то ищете готовое...

3 hours ago, Картошка said:

Но разжечь огонь как раз с Вами сложнее, то костыли не дрова, то кремний не спички :).  

Тут ответ банально прост: у дилетантов и начинающих всегда всё просто (извините за тавтологию). И только с опытом начинаешь понимать, что костыли, дрова, кремний и спички - совершенно разные предметы, и не всегда взаимозамеяемы.

2 hours ago, Картошка said:

Видели где-нибудь отдельные проект по примеру вытеснения задачи по времени ?

Во FreeRTOS есть round-robin планировщик. На scmRTOS вам уже указали.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

3 hours ago, Картошка said:

Тут тему просто переключили на мускалатуру. Не в этом вопрос. Видели где-нибудь отдельные проект по примеру вытеснения задачи по времени ? Может готовое уже кто-то писал, я поэтому и создал топик, чтоб не изобретать велосипед, вдруг уже готовое где-то есть.

Но какую практическую пользу вы хотите получить от вытеснения по времени?
В RTOS это сделать в принципе не трудно. Там есть сервис таймера. Вы запускаете ту задачу которую хотите вытеснить и запускаете таймер. 
Таймер по окончании счета  вызывает функцию которая либо остановит вашу задачу явно, либо понизит ее приоритет до минимум и она будет остановлена неявно. 
Но что это даст? Вы просто неэффективно используете  вычислительные ресурсы процессора.
А если речь о том чтобы экономить энергию, то тоже не видно смысла. 
Если подозрение на предмет зависания  задачи, то может быть. Но тогда говорить надо не о вытеснении, а о сепервайзинге задач. 
Но супервайзин делают над задачами строго профилированными, а над недетерминированным файловым движком такие манипуляции только головняка добавят. 
Поменяете FAT на линейную FS и все станет проще. 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Переключение задач таймером это не вариант для контролера если нужна совсем микро операционка только если флаг приоритета со  счетчиком или кейсами

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

1 hour ago, Aldec said:

нужна совсем микро операционка

Можно уточнить, что вы вкладываете в понятие "совсем микро операционка"? Я, возможно, чего-то недопонимаю. Но к чему такая радикальная экономия? Мы росли на восьмибитках с 1 кб ОЗУ и 16 кБ флэша, где прекрасно крутилась уже много раз названная здесь ОС с вытесняющей многозадачностью. И при этом было место для двух - четырёх процессов. Сейчас 32-битные Cortex-M0 даже с учётом скачка доллара доступны по вполне разумной цене. На чём экономить? Зачем? Если я ошибаюсь, то буду рад услышать квалифицированный ответ, а не абстрактные рассуждения о желании сэкономить 2 байта в планировщике, но потерять это же время или большее, не учтя занятие шины каким-нибудь DMA-контроллером. Просвятите, пожаааалууйста)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

3 minutes ago, haker_fox said:

На чём экономить? Зачем?

Если есть потребность в извращениях, то оправдание всегда найдется ;)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Just now, Forger said:

Если есть потребность в извращениях, то оправдание всегда найдется ;)

У меня есть подозрения, что такие вот рассуждения о быстрых планировщиках и суперэкономчных ОС рождаются от полного отсутствия опыта работы с таковыми.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...