Название: Класс для доступа к EEPROM Отправлено: titan83 от Август 15, 2014, 15:39 Здравствуйте, уважаемые коллеги.
Я сейчас работаю над созданием высокоуровневых классов для удобного доступа к железу нашего устройства на ARM9. И одна из железок - FRAM на 8 килобайт. Доступ к ней осуществляется по SPI шине. С базовыми вещами (чтение, запись, статусный регистр) - все получается нормально. Но хочется правильный класс, абстрагированный от низкоуровневых команд, а вот тут у меня небольшой затык - не могу определиться с тем, как передавать (и забирать) в класс записываемые данные, можно банально по char*, можно чуть поинтереснее QByteArray, но все что-то не то... По идее в этой памяти должны храниться все переменные, описывающие текущее состояние устройства, поэтому мне надо добиться проецирования некоей структуры напрямую в FRAM, чтобы при любом изменении новые данные сразу оказывались в FRAM без лишних усилий, типа вызова метода записи. Извиняюсь, если получилось сумбурно, но все же надеюсь, что кто-то подскажет наиболее оптимальную организацию данных в моем случае. Спасибо. Название: Re: Класс для доступа к EEPROM Отправлено: Fregloin от Август 20, 2014, 10:00 ну передавайте указатель на вашу структуру и ее размер, типа
Код: struct variables_on_device { Я конечно не открыл для вас что то новое, но во всех WinAPI такой подход, который уже не одно десятилетие работает. А можете конечно все и через QByteArray передавать, если так удобней. Название: Re: Класс для доступа к EEPROM Отправлено: navrocky от Август 20, 2014, 10:11 Я бы сделал класс, объект которого - настройки конкретного устройства, для изменения настроек используем get/set методы, для отправки изменений в устройство используем метод commit(). Отдельный commit() необходим для оптимального общения с устройством, чтобы не на каждый чих гонялись данные.
FRAM В методе commit() формируем бинарную структуру настроек и кладем ее в FRAM. В конструкторе считываем FRAM с устройства и раскладываем ее в приватные поля класса. Как-то так. Название: Re: Класс для доступа к EEPROM Отправлено: titan83 от Август 22, 2014, 10:46 Спасибо большое за ответы.
На данный момент реализовал класс для доступа к аппаратной части (как раз read-write). Далее сделаю по принципу navrocky - это будет очень разумно и уменьшит связанность графической и ядерной частей. Название: Re: Класс для доступа к EEPROM Отправлено: vizir.vs от Август 22, 2014, 11:40 Я организовываю общение с устройством следующем образом.
1-ый уровень - мастер соединения. В этом мастере настройки соединение и команды на чтение/запись с определенного адреса. 2-ой уровень - устройство. В этом устройстве хранится инфа об адресах устройства, его статусы и прочее. В этом же классе реализованы гетеры и сеторы. Ну и мастер является приватным членом этого класса. 3-ий уровень - гуи. В гуи уже идет запрос инфы по требованию и ее отображение. Название: Re: Класс для доступа к EEPROM Отправлено: titan83 от Август 22, 2014, 12:33 Я организовываю общение с устройством следующем образом. Спасибо - вы подтвердили правильность подхода.1-ый уровень - мастер соединения. В этом мастере настройки соединение и команды на чтение/запись с определенного адреса. 2-ой уровень - устройство. В этом устройстве хранится инфа об адресах устройства, его статусы и прочее. В этом же классе реализованы гетеры и сеторы. Ну и мастер является приватным членом этого класса. 3-ий уровень - гуи. В гуи уже идет запрос инфы по требованию и ее отображение. |