ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Пятница
19 апреля
974548
Chum_A (29.01.2020 17:27, просмотров: 13158)
Требуются идеи по реализации нечто, типа BIOS для МК. Исходные данные: имеется железо - МК Cortex-M0 и физические драйверы CAN, RS-485, SPI... Для этого железа написан и отлажен (давно) HAL, диспетчер очереди событий, программные таймеры и т.п. (далее просто HAL). В т.ч. реализована "не прямая" обработка прерываний - "железный" обработчик вызывает "собственно" обработчик из таблицы, где тот должен был предварительно (средствами HAL) зарегистрироваться. Такая схема реализована из-за отсутствия в М0 возможности к перемещению таблицы векторов прерываний. Требуется реализовать: 1 HAL единожды шьётся в выделенную область Flash-а. 2 Прикладная программа изначально рассчитана на работу в выделенной секции ОЗУ, но записана в выделенную область Flash-а. 3 МК стартует с кода HAL, который перезаписывает прикладной код из известной области Flash в ОЗУ и передаёт ему управление. 4 Прикладной код должен иметь возможность пользоваться всеми благами HAL, в т.ч. регистрировать обработчики прерываний, регистрировать и пользовать программные таймеры и т.д. 5 Требуется возможность отладки (средствами IDE, например Кейл) прикладного кода совместно с HAL, но без совместной с ним сборки. В части реализации первое, что приходит на ум, это незабвенный MS-DOS с его прерываниями. Такую схему можно реализовать, например, через прерывание SVCall, но тогда придётся изрядно доработать HAL, на что нет ни времени, ну и средств :). Собственно вопрос, какие могут быть ещё идеи?