Skip to content

Latest commit

 

History

History
63 lines (54 loc) · 2.32 KB

README.md

File metadata and controls

63 lines (54 loc) · 2.32 KB

master-programming-example

Задание для курса Master Programming.

Содержание задания

Задание заключается в написании эмулятора вычислительного процессора в виде драйвера на базе libfuse версии 3.2+. Требования к драйверу:

  1. структура директорий драйвера:

    /dev/
    └── mycpu/
        ├── unit0
        │   ├── pram
        │   └── lram
        ├── unit1
        │   ├── pram
        │   └── lram
        ...
        ├── unitn
        │   ├── pram
        │   └── lram
        └── ctrl
    
  2. количество устройств unit необходимо задавать диначески при запуске драйвера, т.е. во время исполнения количество юнитов не меняется;

  3. запуск и остановка устройства unit осуществляется с помощью устройства ctrl:

    $ echo 3 > /dev/mycpu/ctrl
    $ cat /dev/mycpu/ctrl
    3
    
  4. примерный сценарий использования:

    $ cat testdata.bin > /dev/mycpu/unit0/lram
    $ cat testdata.bin > /dev/mycpu/unit1/lram
    $ cat | tee /dev/unit0/pram /dev/unit1/pram
    #include <algorithm>
    
    int entrypoint(uint32_t size, uint8_t* ram)
    {
        std::sort(ram, ram + size);
        return 0;
    }
    <Ctrl-D>
    $ echo 0 > /dev/mycpu/ctrl
    $ echo 1 > /dev/mycpu/ctrl
    $ cat /dev/mycpu/ctrl
    1
    0
    $ diff /dev/mycpu/unit0/lram /dev/mycpu/unit1/lram
    $ diff reference.bin /dev/mycpu/unit0/lram
    
  5. в проекте должно быть поддержано юнит-тестирование через Catch2;

  6. поддержана документация проекта через doxygen;

  7. поддержана генерация установчного пакета;

  8. сборка проекта осуществляется через CMake.

Ведение проекта осуществляется поэтапно, т.е. не все выше описанные требования должны сразу выполняться.