Что касается MSC, я об этом думал и изначально планировал, однако решил отложить реализацию на следующий этап работы над проектом, после очередной чистки и утрамбовывания кода. И ещё потому, что сейчас мне нужно переключиться на задачи совсем другого типа, а уже потом влезать в особенности работы BOT.
Именно ради утрамбовывания кода дескрипторы были записаны фактически как строковая константа - функции расчёта длины их частей и прочие необходимые действия в любом случае занимали бы больше ПЗУ. А вот в случае строковых дескрипторов генерация и расчёт длины оказались экономнее. Понимаю, что код, который оптимизируется по размеру, (и по размеру/быстродействию) может выглядеть не очень с точки зрения красоты и однозначно требует пояснений в комментариях. И конечно, если есть лишняя пара сотен свободных байт, стоит написать функции расчёта тех или иных констант.
От заголовочника ST у меня сильно подгорело именно потому, что там слишком большое количество ссылок из одних макросов в другие. В этом было очень неудобно разбираться, поскольку между Reference Manual и тем, что написано в коде был ряд промежуточных абстракций. Кроме того при компиляции оказалось, что прямые "магические циферки" занимают в итоге меньше места, чем использование любых других конструкций (за исключением, разве что, прямого вынесения этих циферок в макросы).
"Chapter 9" изучу, спасибо. Но когда я разбирался в коде этот документ мне не попадался, и приходилось копаться в том коде, который хотя как-то работал, восстанавливая его логику.
Насколько я помню есть перевод USB made simple, там как раз хорошее описание того, как составлять дескрипторы.
спасибо, поизучаю.
Спасибо за ссылки. Сохранил вашу статью к себе.
Что касается MSC, я об этом думал и изначально планировал, однако решил отложить реализацию на следующий этап работы над проектом, после очередной чистки и утрамбовывания кода. И ещё потому, что сейчас мне нужно переключиться на задачи совсем другого типа, а уже потом влезать в особенности работы BOT.
Именно ради утрамбовывания кода дескрипторы были записаны фактически как строковая константа - функции расчёта длины их частей и прочие необходимые действия в любом случае занимали бы больше ПЗУ. А вот в случае строковых дескрипторов генерация и расчёт длины оказались экономнее. Понимаю, что код, который оптимизируется по размеру, (и по размеру/быстродействию) может выглядеть не очень с точки зрения красоты и однозначно требует пояснений в комментариях. И конечно, если есть лишняя пара сотен свободных байт, стоит написать функции расчёта тех или иных констант.
От заголовочника ST у меня сильно подгорело именно потому, что там слишком большое количество ссылок из одних макросов в другие. В этом было очень неудобно разбираться, поскольку между Reference Manual и тем, что написано в коде был ряд промежуточных абстракций. Кроме того при компиляции оказалось, что прямые "магические циферки" занимают в итоге меньше места, чем использование любых других конструкций (за исключением, разве что, прямого вынесения этих циферок в макросы).
"Chapter 9" изучу, спасибо. Но когда я разбирался в коде этот документ мне не попадался, и приходилось копаться в том коде, который хотя как-то работал, восстанавливая его логику.
Насколько я помню есть перевод USB made simple, там как раз хорошее описание того, как составлять дескрипторы.