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

at91sam7 реализация многозадачности

нужно реализовать многозадачность с использованием приоритетов. если что-то неправильно - поправьте. насколько я понимаю, нужно использовать Periodic Interval Timer. менеджер потоков хранит в субу есть список потоков. для каждого потока хранится информация: контекст (значения регистров, среди которых указатель стека, флаговый регистр, указатель текущей команды и пр.), преоритет. при срабатывании прерывания от Periodic Interval Timer менеджер сохраняет контекст прерванного потока, берёт следующший поток в списке, устанавливает для него Periodic Interval Value, восстанавливает контекст, передаёт управление (безусловным переходом?). затем снова ловит прерывание и т.д.

не совсем понятно как сохранять/восстанавливать контекст - тут скорее всего придётся вставлять ассемблерный код. и не понятно как завершать обработку прерывания...

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


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

А стоит ли изобретать велосипед? Может, для начала ознакомиться с портами для ARM многочисленных ОСей (FreeRTOS, scmRTOS, uCOS и т.п.)?

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


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

А стоит ли изобретать велосипед? Может, для начала ознакомиться с портами для ARM многочисленных ОСей (FreeRTOS, scmRTOS, uCOS и т.п.)?

да я вообще-то и не изобретаю. теория интересна.

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


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

+1.

IMHO cамый эффективный способ изучения - по уже готовой реализации.

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


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

+1.

IMHO cамый эффективный способ изучения - по уже готовой реализации.

далеко не самый.

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


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

Просмотр всей имеющейся информации иногда даёт пользу не только в идеях, но например в использовании устоявшейся в этой области терминологии.

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

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


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

далеко не самый.

Тогда изучайте архитектуру, чтобы не было вопросов и сомнений типа:

...

безусловным переходом?

...

не совсем понятно как сохранять/восстанавливать контекст - тут скорее всего придётся вставлять ассемблерный код. и не понятно как завершать обработку прерывания...

И пишите свое. Тоже вариант.

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


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

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

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

Гость
К сожалению, ваш контент содержит запрещённые слова. Пожалуйста, отредактируйте контент, чтобы удалить выделенные ниже слова.
Ответить в этой теме...

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

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

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

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

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

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