Jump to content
    

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

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

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

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

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

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

 

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

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

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

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

Share this post


Link to post
Share on other sites

4-Debug уже там же.

Share this post


Link to post
Share on other sites

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

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

Share this post


Link to post
Share on other sites

Как-то так.

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.

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

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

 

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

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

 

ТАК???

 

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

Share this post


Link to post
Share on other sites

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

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

 

ТАК???

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

Share this post


Link to post
Share on other sites

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

 

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

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

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

 

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

Share this post


Link to post
Share on other sites

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

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

Share this post


Link to post
Share on other sites

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

Там и там Cortex-M0.

 

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

 

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

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

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

 

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

 

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

 

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

 

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

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...