-
- маленький бинарь на старт (принимает только решение куда джампать и джампает), бинарь на основное апп, загрузчик если отдельной сущностью то третий бинарь. соответственно три апп, и три линкер скрипта. ну и да, в первую очередь зависит от архитектуры. "Окошки" во флеше по границам минимального стираемого сектора это ниче страшного и никуда от этого не деться. - RED_DRAGON(28.05.2024 10:34)
- Загрузчик не помещается в ту же страницу что и таблица векторов? Ну оставите вы только "ресет и вершину стека" в быстрой странице и что? Будет душе греть почти пустая быстрая страница? О каком чипе хоть речь идёт? Для понимания масштаба проблем. - VladislavS.(28.05.2024 08:51)
- Кто на ком стоял? Загрузчик куда загружает? Или не загружает? Какие сектора? Что стирается, что не стирается? SciFi(1 знак., 28.05.2024 08:27, картинка)
- Лучше таблицу векторов загрузчика оставить на 0x08000000, а таблицу
векторов основного приложения перенести дальше, но в пределах
быстрой флеши. - Ale3000(28.05.2024 06:35)
- Размещать код загрузчика в той же странице что и основная программа
так себе идея в плане надёжности при обновлении. Таблицу векторов
приложения можно вообще в RAM утащить. - VladislavS.(28.05.2024 07:16)
- Конечно, в другую страницу. Я не говорил, что в ту же страницу. - Ale3000(28.05.2024 08:16)
- А первая быстрая страница останется пустая и будет автору душу
греть :) - VladislavS.(28.05.2024 08:52)
- Есть есть страница в этих рассуждениях? У флеши страница 2к.
Быстрой же памяти - 256к... POV(120 знак., 28.05.2024 10:07)
- Нужно загрузчик разделить на быструю и медленную часть. И
приложение разделить на медленную и быструю часть. В первые 256КБ
пихать быстрые части загрузчика и приложения. - Ale3000(28.05.2024 10:13)
- Что такого важного делает загрузчик, что ему быстрая часть нужна? - VladislavS.(28.05.2024 11:01)
- В любом случае первые 8 байт загрузчичка лежат в быстрой флеши. Так как страница 2КБ, то как минимум первые 2КБ загрузчика в быстрой флеши. А где 2КБ, там ещё несколько КБ можно выделить. Все прерывания лучше бы сгрузить в быструю флеш. Также загрузчик должен расшифровывать прошивку, считать контрольную сумму. Разные люди применяют разные алгоритмы, возможно и очень ресурсозатратные. Эту часть загрузчика тоже лучше в быструю флеш засунуть. - Ale3000(29.05.2024 03:36)
- быстрые части загрузчика скорее всего вообще могут лечь в рам. - RED_DRAGON(28.05.2024 10:38)
- Что такого важного делает загрузчик, что ему быстрая часть нужна? - VladislavS.(28.05.2024 11:01)
- Нужно загрузчик разделить на быструю и медленную часть. И
приложение разделить на медленную и быструю часть. В первые 256КБ
пихать быстрые части загрузчика и приложения. - Ale3000(28.05.2024 10:13)
- Не пустая. Там часть загрузчика. И это скорее всего будет не одна страница, а несколько. - Ale3000(28.05.2024 10:02)
- Есть есть страница в этих рассуждениях? У флеши страница 2к.
Быстрой же памяти - 256к... POV(120 знак., 28.05.2024 10:07)
- А первая быстрая страница останется пустая и будет автору душу
греть :) - VladislavS.(28.05.2024 08:52)
- Конечно, в другую страницу. Я не говорил, что в ту же страницу. - Ale3000(28.05.2024 08:16)
- Размещать код загрузчика в той же странице что и основная программа
так себе идея в плане надёжности при обновлении. Таблицу векторов
приложения можно вообще в RAM утащить. - VladislavS.(28.05.2024 07:16)
- Для начала в линкерскрипт заглянуть. Затем поправить его под свои нужды. - VladislavS.(28.05.2024 05:59)
- Вероятно сначала нужно стартап порезать на секции, а уже потом эти
секции размещать линкером. - =AlexD=(27.05.2024 16:01)
- Сначала указать тип компилятора. - BlackMorda(27.05.2024 21:27)
- Вообще пофиг. В любом тулчейне в линкерскрипте таблица векторов
прерываний прибита туда где должна быть, а остальной код и данные
куда угодно селятся. - VladislavS.(28.05.2024 06:11)
- при старте да. но, например в CortexM0 тупо не положен VTOR, в то
время как CortexM0+ уже имеет его и есть возможность делать столько
имаджей сколько влезет и после быстрого старта можно джампнуть. еще
нужно разрешить компилеру делать лонгжампы (зависит от архитектуры)
т.к. компилер может запросто впихнуть серию коротких жампов. RED_DRAGON(157 знак., 28.05.2024 10:22)
- На Cortex-M0 обычно можно сделать remap и RAM на место таблицы
векторов подставить. А в RAM руками что хочешь пиши. - VladislavS.(28.05.2024 12:05)
- Не во всех. - Гyдвин(28.05.2024 12:06)
- Ну ремап флеша-то есть? ;-) - LightElf(28.05.2024 15:03)
- Не во всех. - Гyдвин(28.05.2024 12:06)
- На Cortex-M0 обычно можно сделать remap и RAM на место таблицы
векторов подставить. А в RAM руками что хочешь пиши. - VladislavS.(28.05.2024 12:05)
- при старте да. но, например в CortexM0 тупо не положен VTOR, в то
время как CortexM0+ уже имеет его и есть возможность делать столько
имаджей сколько влезет и после быстрого старта можно джампнуть. еще
нужно разрешить компилеру делать лонгжампы (зависит от архитектуры)
т.к. компилер может запросто впихнуть серию коротких жампов. RED_DRAGON(157 знак., 28.05.2024 10:22)
- Вообще пофиг. В любом тулчейне в линкерскрипте таблица векторов
прерываний прибита туда где должна быть, а остальной код и данные
куда угодно селятся. - VladislavS.(28.05.2024 06:11)
- Сначала указать тип компилятора. - BlackMorda(27.05.2024 21:27)