Речь пойдет о плагине BsReadFlash (и не только о нем).
Этот плагин должен обеспечивать чтение содержимого Flash-памяти с образом биоса. Главная проблема - настройка чипсета для обеспечение доступа ко всему диапазону адресов ПЗУ. Эта настройка сильно зависит от конкретного чипсета.
Хотелось бы эту чипсет-зависимую часть вынести во внешний файл (базу данных оболочки). Тогда добавка нового железа не будет требовать изменения и перекомпиляции программы.Осталось выбрать формат хранения этой чипсет-зависимой части. Этот формат, с одной стороны, должен быть достаточно гибким, а с другой - простым для реализации и удобным для пользователя.
Например, для моего компьютера (Host bridge 0x1039:0x0650, LPC bridge 0x1039:0x0008) перед чтением прошивки биоса необходимо записать в устройство LPC Bridge (Class 0x060100) в регистр 0x40 значение 0x03.
На языке C++ с использованием оболочки это выглядит так:
Речь пойдет о плагине BsReadFlash (и не только о нем).
Этот плагин должен обеспечивать чтение содержимого Flash-памяти с образом биоса. Главная проблема - настройка чипсета для обеспечение доступа ко всему диапазону адресов ПЗУ. Эта настройка сильно зависит от конкретного чипсета.
Хотелось бы эту чипсет-зависимую часть вынести во внешний файл (базу данных оболочки). Тогда добавка нового железа не будет требовать изменения и перекомпиляции программы.Осталось выбрать формат хранения этой чипсет-зависимой части. Этот формат, с одной стороны, должен быть достаточно гибким, а с другой - простым для реализации и удобным для пользователя.
Например, для моего компьютера (Host bridge 0x1039:0x0650, LPC bridge 0x1039:0x0008) перед чтением прошивки биоса необходимо записать в устройство LPC Bridge (Class 0x060100) в регистр 0x40 значение 0x03.
На языке C++ с использованием оболочки это выглядит так:
Но в таком виде алгоритм настройки железа для чтения прошивки хранить нельзя.
Поэтому предлагается другой формат - более многословный, но зато простой для интерпретации.
В таком виде чипсет-зависимые настройки можно хранить в базе данных.
Поиск настроек будет осуществляться по Vendor_ID/Device_ID южного моста.
Аналогичный подход можно будет использовать и для плагина BsWriteFlash. Но кое-что придется добавить (чтение-запись в порты и пр.).
Какие будут мнения по поводу такого специального языка для записи настроек в базе данных?