ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Суббота
20 апреля
170961 Топик полностью
Evgeny_CD, Архитектор (01.11.2009 21:08, просмотров: 272) ответил Evgeny_CD на Кажись, начал я догонять, зечем таким контроллерам 1.5Мбайт+ FLASH под код. Надежность тут не совсем причина. RT - вот, похоже, настоящая причина.
Вспоминая про мои летние идеи на тему продвинутых методов построение OS ->, вытанцовывается следующая картина. http://caxapa.ru/159013.html
Все задачи такого супер-контроллера можно поделить на 2 кучки: hard RT и soft RT. (понятия отсносительны). Первые должны быть обслужены всегда и везде, вторые могут несколько "плавать" по времени. Хронометрируем все линейные куски программы, стоим большую таблицу в памяти (тут-то большой FLASH и нужен) График прихода запросов со стороны hard RT более-менее понятен. И допустимые временные рамки - тоже. Случилось hard RT прерывание. Вошли в него. Что-то там забуферизировали или выдали из буфера. Оценили, сколько у нас времени до необходимости вызвать высокоуровневый обработчик hard RT. Вернулись с коду основной программы. Сама программа разбита на кусочки с детерминированным временем выполнения. По завершению кусочка проводим анализ - что нам делать: переходить на следующий, или вызывать какую-то более приоритетную шнягу. Сама программа должна быть построена с минимальным использованием стека. Т.е. переменные в функции по возможности передавать как ссылку на структуру, которая специфична для данной задачи и хранится в статике. Тут очень хорошо будут работать иеология оверлея. Т.е. в точке анализа мы приняли решение, что скоро нам переключаться, и дали команду DMA начать процедуру закачки новой страницы. Пока мы доделаем текущую задачу - страница как раз и качнется. Потом мы уходим на новую задачу, а DMA "откачивает" страницу предыдущей задачи в внешнюю память. Но чтобы это эффективно работало, надо SRAM иметь двухпортовый, хотя бы частично, как AVR32 старшие, CF флешовые современные. Если "внешний мир" детерминирован в плане запросов и нагрузки, IMHO, можно ибежать внепланового вызова задач. Интересно, это реализуемо на практике?