Процесс загрузки 3OS.Embedded |
Прежде всего, перечислим, хотя бы, минимальное кол-во устройств, с которых потребуется загрузка ОС для встраиваемых систем:
Сам процесс загрузки для встраиваемых систем жестко регламентирован, например, для загрузки из ПЗУ или РПЗУ, объемы и организация, которых не предполагают использование файловых систем. Соответственно ядро 3ОС и его сервисные, драйверные и прикладные потоки и процессы, не могут быть выделены в качестве структурных единиц – файлов. Выходом в подобной ситуации может стать загрузочный пакет 3ОС, объединяющий все модули 3ОС и прикладные задачи в один пакет с заранее заданной структурой, например такой:
Загрузочный пакет размещается линейно на устройстве носители информации и так же линейно boot - загрузчиком перегружается в ОЗУ, а управление передается «предварительному загрузчику», a затем и «окончательному загрузчику».
Окончательный загрузчик отрабатывает в следующем порядке:
"index_dump",0x0D,0x0A.
Затем, используя информацию из индексного
дампа вычисляется размер (BundleSize) связки «индексный дамп» + «дамп потоков».Сам индексный файл имеет текстовое содержимое, для легкой и быстрой настройки загрузочного пакета.
0x0000 | Сигнатура | "index_dump",0x0D,0x0A |
0x000C | размер индексного дампа (16 bit) | 0x???? |
0x000E | размер содержимого 1 потока (16 bit) | 0x???? |
0x0010 | размер содержимого 2 потока (16 bit) | 0x???? |
0x00YY | размер последнего потока (16 bit) | 0x???? |
Индексный файл создается достаточно просто такими средствами как компилятор ассемблера или C--. Индексный файл и файлы потоков откомпилированные пристыковываются к основному пакету ОС и записываются на носитель.