У меня малый опыт, прошу сильно не бить. :-) Проблема такова, разрабатывается прибор на базе STM32F103, в котором нужно хранить настройки конфигурации периферийных узлов, например реле, датчики и др., эти настройки задаются либо с ПК, либо по умолчанию, естественно параметры у каждого узла свои собственные, и должны храниться в энергонезависимой памяти. Планирую хранить в свободной области внутренней флеш-памяти программ, пока в голове возникает мысль хранить настройки блоками фиксированного размера и размещать туда параметры настройки, при обрашении к ним по каким-то атрибутам, например, по типу узла, определяем шаблон в виде структуры и читаем параметры, затем по тем же атрибутам определяется вызываемый процесс наприер если это реле то вызывается обработчик реле и т.д. Есть ли способы более эффективней? Может с помошью xml-технологии или файловой системы? Буду благодрен за любой ответ!
rezident
Jan 7 2010, 03:14
Многое зависит от объема конфигурационных данных. Умещаются ли они целиком в один сегмент Flash? Следует учитывать, что информацию во Flash можно переписать, только стерев и вновь записав целый блок/сектор. Если у вас предусмотрен буфер (есть достаточное место в ОЗУ) в который вы можете считать целый сектор, модифицировать его содержимое и переписать его обратно во Flash, то по большому счету остается только одна трудность - вероятность пропадания питания во время записи. Т.е. нужно предусмотреть такую возможность и способы контроля целостности данных. Если же свободного ОЗУ для этого дела нет, то можно использовать еще один сектор Flash как буферный, заранее зарезервировав его для этих целей. Если же и ОЗУ и Flash "в обрез", то следует использовать внешнюю память типа EEPROM или DataFlash. Благо стоят они копейки. Еще один плюс за использование внешней памяти в том, что при устоявшихся (неизменяемых) структурах данных конфигурации при модификации программного обеспечения в МК не нужно будет устройство конфигурировать по-новой. Ведь при стирании Flash в МК во внешней EEPROM конфигурация сохранится.
Спасибо! А сушествует ли какое-то подобие виртуальной файловой системы процессов для STM32F103 как в Unix? Мне хотелось бы с помощью одной системной функции вызвать тот или иной процесс, указав параметр ссылки. Если есть то где можно посмотреть? Дело в том, что число подключаемых периферий может варьироваться, а также могут удаляться и создаваться вновь, редактировать параметры настроек, хотелось бы с устройствами осуществлять такие же действия как с файлами.
PS Всех С Рождеством Христовым! Добра, любви, здоровья и благополучия!
Для просмотра полной версии этой страницы, пожалуйста,
пройдите по ссылке.