Comments 10
Антон, спасибо за статью. Я вижу примерно следующий минимальный план действий при портировании Embox на свою СнК:
Разработка (портирование) драйвера PLIC под свой контроллер.
Разработка (портирование) драйвера UART.
Портирование примитивов для работы с машинным таймером.
Портирование примитивов для работы с системным таймером.
Создание правильного плана размещения сегментов в памяти (linker.ld), план адресации.
По последнему пункту не совсем понятно может ли Embox (или приложение в её оставе) исполняться прямо из Flash ? На нашей СнК есть поддержка XiP, т.е. NOR flash память мапится в адресное пространство 0xA0000000. Вопрос в том, кто скопирует сегмент .data в RAM, а так же проинициализирует .bss, .stack и .heap. Хотелось бы увидеть общую картину как располагаются в памяти разные части Embox.
Да, в первом приближении все так, нужен только машинный таймер, и как показано встатье, на первом этапе можно вообще без прерываний, только lds архитектурная подерка и UART ( какой то интерфейс чтобы видеть что есть результат) и build тоже стандартный
По последнему пункту не совсем понятно может ли Embox (или приложение в её оставе) исполняться прямо из Flash ? На нашей СнК есть поддержка XiP, т.е. NOR flash память мапится в адресное пространство 0xA0000000.
Да, можно исполнять прямо из flash. ROM регион
Вопрос в том, кто скопирует сегмент .data в RAM, а так же проинициализирует .bss, .stack и .heap.
Embox копирует секцию .data (если нужно) и зануляет .bss, устанавливает указатель стека (размер стека задается в конфиге), указатели стека для потоков устанавливаются отдельно Embox, кучу инициализирует тоже embox (если нужно).
Для тех кто хотел в комментариях предложить автору раскрыть что такое Embox сообщаю:
Embox (англ. Essential toolbox for embedded development) — свободная кросс-платформенная операционная система реального времени (RTOS), разрабатываемая для встроенных систем.
Спасибо. Но подумал, если начинать с этого каждый раз, то до чего то осмысленного никогда не дойдем :)Прогаем АСУ-ТП ( МЭК 61131-3 языки) на базе отечественного MK (https://habr.com/ru/articles/881784/)
Я смотрю код на гитхаб уже залили, надо бы тогда и описание подправить:
Embox supports the following CPU architectures: x86, ARM, Microblaze, SPARC, PPC, MIPS.
Что-то я в embox/platform не нашел «существующий темплейт riscv/minimal»...
Добавляем в Embox новую платформу с архитектурой RISC-V