ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Суббота
6 июля
170751 Топик полностью
Snaky (30.10.2009 03:45 - 03:56, просмотров: 70) ответил Скрипач на Чатыр!
Подвоха нет :> Можно и так сделать - никто не спорит. Просто у FS я вижу дополнительные преимущества: 1. Структура для хранения данных будет более-менее универсальная и задается в FS. -> не надо для каждого отдельного куска данных описывать свою структуру. 2. Как сами данные так и их адреса/идентификаторы/размеры/CRC хранятся на одном и том же носителе. -> нет необходимости жестко отслеживать связь между всеми этими параметрами в самом коде и между фактическим расположением данных на носителе. -> Упрощается ситуация добавления и изменения количества данных при апдейте кода (пользователь может скачать новую версию прошивки и проапдейтиться у себя через бутлоадер по USB, например, при этом данные на внешнем относительно МК носителе останутся старые, но легко доступные через ту же универсальную FS). 3. Упростится ситуация с обновлением данных - можно записать новый "файл", и удалить старый только при успешности операции записи (то о чем ниже fk0 написал). 4. Проще и универсальнее код: все что нужно - пара низкоуровневых функций записи-чтения байта по адресу для конкретного носителя, и высокоуровневые функции "считать/модифицировать/сохранить" для любого типа данных, все остальные промежуточные задачи ложатся на FS (как-то поиск свободного места, хранение адреса и идентификатора данных, возврат кодов ошибок, проверка целостности при чтении и/или записи итд итп). При этом, в отличие от вашего примера, функции чтения и записи данных не работают напрямую с низкоуровневыми функциями чтения/записи EEPROM. -> Облегчается портирование кода и/или изменение типа носителя. Да, вы правы, в основном информация статическая, но ситуация с переменной длиной данных тоже может появиться и тогда ее можно просто решить кардинально ничего не меняя. Живой пример: прибор выполняет определенную операцию и позволяет задать параметр выполнения этой операции (например, A) и время (T) выполнения для каждого отрезка времени. Т.е. пользователь может захотеть чтобы прибор проработал 10 минут с параметром А0 и все, а может запрограммировать сначала 2 минуты А0, потом 1 минута А1, потом 6 минут А2 и 1 минута А3. Последние рабочие настройки сохраняются в памяти, т.к. велика вероятность того что именно они будут использоваться при следуюшем использовании прибора. Как видно, данные меняются по длине. P.S. кто такой "чатыр" ?
DRC придумали трусы