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

scmRtos для медных чайников

Прошу прощения за задержку. 23-го первый пример был доведён до удобоваримого состояния.

Но я понял, что если я вброшу архив сюда, то в репозитории он появится нескоро ввиду отсутствия хоть какого-то «гвоздика».

AHTOXA подвигал каталоги и я забросил пример на его законное место pre-v400/Samples/CortexM3/GCC/LPC17XX/

4-Debug добавлю на днях. Он рабочий, просто тоже вычистить немного нужно.

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

 

p.s. Просто пример 1-EventFlag мне интересен как источник данных для сравнения

Вот, к примеру, в пересчётне на ту же тактовую у STM8 общее время переключения процессов на «дулі відсотка» меньше, чем у AVR, но при этом собственно время переключателя контекстов ощутимо меньше, а поиск готового процесса — немного больше. Просто любопытно.

А 4-Debug хорош как база для начала отладки реальной работы.

Потому с них и начал.

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


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

Товарищи гуру и приближенные к ним!

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

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


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

Как-то так.

void SleepUntil(tick_count_t tick)
{
    tick_count_t current_tick = OS::get_tick_count();
    // Если уже больше, то спать-то и некогда
    if (current_tick < tick)
        sleep(tick - current_tick);
}
    
template<> void TProc1::exec()
{
    tick_count_t next_tick;

    next_tick = OS::get_tick_count();
    
    for(;;) {
        do_busy_work();
        next_tick += task_period;
        SleepUntil(next_tick);
    }
}

 

Обработка ситуаций, когда спать уже некогда (ждать следующей метки или не ждать вообще) — по требованиям к задаче.

Также надо учесть, что tick_count_t и timeout_t имеют (могут иметь) разные размеры, тогда надо бы брать разность и «досыпать» порциями, влазящими в timeout_t.

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


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

Спасибо, когда пояснили, все стало так очевидно! Даже как-то стыдно за вопрос.

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


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

доброго времени днутра или ночера...

 

есть комплект stm32f0diskovery - требуется откомпилить и запустить какой нибудь из примеров под scmRTOS ..

как я понял примеров пока под cortex-m0 не существует... и ос тоже непонятно работает или нет

 

ТАК???

 

помогите пжста чайнику...

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


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

есть комплект stm32f0diskovery - требуется откомпилить и запустить какой нибудь из примеров под scmRTOS ..

как я понял примеров пока под cortex-m0 не существует... и ос тоже непонятно работает или нет

 

ТАК???

Примеров нет, но порт есть: порт для Cortex-M0

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


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

Примеров нет, но порт есть: порт для Cortex-M0

 

да да ... я порт нашел...

не могу понять как переделать пример для себя...

чтоб перекомпилить и чтоб заработало...

 

нет некоторых файлов типа стартап.си... и прочих

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


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

нет некоторых файлов типа стартап.си... и прочих

стартап.си - обычный, только таблица векторов должна быть соответствующей.

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


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

нет некоторых файлов типа стартап.си... и прочих

Update: вспомнил ещё ссылку - там стартап и тп

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


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

Большая разница?

Там и там Cortex-M0.

 

мэй би ес, мэй би ноу....

 

описание регистров и системных переменных совершенно разное ...

программист как писатель...

захотел назвал так переменную захотел по другому...

 

может быть различное количество переферии, разные векторы прерываний и прочее...

 

проект переделал из stm32f2xx отключил кой чего и кой где...

 

отключил макросы для работы с пинами (pin.h) с шаблонами я пока не очень то разбимрался и не совсем понимаю чего там понаворочали...

 

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

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


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

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

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

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

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

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

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

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

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

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