Аппаратная виртуализация — это как раз и метод аппаратного разделения функциональных блоков.
Насчет микроконтроллера — все просто, вы хотите гонять на нем две разных подсистемы от разных производителей, причем не доверяете обоим, ну упасть они могут токо-так. Надо восстановить упавшую, не уронив вторую. Пример — подсистема связи в сети и подсистема управления мотором. Или web сервер, типа в https://www.olimex.com/Products/PIC/Development/PIC32-EMZ64/open-source-hardware плюс еще что-то независимое, но критичное.
Можно конечно забацать SoC с двумя процессорами, стандартное решение. Но оно и энергии жрать больше будет, и его еще делать под задачу надо, придумывать систему удаленного сброса и т.п. И если для банкомата энергия не критична, то есть куча приложений, где это чувствительно. Да и стоимость чипа выше.
Софтверное разделение функциональных блоков на различные VM — это просто естественное расширение обыкновенной многозадачности, но с повышенной security.
Коротко — нет конечно, маленький размер (35КБ) получается из-за сильной аппаратной поддержки виртуализации в MIPS R5. Для всего более раннего пришлось бы эмулировать полную работу с CP0, все привилегированные команды процессора в guest kernel.
И к тому же, если не считать interAptiv/proAptiv, то на всех процессорах пришлось бы делать сильную паравиртуализацию, и первый этап — сборка ядра виртуальной машины в KUSEG вместо KSEG0, чтобы не эмулировать КАЖДУЮ команду процессора (на *Aptiv процессорах есть расширение сегментной памяти, которой позволяет гонять user-ный процесс в адресах KSEG0).
Пока нет названия — нигде. Как будет имя — выложу на github.
Да, на питоне только скрипты конфигурирования, сам гипервизор — С и ассемблер
Основа привязана только к MIPS R5. Чуть-чуть надо будет доделать для P5600. Однако эмуляция контроллера прерываний сейчас сделана только для PIC32MZ(EF). То есть будет работать на любой плате с PIC32MZ(EF), например Digilent-овской.
1) Что было под рукой — то и взял. Python есть везде.
2) Или GPLv3 или что-то типа BSD, еще не очень думал.
3) Нет, не думал. Там усложненные вычисления, так как на M5150 всего 16 регистров TLB и гипервизор использует переменный размер страниц для уменьшения page-faults. С Python-ом мне было проще написать преобразования.
Насчет микроконтроллера — все просто, вы хотите гонять на нем две разных подсистемы от разных производителей, причем не доверяете обоим, ну упасть они могут токо-так. Надо восстановить упавшую, не уронив вторую. Пример — подсистема связи в сети и подсистема управления мотором. Или web сервер, типа в https://www.olimex.com/Products/PIC/Development/PIC32-EMZ64/open-source-hardware плюс еще что-то независимое, но критичное.
Можно конечно забацать SoC с двумя процессорами, стандартное решение. Но оно и энергии жрать больше будет, и его еще делать под задачу надо, придумывать систему удаленного сброса и т.п. И если для банкомата энергия не критична, то есть куча приложений, где это чувствительно. Да и стоимость чипа выше.
Софтверное разделение функциональных блоков на различные VM — это просто естественное расширение обыкновенной многозадачности, но с повышенной security.
https://www.olimex.com/Products/PIC/Development/PIC32-EMZ64/open-source-hardware
Спасибо.
Коротко — нет конечно, маленький размер (35КБ) получается из-за сильной аппаратной поддержки виртуализации в MIPS R5. Для всего более раннего пришлось бы эмулировать полную работу с CP0, все привилегированные команды процессора в guest kernel.
И к тому же, если не считать interAptiv/proAptiv, то на всех процессорах пришлось бы делать сильную паравиртуализацию, и первый этап — сборка ядра виртуальной машины в KUSEG вместо KSEG0, чтобы не эмулировать КАЖДУЮ команду процессора (на *Aptiv процессорах есть расширение сегментной памяти, которой позволяет гонять user-ный процесс в адресах KSEG0).
За идеи по названию — спасибо.
Да, на питоне только скрипты конфигурирования, сам гипервизор — С и ассемблер
Основа привязана только к MIPS R5. Чуть-чуть надо будет доделать для P5600. Однако эмуляция контроллера прерываний сейчас сделана только для PIC32MZ(EF). То есть будет работать на любой плате с PIC32MZ(EF), например Digilent-овской.
2) Или GPLv3 или что-то типа BSD, еще не очень думал.
3) Нет, не думал. Там усложненные вычисления, так как на M5150 всего 16 регистров TLB и гипервизор использует переменный размер страниц для уменьшения page-faults. С Python-ом мне было проще написать преобразования.