История изменений
Исправление qbe, (текущая версия) :
Я в своё время писал небольшую rtos, чтобы разобраться с потрохами армовского ядра, ещё на arm7tdmi, но потом, глянув на переключение контекста, понял, что изобрёл FreeRTOS :)
Реализации по быстродействию получились почти равными, но FreeRTOS оказалась богаче на фичи, поэтому свой велосипед я забросил.
О потраченном времени не жалею, т.к. в результате достаточно хорошо изучил внутренности FreeRTOS.
p.s. «ассемблер» выше при том, что ты, вместо использования библиотечных функций, постоянно строишь велосипед, пытаясь быть умнее компилятора (по твоим же словам, грепаешь код в поисках обращения к регистру, и проверяешь, было или не было уже к нему обращение).
Лучше потратить своё время на действительно критичное место в программе, вместо оптимизации того, что будет выполняться всего один раз при запуске программы. Жизнь - она короткая, и надо правильно расставлять приоритеты.
p.p.s. заворачивание в функцию даже, казалось бы, примитивной записи в порт, может впоследствии очень упростить жизнь. К примеру, при переезде на совершенно другой контроллер. Я однажды подобное проходил - перенёс проект приличного размера (бинарник около 100К) с LPC1768 на STM32F407 за пару дней. В проекте были и USB, и несколько DMA, и реалтайм-DSP. (Без SPL, обкладываемой тобой г-ном и фаллоимитаторами, я бы застрял тогда на пару недель).
Исходная версия qbe, :
Я в своё время писал небольшую rtos, чтобы разобраться с потрохами армовского ядра, ещё на arm7tdmi, но потом, глянув на переключение контекста, понял, что изобрёл FreeRTOS :)
Реализации по быстродействию получились почти равными, но FreeRTOS оказалась богаче на фичи, поэтому свой велосипед я забросил.
О потраченном времени не жалею, т.к. в результате достаточно хорошо изучил внутренности FreeRTOS.
p.s. «ассемблер» выше при том, что ты, вместо использования библиотечных функций, постоянно строишь велосипед, пытаясь быть умнее компилятора (по твоим же словам, грепаешь код в поисках обращения к регистру, и проверяешь, было или не было уже к нему обращение).
Лучше потратить своё время на действительно критичное место в программе, вместо оптимизации того, что будет выполняться всего один раз при запуске программы. Жизнь - она короткая, и надо правильно расставлять приоритеты.