ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Среда
26 марта
1504037
Adept (06.03.2025 21:21 - 21:36, просмотров: 3211)
решил накропать сегодня более-менее гибкое ядро многозадачной среды (а то старое, где многое "прибито гвоздями" поднадоело уже :)) Какие неочевидные и полезные идеи есть у сообщества :) 

как делать знаю, задействую под системный таймер любой 8-битный таймер по "compare mach" и "overflow", реализуя на нём и системный таймер с двумя кругами приоритетов и RTC, как у меня уже было сделано

системный таймер с тиком 1mS (этого, в общем для моих задач достаточно. там будет планировщик и быстрые, критичные ко временени исполнения системные драйвера) во второй линии (10mS) - обычно второй уровень драйверов периферии и управление RTC. Возможно сделаю опцию типа "fast_timer" под системный тик 10-100uS (это м.б. востребовано для некоторых быстрых процев, даже может сделаю эту опцию гибкой, включаемой в среде ОС по необходимости.


хочу сделать систему с гибкой и кооперативной, и вытесняющей многозадачностью и динамическим управлением памятью)

прошлое ядро было кооперативным с механизмом приостановки и досрочного выхода, и продолжения выполнения задачи, если в том была необходимость.

максимум задач было 16 (этого было более, чем датстаочно. За десяток задач не выходил ни в одном проекте :)) Но новую хочу сделать до 256 и менеджер памяти, чтобы гибко конфигурировать выделяемое ОЗУ при запуске/прибивании задачи. /чёт-то вспомнилось, когда после института я для 90S8515 сделал первую версию планировщика и многозадачную среду для решения одной задачки в рамках предоставленного ТЗ (надо было организовать десяток программных UARTов на 1200 бод, то тогдашний начальник устроил мне выволочку с претензиями, де , "нефиг тут на микроконтроллерах "винду" устраивать", несмотря на то, что программа прекрасно работала/ :)))


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


естественно ассемблер :) оптимизация расхода памяти и оптимизация по скорости :)


конструктивная критика и пожелания в реализации фич - принимаются :)


P.S. в последующем может сделаю и язык системных скриптов, для загрузки и исполнения программ (естественно, как запускаемых задач с конфигурируемыми параметрами (приоритет и прочее) ) из внешней памяти в режиме интерпретации). прикручу какую-нить файловую систему (может получится и FAT16, но не уверен. Под неё памяти надо много, эт если только на старших процах,


В общем чуйствую прилив вдохновения :)) надоть что-то сделать полезное, шоб ещё лет на 20 хватило, а то старое самописное ядро 20 летней давности, порядком обросло костылями, да и под каждый проц приходится его корректировать. Здесь же хочу сделать под всю линейку АВР (их у меня немного, с десяток, но все - от тайни до иксмеги :)) пользуясь директивами условной компиляции, шоб задефайнил что надо и получил нужную ревизию ядра и библиотек (с библиотеками посложнее будет, хотя процедур не так много, но нафигачено под разные семейства МК (всё АВР ессно):))

...делать нужно так, как нужно. А как ненужно - делать не нужно (С) Винни-Пух :)