Обновить

Структуры данных на практике. Глава 17: Структуры данных загрузчиков

Время на прочтение11 мин
Охват и читатели9.4K
Всего голосов 11: ↑11 и ↓0+17
Комментарии4

Комментарии 4

45% времени загрузки тратилось на malloc/free

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

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

Ну а так в учетом возможностей Claude я бы сам UBoot отправил в утиль с его деревьями, динамической памятью и HAL-ами. Claude не нуждается в абстракциях и не дрожит за переносимость. Может написать большинство драйверов с нуля с полностью статическим выделением памяти.

У автора очень однобокое представление: у варианта с динамической памятью перечислены только недостатки, у статического - только преимущества.

Та же захардкоженная конфигурация неизвестно как себя поведет при переносе прошивки на другое железо.

С учетом жестких требований по времени загрузки, можно с большой долей вероятности предположить, что вся периферия котроллера фиксированная и значит избавление от любой динамики (не только конфигурации) во время выполнения - первый кандидат на оптимизацию.

Пример же как справляются с разными устройствами с одной стороны и с вкомпиленой конфигурацией сдругой - это тот же Marlin в качестве прошивки 3d-принтеров, там куча #define. А у автора вряд ли большой зоопарк устройств с такими требованиями.

Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации