27 lines
2.0 KiB
Markdown
27 lines
2.0 KiB
Markdown
# libps2000_re (Reverse Engineered)
|
|
|
|
Полная реконструкция драйвера `libps2000.so` для осциллографов PicoScope 2000 series на языке C.
|
|
|
|
## Архитектура
|
|
|
|
Проект разделен на функциональные модули, восстанавливающие логику оригинальной C++ библиотеки:
|
|
|
|
- **`ps2000_core.c`**: Управление жизненным циклом контекста, глобальное состояние, подсчет ссылок.
|
|
- **`ps2000_ops.c`**: Диспетчер операций (реконструкция `sub_237C0`), таблица виртуальных методов.
|
|
- **`ps2000_usb.c`**: Транспортный уровень на базе `libusb-1.0`.
|
|
- **`ps2000_hw.c`**: Уровень абстракции оборудования (HAL), IO-команды, SPI, FPGA.
|
|
- **`ps2000_math.c`**: Централизованная математика (SSE/SSE2 паттерны, быстрое округление через 2^52).
|
|
- **`ps2000_osc.c`**: Осциллограф, расчет таймбаз, обработка данных.
|
|
- **`ps2000_gen.c`**: Генератор сигналов (DDS/AWG), встроенные формы волн.
|
|
- **`ps2000_cfg.c`**: Чтение EEPROM, калибровка, информация об устройстве.
|
|
- **`ps2000_trig.c`**: Валидация и расчет позиции триггера.
|
|
- **`ps2000_stream.c`**: Стриминг, кольцевой буфер, обработка raw-данных.
|
|
- **`ps2000_thread.c`**: Обертка над pthreads (замена C++ `IRunnable`).
|
|
- **`ps2000_fw.c`**: Загрузчик прошивок (протокол Cypress Anchor).
|
|
- **`ps2000_init_tbl.c`**: Парсер бинарного скрипта инициализации регистров.
|
|
- **`ps2000_log.c`**: Подсистема логирования с поддержкой callback.
|
|
|
|
## Сборка
|
|
|
|
```bash
|
|
make |