реклама на сайте
подробности

 
 
> imx233 три функции main
sergey sva
сообщение Dec 12 2013, 12:42
Сообщение #1


Гуру
******

Группа: Свой
Сообщений: 2 546
Регистрация: 23-05-07
Из: Самарская область Сызрань
Пользователь №: 27 923



Подскажите как реализовать такое, может примеры есть.
Нужны три функции main0 main1 main2 Выполняться должны по очереди например 1000 тактов процессора main0, следующие 1000 main1.. выполняться должны не до конца, а останавливаться в любой точке как счетчик отсчитает 1000 тактов,с сохранением всех данных, с последующем их восстановлением. Думаю это нужно делать в startup на asm. Все это нужно сделать на платке с процессором imx233.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
sergey sva
сообщение Dec 12 2013, 14:17
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 2 546
Регистрация: 23-05-07
Из: Самарская область Сызрань
Пользователь №: 27 923



Не приходилось ничего подобного делать. Такой алгоритм не будет работать?, крутиться цикл в нем идет счет, после отсчета 1000 циклов, сохранить состояние всех регистров счетчик команд ... после записать в счетчик команд адрес следующей функции и востановить все регистры .... отсчитать еще 1000 тактов.?
Go to the top of the page
 
+Quote Post
AlexandrY
сообщение Dec 12 2013, 15:07
Сообщение #3


Ally
******

Группа: Модераторы
Сообщений: 6 232
Регистрация: 19-01-05
Пользователь №: 2 050



Цитата(sergey sva @ Dec 12 2013, 16:17) *
Не приходилось ничего подобного делать. Такой алгоритм не будет работать?, крутиться цикл в нем идет счет, после отсчета 1000 циклов, сохранить состояние всех регистров счетчик команд ... после записать в счетчик команд адрес следующей функции и востановить все регистры .... отсчитать еще 1000 тактов.?


Это обычные прерывания.
Средний джиттер в пару десятков тактов будет (иногда больше), но реализация примитивнейшая.
Запускаете 3-и compare канала в таймерах. Каждый вызывает свое прерывание в которых выполняются задачи, каждая со своим стеком.
Возврата из прерывание не нужно. Просто каждое следующее прерывание восстанавливает свой стек и разрешает прерывание для следующей задачи.
И так они и прерывают друг друга бесконечно.
Но надо знать какие регистры требуют сохранения состояния, а какие нет. Если задачи написаны на C-и.
Поэтому лучше действительно посмотреть, как делается переключение контекста в RTOS uCOS-II
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 3rd August 2025 - 15:02
Рейтинг@Mail.ru


Страница сгенерированна за 0.01414 секунд с 7
ELECTRONIX ©2004-2016