В какой-то момент работы над прошивкой сопроцессора.. я поймал себя на мысли, что в
LinuxCNC кроме
stepgen есть и другие
realtime компоненты! И этим компонентам тоже бы не помешал помощник в промежутках работы
BASE_THREAD.
Вот сижу размышляю над этой идеей. Это, канеш, хорошо, что я делаю новый, более быстрый, компонент
stepgen в связке с сопроцессором. Но это явно смахивает на изобретение велосипеда заново. А что будет, если понадобится ускорить другой компонент, например
encoder? Создавать ещё один драйвер? Что-то здесь не так.
Надо смотреть шире. В идеале готовые компоненты
LinuxCNC не надо менять и изобретать их заново с сопроцессорными вставками. Надо придумать нечто другое. Причём, это нечто за счёт сопроцессора должно помогать
realtime компонентам работать в те моменты, пока их код не выполняется основным процессором. Возможно, надо сделать единый компонент, который будет играть роль обёртки для текущих компонентов
LinuxCNC. В идеале, обёртка не должна вмешиваться в работу другого компонента. Она должна лишь брать текущие параметры и сигналы компонента, делать что-то на основе этих данных, и передавать уже измененные значения в следующий компонент. Завтра попробую сформулировать логику работы такой обёртки на примере текущего
stepgen.
Буду рад советам.