Easyelectronics.ru

Электроника для всех
Текущее время: 23 сен 2019, 10:21

Часовой пояс: UTC + 5 часов



JLCPCB – Прототипы печатных плат за $2/10pcs (Любой цвет!)
Крупнейший производитель печатных плат и прототипов. Более 600000 клиентов и свыше 10000 заказов в день!
Получите скидку на почтовую отправку при первом заказе в JLCPCB!

Начать новую тему Ответить на тему  [ Сообщений: 21 ] 
Автор Сообщение
 Заголовок сообщения: SD карта. Посекторное чтение. SDIO. FATFS
СообщениеДобавлено: 11 фев 2015, 12:26 
Только пришел

Зарегистрирован: 11 фев 2015, 12:11
Сообщения: 10
Здравствуйте!
Есть несколько вопросов по работе с SD картой, которые я хочу решить да одному не получается.
Описание:
1. Карта подключена по SDIO интерфейсу с использованием библиотеки FATFS. На основании чужого исходника я и делаю свой проект.
На карте создается файл со строкой, все хорошо работает и с индикацией. FATFS монтирование проходит успешно.
2. Я уже смотрел функции посекторного чтения/записи. И реализовали их в коде. Теоретически - вроде все работает.
Считывается информация с блока в (буфер) байтовый массив.

Как мне сделать:

1. Допустим я хочу записать в сектор данные. Как мне туда послать байты для записи.
2. А затем считать эти байты в буфер, и записать в текстовый файл. Или несколько секторов с записью их содержимого в файл.

Сектор на 512 байт, но считать необходимо например 16 всего, как реализовать это?
Функции библиотеки:
http://microsin.net/programming/file-sy ... ystem.html
http://microsin.net/programming/file-sy ... write.html
http://microsin.net/programming/file-sy ... -read.html
Проект на основе которого я пишу свой:
http://stm32f4-discovery.com/2014/07/li ... x-devices/

Использую STM32F4DISCOVERY


Последний раз редактировалось 21-st 11 фев 2015, 16:22, всего редактировалось 1 раз.

Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: SD карта. Посекторное чтение. SDIO. FATFS
СообщениеДобавлено: 11 фев 2015, 14:50 
Старожил

Зарегистрирован: 11 сен 2012, 11:19
Сообщения: 5650
Юзер не работает с секторами это прерогатива FatFs . ИзобреДаем лисапед от непонимания?
А посылке полный ахтунг , мало SPL и кубов -надо еще оберток и еще и оберток над обертками. :)))))


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: SD карта. Посекторное чтение. SDIO. FATFS
СообщениеДобавлено: 11 фев 2015, 15:56 
Старожил
Аватара пользователя

Зарегистрирован: 18 май 2013, 20:43
Сообщения: 4270
Откуда: Кемеровская область, Киселевск
Если используете FAT_FS, то функция f_read считывает в буфер любое указанно количество байт.
Описание:
http://microsin.net/programming/file-sy ... -file.html

_________________
RADIOWOLF.RU


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: SD карта. Посекторное чтение. SDIO. FATFS
СообщениеДобавлено: 11 фев 2015, 16:10 
Только пришел

Зарегистрирован: 11 фев 2015, 12:11
Сообщения: 10
Oxford писал(а):
Если используете FAT_FS, то функция f_read считывает в буфер любое указанно количество байт.
Описание:
http://microsin.net/programming/file-sy ... -file.html


Нет, это не то. Функция что Вы предложили - она считывает данные из файла.
А мне нужен низкоуровневый доступ к карте для чтения секторов по 512 байт (dosikus_2 не прав, потому что утверждал что библиотека не работает с секторами,
ну и конечно же предрассудочно и ошибочно предположил что я не знаком с SPL и кубом).
Функция disk_read считывает данные из сектора целиком (все 512 байт), но она записывает их
в буфер - байтовый массив. Функция записи в файл, принимает параметры либо строки либо символа.
Как из байтового массива сделать строку или символы - вопрос для меня.
Как записать байты в сектор??? Например - мне нужно записать 16 байт в сектор, но не все 512.
И считать например то же 16 байт, но не 512. Хотя для начала с 512 разобраться было бы хорошо.
Суть в том, что мне необходимо работать с данными которые записаны в сектора, причем сектора записаны
не полностью а только первые 8 байт (может быть больше я не помню и не суть сколько много, главное что фиксированное количество).
Считывать посекторно байты и записывать их в файл, можно на ту же карту. Или преднамеренно записать сектора на карте что бы их
считать и содержимое записать в файл.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: SD карта. Посекторное чтение. SDIO. FATFS
СообщениеДобавлено: 11 фев 2015, 16:29 
Старожил
Аватара пользователя

Зарегистрирован: 18 май 2013, 20:43
Сообщения: 4270
Откуда: Кемеровская область, Киселевск
Вы же работаете с FAT_FS?

_________________
RADIOWOLF.RU


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: SD карта. Посекторное чтение. SDIO. FATFS
СообщениеДобавлено: 11 фев 2015, 16:31 
Только пришел

Зарегистрирован: 11 фев 2015, 12:11
Сообщения: 10
Oxford писал(а):
Вы же работаете с FAT_FS?


В последнее время, для решения задач ее использую.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: SD карта. Посекторное чтение. SDIO. FATFS
СообщениеДобавлено: 11 фев 2015, 16:32 
Старожил
Аватара пользователя

Зарегистрирован: 18 май 2013, 20:43
Сообщения: 4270
Откуда: Кемеровская область, Киселевск
ну так и читайте с помощью f_read, зачем в сектора лезите

_________________
RADIOWOLF.RU


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: SD карта. Посекторное чтение. SDIO. FATFS
СообщениеДобавлено: 11 фев 2015, 16:35 
Только пришел

Зарегистрирован: 11 фев 2015, 12:11
Сообщения: 10
Oxford писал(а):
ну так и читайте с помощью f_read, зачем в сектора лезите


Блок, который пишет данные с датчиков, записывает только в сектора. Это сделано для защиты данных.
И данные, которые блок снимает с датчиков ежесекундно и пишет на карту, нужно считать в файл (хотя бы), и забить в EXEL лист что бы
наблюдать за работой машины, а именно, импульсы, потребления тока, время, напряжение и т.д.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: SD карта. Посекторное чтение. SDIO. FATFS
СообщениеДобавлено: 11 фев 2015, 16:37 
Старожил
Аватара пользователя

Зарегистрирован: 18 май 2013, 20:43
Сообщения: 4270
Откуда: Кемеровская область, Киселевск
ну так делайте через файл, зачем голову греете

_________________
RADIOWOLF.RU


Последний раз редактировалось Oxford 11 фев 2015, 16:37, всего редактировалось 1 раз.

Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: SD карта. Посекторное чтение. SDIO. FATFS
СообщениеДобавлено: 11 фев 2015, 16:37 
Старожил

Зарегистрирован: 11 сен 2012, 11:19
Сообщения: 5650
Все абздец , дальше ржать не могу.
Все перемешал болезный ... :))))))

21-st, попробуем на пальцах.
Все что тебе нужно - прочитать как работать с FatFS .
Ты - юзер , твои функции общаются с FatFs на уровне файлов.
Работа с секторам это уровень ниже , и с ними работаетFatFs .
Тебе они не нужны.

Цитата:
Блок, который пишет данные с датчиков, записывает только в сектора. Это сделано для защиты данных.


А это надо выбросить давно...


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: SD карта. Посекторное чтение. SDIO. FATFS
СообщениеДобавлено: 11 фев 2015, 16:43 
Только пришел

Зарегистрирован: 11 фев 2015, 12:11
Сообщения: 10
dosikus_2 писал(а):
Все абздец , дальше ржать не могу.
Все перемешал болезный ... :))))))

21-st, попробуем на пальцах.
Все что тебе нужно - прочитать как работать с FatFS .
Ты - юзер , твои функции общаются с FatFs на уровне файлов.
Работа с секторам это уровень ниже , и с ними работаетFatFs .
Тебе они не нужны.


Тогда может найдется альтернативный вариант посекторного чтения?
Или как вообще можно считать сектора, и заносить байты в файл?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: SD карта. Посекторное чтение. SDIO. FATFS
СообщениеДобавлено: 11 фев 2015, 16:45 
Старожил

Зарегистрирован: 11 сен 2012, 11:19
Сообщения: 5650
21-st, тогда внятней объясняй.
Я вижу что некое самолепное устройство гонит на карточку минуя FAT и тем самым ее убивая .

А считать сектора не проблема :
Код:
DRESULT disk_read (
      
       uint8_t drv,         /* Physical drive number (0) */
     uint8_t *buff,         /* Pointer to the data buffer to store read data */
     uint32_t sector,      /* Start sector number (LBA) */
     unsigned int  count      /* Sector count */
)
      


В аргументы буфер куда читать , стартовый сектор и количество секторов.


Вот только я не уверен что сможешь и с файлами работать и писать в сектора одновременно...


Последний раз редактировалось dosikus_2 11 фев 2015, 16:50, всего редактировалось 1 раз.

Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: SD карта. Посекторное чтение. SDIO. FATFS
СообщениеДобавлено: 11 фев 2015, 16:48 
Только пришел

Зарегистрирован: 11 фев 2015, 12:11
Сообщения: 10
dosikus_2 писал(а):
21-st, тогда внятней объясняй.
Я вижу что некое самолепное устройство гонит на карточку минуя FAT и тем самым ее убивая .


Блок пишет посекторно данные с датчиков. Он на ATMega построен. Работает с SD картой по SPI.
В секторе 512 байт, но блок пишет вроде как 12 или 16 байт (точно не помню).

Я собираю устройство которое смогло бы считывать данные с секторов в файл.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: SD карта. Посекторное чтение. SDIO. FATFS
СообщениеДобавлено: 11 фев 2015, 16:52 
Старожил

Зарегистрирован: 11 сен 2012, 11:19
Сообщения: 5650
21-st писал(а):
считывать данные с секторов в файл.


В файл на ту же карточку? Где тот же файл портится посекторной записью.
Надо девайс тот перелопачивать с кулибинской посекторной записи на запись в файл.

"защита" данных записью в сектора , приколола. От себя защитились ? :)))))


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: SD карта. Посекторное чтение. SDIO. FATFS
СообщениеДобавлено: 11 фев 2015, 16:55 
Только пришел

Зарегистрирован: 11 фев 2015, 12:11
Сообщения: 10
dosikus_2 писал(а):
21-st писал(а):
считывать данные с секторов в файл.


В файл на ту же карточку? Где тот же файл портится посекторной записью.
Надо девайс тот перелопачивать с кулибинской посекторной записи на запись в файл.


С функцией выше - я разбирался. Все считывается. Но как записать из буфера в файл???
Допустим, я подключаю к дискавери карту по SDIO с которой считываю данные с секторов, а к USB используя OTG подключаю флешку и туда в файл
копируются данные с секторов. Вот.

Цитата:
"защита" данных записью в сектора , приколола. От себя защитились ? :)))))


Нет. Например - отключается питание, на карте массив из секторов, в нем хранится Адрес последней записанной ячейки, и когда
питание возобновляется, блок ее ищет и продолжает писать от туда.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: SD карта. Посекторное чтение. SDIO. FATFS
СообщениеДобавлено: 11 фев 2015, 16:58 
Старожил

Зарегистрирован: 16 ноя 2012, 07:47
Сообщения: 2859
если мне память не изменяет - f_write . Там все прекрасно пишется, не стоит лезть в низкий уровень, FatFs это прекрасно разруливает.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: SD карта. Посекторное чтение. SDIO. FATFS
СообщениеДобавлено: 11 фев 2015, 17:03 
Старожил

Зарегистрирован: 11 сен 2012, 11:19
Сообщения: 5650
21-st писал(а):
Но как записать из буфера в файл???


Так и пиши. Hold уже озвучил функцию.http://microsin.net/programming/file-sy ... -file.html
Код:
FRESULT f_write (
  FIL* fp,          /* [IN] Pointer to the file object structure */
  const void* buff, /* [IN] Pointer to the data to be written */
  UINT btw,         /* [IN] Number of bytes to write */
  UINT* bw          /* [OUT] Pointer to the variable to return number of bytes written */
);

Свой буфер целиком и гони, если обработка не нужна.

Только сначала надо тебе научиться с FatFS работать.
Как монтировать, открывать и писать файлы.

Hold ,он с одного носителя в секторах читает, а на другой в файл пишет.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: SD карта. Посекторное чтение. SDIO. FATFS
СообщениеДобавлено: 11 фев 2015, 17:10 
Старожил

Зарегистрирован: 16 ноя 2012, 07:47
Сообщения: 2859
извиняюсь, если так, как-то упустил что там две карточки используются.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: SD карта. Посекторное чтение. SDIO. FATFS
СообщениеДобавлено: 11 фев 2015, 17:12 
Старожил
Аватара пользователя

Зарегистрирован: 18 май 2013, 20:43
Сообщения: 4270
Откуда: Кемеровская область, Киселевск
Даже если две и что такого, пусть по 512 читает и делает че хочет с буфером, голову греет больше.

_________________
RADIOWOLF.RU


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: SD карта. Посекторное чтение. SDIO. FATFS
СообщениеДобавлено: 25 мар 2015, 11:40 
Только пришел

Зарегистрирован: 11 фев 2015, 12:11
Сообщения: 10
2,5 млн секторов считывается, и записывается в файл на другую флешку.
Но это длится почти 3 часа!!! Как сделать быстрее???
Могу приложить исходник если нужно, приму советы/рекомендации.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: SD карта. Посекторное чтение. SDIO. FATFS
СообщениеДобавлено: 30 апр 2015, 19:19 
Старожил

Зарегистрирован: 07 авг 2014, 17:15
Сообщения: 383
Откуда: дальнее надмосковье
21-st писал(а):
2,5 млн секторов считывается, и записывается в файл на другую флешку.
Но это длится почти 3 часа!!! Как сделать быстрее???
Могу приложить исходник если нужно, приму советы/рекомендации.


2,5 млн секторов это вам 1220 МБ информации, получается у вас скорость 113 КБ/сек на чтение+запись, что в принципе можно немного улучшить по-моему если у вас быстрый камень.


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 21 ] 

Часовой пояс: UTC + 5 часов


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  

Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB