- Стартап делает гораздо больше вещей. Вообще отчасти это задача
операционной системы: как-то разместить в памяти аргументы
программы, переменные окружения, и передать указатели на них. И
заодно сделать доступной в адресном пространстве программу
(загрузить её, библиотеки, релоцировать...), стек, настроить
регистры... C-стартап должен подготовить "рантайм" к работе и
инициализировать C-библиотеку.... fk0(2374 знаков, 11.09.2020 18:42, ссылка, ссылка)
- Обработку прерывания от FSMC и таймаут на то что PLL (не)заведётся
сделал? Я делал... Иногда срабатывало. Плохая пайка, плохой кварц и
т.п. Считал фатальной ошибкой. При фатальной ошибке МК пищит и
мигает диодом нужное число раз, означающее код ошибки, несколько
раз в цикле, потом перезапуск. Фатальные ошибки -- это когда
работать уж совсем никак (сбой генератора, нет внешней памяти,
ошибка CRC памяти программ). Другие ошибки, с которыми запуск и
выполнение хотя бы части fk0(2703 знаков, 10.09.2020 22:02, ссылка, ссылка)
- Из функции _start (в C-стартапе, до main) пересчитывается CRC32 прошивки, например, и сравнивается с значениями записанными по специальным адресам (которые при чтении всегда принимаются нулевыми, например). Или контрольная сумма (тут можно fk0(857 знаков, 12.07.2017 00:22)
- Я для ARM7 писал на асме, и обработчик прерываний тоже. А он там, в отличии от жалких кортексов, достаточно замороченный. fk0(5638 знаков, 03.05.2016 21:54)
- Вначале пишешь (вообще по LR, дальше исключительно для одептов оссемблира): fk0(3137 знаков, 26.01.2012 00:20)