Недавно Антоха предложил небольшую оптимизацию порта для Cortex-M3. Но
у этой оптимизации есть ограничение. В коде присутствует относительный
переход (+-1MB) на функцию os_context_switch_hook.
В силу того, что объем памяти в новых микроконтроллерах растет быстро,
есть опасность, что в будущем, оптимизированный код порта может
"сломаться". Поэтому было решено дать юзеру возможность выбрать
вариант порта - оптимизированный (но с ограничением) или универсальный
(но более медленный).
Для этого определяется макрос:
// PendSVC_ISR optimization:
// 0 - use near (+- 1Mb) call for os_context_switch_hook (the
fastest)
// 1 - use far call (slower)
//
#define scmRTOS_CONTEXT_SWITCH_HOOK_IS_FAR 0
и далее условная компиляция.
Но у нас возникли разногласия в каком месте разместить
конфигурационный макрос.
Антоха считает, что его надо разместить в scmRTOS_CONFIG.h. Я считаю,
что его надо разместить в в scmRTOS_TARGET_CFG.h.
Т.к. нас двое и мнения разделились, то прошу членов группы высказать
свое мнение по данной ситуации.
P.S.
Небольшой фрагмент переписки.
Андрей> Нормально, но почему в scmRTOS_CONFIG.h, а не в
scmRTOS_TARGET_CFG.h
Антоха>Потому что это конфигурация проекта, а не таргета. Мне
показалось, что там будет правильнее.
Андрей>:) А мне кажется с точностью до наоборот. Это конфигурация
порта, а не проекта и не ядра scmRTOS.
Антоха>Ну вот смотри, что написано в мануале:
------
scmRTOS_CONFIG.h содержит большинство конфигурационных макросов,
задающих такие параметры, как количество процессов в программе, способ
передачи управления, включение функции системного времени, разрешение
использования пользовательских хуков, порядок нумерации значений
приоритетов и т. д.
В scmRTOS_TARGET_CFG.h размещён код управления ресурсами целевого
процессора, выбранными для реализации системных функций - всё тот же
системный таймер, прерывание переключения контекстов.
-------
То есть, в scmRTOS_CONFIG.h - конфигурационные макросы, а в
scmRTOS_TARGET_CFG.h - код. Имхо, scmRTOS_CONTEXT_SWITCH_HOOK_IS_FAR -
это как раз и есть конфигурационный макрос, разве нет? :)
Андрей>Но scmRTOS_TARGET_CFG.h имеет суффикс CFG, т.е. некоторое
конфигурирование порта вполне допускается. Например, там есть макросы
для конфигурации периода системного таймера.
> Вроде как сейчас особой активности не наблюдается, так что должно пройти
> более-менее безболезненно.
Согласен, сейчас как раз "не на переправе".
--
wbr,
ReAl
> Видимо, они там как-то трансляцию делают на ходу. Есть мнение (Сергей Пинигин),
> что если такая конвертация имеет место, то долго она жить не будет.
Т.е., "жевательно" в ближайшее время relocate сделать.
--
wbr,
ReAl
3. У кого ещё остались не переключёнными копии - срочно переключайте:)
Я просто заново сделал checkout.