реклама на сайте
подробности

 
 
2 страниц V  < 1 2  
Reply to this topicStart new topic
> Mass storage in flash M25P16, Как сделать FAT на флешке с большим размером страницы?
esaulenka
сообщение Jan 16 2013, 12:10
Сообщение #16


Профессионал
*****

Группа: Свой
Сообщений: 1 032
Регистрация: 13-03-08
Из: Маськва
Пользователь №: 35 877



Предложение - забить на обновление FAT'а (сделать его ридонли, в памяти контроллера), и обновлять только данные. Пользователю разрешить только перезаписывать единственный имеющийся файл.

Нечто похожее есть в примерах NXP "USB bootloader".


--------------------
Тут обсуждается творческий порыв, а не соответствие каким-либо стандартам ©
Go to the top of the page
 
+Quote Post
jcxz
сообщение Jan 16 2013, 13:16
Сообщение #17


Гуру
******

Группа: Свой
Сообщений: 5 228
Регистрация: 3-07-08
Из: Омск
Пользователь №: 38 713



Цитата(Dmitrich @ Jan 16 2013, 18:03) *
Из внешней памяти в устройстве только M25P16. Устройство в таком виде свои задачи выполняет. В памяти ( M25P16 ) записаны голосовые сообщения, одним "куском" немного больше мегабайта. Файловой системы в устройстве нет. Звук записывается один раз при изготовлении, через технологический UART по протоколу X-modem, медленно и печально.
Речь идёт о модификации - ускорении этой загрузки. И - как дополнительный бонус - дать возможность заказчику обновлять звук при эксплуатации.
И зачем тут файловая система?
И уж точно она никак не поможет ускорить загрузку.
По-моему вы необоснованно усложняете задачу.

Цитата(Dmitrich @ Jan 16 2013, 18:03) *
Хм... А что, если мне самому "отформатировать" диск? Задать размер кластера 64К, тогда у меня вся таблица FAT будет крошечная. Виндовсу форматирование - запретить.
В FAT16 максимальный размер кластера ==32К. Учите матчасть cool.gif
И маленькие файлы тогда будут занимать очень много места.

Цитата(Dmitrich @ Jan 16 2013, 18:03) *
С таблицей трансляции как-то сложновато по моему. Да и, признаться, не очень понятно как.
У вас нет ОЗУ, достаточного для хранения 64К. И как вы при этом собираетесь перезаписывать отдельные области (кластера) внутри этих 64К, объясните?

Цитата(esaulenka @ Jan 16 2013, 18:10) *
Предложение - забить на обновление FAT'а (сделать его ридонли, в памяти контроллера), и обновлять только данные. Пользователю разрешить только перезаписывать единственный имеющийся файл.
Какой тогда вообще смысл в FAT?
Go to the top of the page
 
+Quote Post
Dmitrich
сообщение Jan 16 2013, 16:31
Сообщение #18


Участник
*

Группа: Участник
Сообщений: 51
Регистрация: 15-02-05
Пользователь №: 2 663



Цитата(esaulenka @ Jan 16 2013, 16:10) *
Предложение - забить на обновление FAT'а (сделать его ридонли, в памяти контроллера), и обновлять только данные. Пользователю разрешить только перезаписывать единственный имеющийся файл.

Нечто похожее есть в примерах NXP "USB bootloader".


Всё, полез искать пример. Это решение - было бы для меня идеальным! Именно то, что мне нужно!

Цитата(jcxz @ Jan 16 2013, 17:16) *
И зачем тут файловая система?

Мне она не нужна. Но без неё виндовс не может.
Цитата
И уж точно она никак не поможет ускорить загрузку.

Сама по себе файловая система - конечно нет. Но загрузится файл всё же быстрее, чем через UART 115200.
Цитата
По-моему вы необоснованно усложняете задачу.
В FAT16 максимальный размер кластера ==32К. Учите матчасть cool.gif
И маленькие файлы тогда будут занимать очень много места.

Эт точно! biggrin.gif
Цитата
У вас нет ОЗУ, достаточного для хранения 64К. И как вы при этом собираетесь перезаписывать отдельные области (кластера) внутри этих 64К, объясните?

Было бы столько ОЗУ - проблемы не было бы. ОЗУ нету, и перезаписывать отдельные области внутри я не буду. Всё, что нужно - записать одним куском большой файл.
Цитата
Какой тогда вообще смысл в FAT?

Легкий доступ из виндовс, больше ничего.
Go to the top of the page
 
+Quote Post
Dmitrich
сообщение Jan 17 2013, 17:11
Сообщение #19


Участник
*

Группа: Участник
Сообщений: 51
Регистрация: 15-02-05
Пользователь №: 2 663



Докладываю: - проблема решена.

Выглядит это так: - во флеш памяти прцессора лежит 3 массива констант :
- 512 байт - загрузочный сектор
- 112 байт - FAT
- 160 байт - корневой каталог.

Эти массивы "скармливаются" виндовсу, когда он читает соотв. адреса.
При чтении выше 20К - происходит реальное чтение из m25p16
Когда виндовс пишет по адресам ниже 20К - не делается ничего.
Запись выше 20К направляется в m25p16.
При записи в первый сектор страницы 64К - сначала вызывается процедура стирания страницы.

В итоге получилось вот что:
- При подключении устройства, в виндовс появляется новый диск, на котором уже есть файлы ( у меня их там 4 штуки).
- Эти файлы можно перезаписывать, не меняя имён.
- Нельзя стирать ПЕРЕД записью - тогда новый файл может попасть по другим адресам, и всё поломается (но восстановится после сброса)!
- Диск нельзя "убить" никаким форматированием (но данные стереть можно).
-Загрузка файла происходит раз в 5 быстрее, чем было раньше.

В общем, поставленные задачи полностью выполнены.
Спасибо всем, кто помогал. Особенно ценной была подсказка esaulenka - за что отдельное спасибо!
Go to the top of the page
 
+Quote Post

2 страниц V  < 1 2
Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 18th July 2025 - 16:19
Рейтинг@Mail.ru


Страница сгенерированна за 0.01275 секунд с 7
ELECTRONIX ©2004-2016