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

 
 
> STM32 + M25P64 + FatFs, проблема с чтением
Ivan Kuznetzov
сообщение Nov 26 2010, 08:20
Сообщение #1


Местный
***

Группа: Свой
Сообщений: 307
Регистрация: 6-02-08
Из: Россия, Екатеринбург
Пользователь №: 34 798



Необходимо организовать файловую систему на флешке M25P64.

Чип: STM32F103.
Размер сектора 512Б.
Решил использовать FatFs, т.к. пользуюсь ей уже несколько лет в паре с SD картой.

1) в diskio.c в функции DiskRead прописал sFLASH_ReadBuffer(buff, sector * 512, count * 512); (из стандартной либы)
2) Создал образ дискеты на 1.44 МБ FAT12 с помощью UltraISO, закинул на него файлы
3) Прошил M25P64 этим образом
4) Список файлов на M25P64 STM-ка выдает, параметры фс-ки тоже пишет, по папкам лазать тоже можно.

Начинаю читать файл - читаются первые 1024 байта и дальше все, ошибка FR_DISK_ERR.

Может кто-нибудь поделиться процедурами чтения сектора из M25Pxx флешек?

Сообщение отредактировал Ivan Kuznetzov - Nov 26 2010, 14:14


--------------------
Разработчик
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов (1 - 6)
ssergy
сообщение Nov 26 2010, 11:33
Сообщение #2


Участник
*

Группа: Участник
Сообщений: 21
Регистрация: 29-01-06
Пользователь №: 13 730



У Кеила в РЛ есть поддержка старой флэши от Intel в папке C:\Keil\ARM\RL\FlashFS\Flash\25F640S33. Для Numonyx M25P64 - убрать пару команд при инициализации.
Go to the top of the page
 
+Quote Post
AlexandrY
сообщение Nov 26 2010, 11:42
Сообщение #3


Ally
******

Группа: Модераторы
Сообщений: 6 232
Регистрация: 19-01-05
Пользователь №: 2 050



Цитата(ssergy @ Nov 26 2010, 13:33) *
У Кеила в РЛ есть поддержка старой флэши от Intel в папке C:\Keil\ARM\RL\FlashFS\Flash\25F640S33. Для Numonyx M25P64 - убрать пару команд при инициализации.


В Keil-e однако не ламеры сидят. Они никогда не пытались сделать FAT для сериальных Flash.
На сериальных Flash у них совсем другой тип файловой системы используется.
Go to the top of the page
 
+Quote Post
ssergy
сообщение Nov 26 2010, 11:53
Сообщение #4


Участник
*

Группа: Участник
Сообщений: 21
Регистрация: 29-01-06
Пользователь №: 13 730



Цитата(AlexandrY @ Nov 26 2010, 14:42) *
В Keil-e однако не ламеры сидят. Они никогда не пытались сделать FAT для сериальных Flash.
На сериальных Flash у них совсем другой тип файловой системы используется.


А FAT на M25F64 с размером сектора в 64Кб и не получится в принципе. А вопрос был насчет чтения сектора.
Go to the top of the page
 
+Quote Post
AlexandrY
сообщение Nov 26 2010, 11:56
Сообщение #5


Ally
******

Группа: Модераторы
Сообщений: 6 232
Регистрация: 19-01-05
Пользователь №: 2 050



Цитата(ssergy @ Nov 26 2010, 13:53) *
А FAT на M25F64 с размером сектора в 64Кб и не получится в принципе. А вопрос был насчет чтения сектора.


FAT получится при любом размере физического сектора. Но для этого делают переходной драйвер на физический носитель.
Go to the top of the page
 
+Quote Post
ssergy
сообщение Nov 26 2010, 12:04
Сообщение #6


Участник
*

Группа: Участник
Сообщений: 21
Регистрация: 29-01-06
Пользователь №: 13 730



Цитата(AlexandrY @ Nov 26 2010, 14:56) *
FAT получится при любом размере физического сектора. Но для этого делают переходной драйвер на физический носитель.


FAT для M25P64 со временем стирания сектора 3 секунды - не лучший вариант, да еще и с переходным драйвером. Это на "любителя".
Go to the top of the page
 
+Quote Post
Ivan Kuznetzov
сообщение Nov 26 2010, 14:11
Сообщение #7


Местный
***

Группа: Свой
Сообщений: 307
Регистрация: 6-02-08
Из: Россия, Екатеринбург
Пользователь №: 34 798



Мне непонятна сама причина срыва чтения файла: причем процедура вываливается в ошибку, после чтения 1024 байт. Причем значение Bytes/Cluster у меня тоже равно 1024. Если отформатировать образ под 4096 Bytes/Cluster, то чтение будет срываться после 4096 байта. Непонимаю в чем косяк: на сайте Чена написано что для чтения достаточно добавить процедуру чтения одного сектора в драйвер и все, с самой фаткой ничего делать не надо. Запись мне не нужна - просто чтение файлов.

Я так и сделал:
Код
sFLASH_ReadBuffer(buff, sector*512, 512); // помножаем номер сектора на кол-во байт в секторе - получаем адрес в байтах


Причем листинг файлов выдается нормально, все файлы и папки видимы.


--------------------
Разработчик
Go to the top of the page
 
+Quote Post

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

 


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


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