|
Помогите подобрать файловую систему для microsd |
|
|
|
Nov 25 2008, 07:49
|
Гуру
     
Группа: Свой
Сообщений: 2 702
Регистрация: 14-07-06
Пользователь №: 18 823

|
Цитата(Paulina @ Nov 24 2008, 21:21)  Это так, но если данные идут непрерывно, без дефрагментации то можно просто установить размер блока данных, скажем 64 кБ и принимать их непрерывно Конечно, Paulina, только можно ли это назвать полноценной файловой системой? Цитата(sergeeff @ Nov 24 2008, 23:55)  Ну посмотрите хоть, перед тем как свой огород городить. Коллега, на AVR скорость fatfs около 300 кб/c, поэтому вопрос быстрее она efsl или нет, второстепенный, поскольку автору нужно больше, насколько я помню начало топика.
--------------------
Уходя, оставьте свет...
|
|
|
|
|
Nov 25 2008, 13:55
|
Участник

Группа: Участник
Сообщений: 35
Регистрация: 18-05-08
Пользователь №: 37 607

|
Цитата(Dog Pawlowa @ Nov 25 2008, 10:49)  Конечно, Paulina, только можно ли это назвать полноценной файловой системой?  разумеется, нет, но в первом сообщении указывалось, что: Цитата Задачи самые скромные - только читать какой-нибудь файл. Не будет никаких каталогов - просто в корневом будет около 100 файлов
|
|
|
|
|
Nov 25 2008, 15:18
|
Профессионал
    
Группа: Свой
Сообщений: 1 481
Регистрация: 10-04-05
Пользователь №: 4 007

|
Цитата(Dog Pawlowa @ Nov 25 2008, 11:49)  Конечно, Paulina, только можно ли это назвать полноценной файловой системой? Коллега, на AVR скорость fatfs около 300 кб/c, поэтому вопрос быстрее она efsl или нет, второстепенный, поскольку автору нужно больше, насколько я помню начало топика. Так надо сначала написать процедуру чтения сектора и замерить скорость чтения/записи n-секторов подряд и в произвольном порядке. После этого будет понятно, что является узким местом, вся организация доступа через FAT или чтение сектора. Я подобное проделывал с efsl, там накладные расходы от fat не превышали 10%.
|
|
|
|
|
Nov 25 2008, 16:19
|
Участник

Группа: Участник
Сообщений: 35
Регистрация: 18-05-08
Пользователь №: 37 607

|
Цитата(sergeeff @ Nov 25 2008, 18:18)  Так надо сначала написать процедуру чтения сектора и замерить скорость чтения/записи n-секторов подряд и в произвольном порядке. После этого будет понятно, что является узким местом, вся организация доступа через FAT или чтение сектора. Я подобное проделывал с efsl, там накладные расходы от fat не превышали 10%. эффективность тем больше чем больше блок данных. если данные будут только транслироваться, то зачем ограничивать блок размером сектора, который всего 512 байт?
|
|
|
|
|
Nov 8 2009, 17:22
|
Группа: Участник
Сообщений: 5
Регистрация: 23-10-09
Пользователь №: 53 173

|
Пытаюсь прочесть хоть что-то с SD карты, чтобы понять, что все как-то работает и можно идти дальше, но карта отвечает только 0xFF (т.е. ничего), а программа ниже печатает только точки... В чем может быть дело, нет мыслей? Работаю с 8051 архитектурой и пока с программным SPI, фрагмент кода привожу ниже... Может, что-то не так с начальными установками уровней? Код deselect(); // Снять CS --> 1 for (i=0; i<10; ++i) wr_spi_msb(0x00); // Выдать >72 CLK for (i=0; i<10; ++i) // some delay, нужно ли? DATA = 0; // Начальный уровень на входе CMD карты
//========Сброс карты=============== select(); // Выдать CS_SD_Card --> 0 do { wr_spi_msb(0х40); // SD card CMD_0="CMD_GO_IDLE_STATE" - write byte MSB first via DATA pin wr_spi_msb(0); // Argument = 0 wr_spi_msb(0); // Argument = 0 wr_spi_msb(0); // Argument = 0 wr_spi_msb(0); // Argument = 0 wr_spi_msb(0x95); // Send CRC
for (i=0; i<8; ++i) // read card response R1 { card_status = rd_spi_READY_msb(); // прочесть байт из SD карты на ножке READY MSB first if (card_status != 0xFF) break; put_ch('.'); } } while (card_status != 0x01);
deselect(); // Снять CS --> 1 put_ch('x');
Причина редактирования: Оформление цитаты исходника.
|
|
|
|
|
Nov 9 2009, 17:17
|
Участник

Группа: Участник
Сообщений: 35
Регистрация: 18-05-08
Пользователь №: 37 607

|
Цитата(inlog @ Nov 8 2009, 21:22)  Пытаюсь прочесть хоть что-то с SD карты, чтобы понять, что все как-то работает и можно идти дальше, но карта отвечает только 0xFF (т.е. ничего), а программа ниже печатает только точки... В чем может быть дело, нет мыслей? Работаю с 8051 архитектурой и пока с программным SPI, фрагмент кода привожу ниже... Может, что-то не так с начальными установками уровней?  А spi правильно настроен? полярность, фазировка клока sck? В начале перед отправкой cmd0 попробуйте пустой байт (0xff) отправить. Еще уберите put_ch('.') из внутреннего цикла (а лучше совсем). Опять же функции работы с spi неизвестно какие.
Сообщение отредактировал Paulina - Nov 9 2009, 17:19
|
|
|
|
|
Nov 11 2009, 18:39
|
Группа: Участник
Сообщений: 5
Регистрация: 23-10-09
Пользователь №: 53 173

|
Спасибо, все заработало - проблема банальна, неконтакт в разъеме (не родном) для SD ))) Еще понизил скорость SPI, а то резистивный делитель 5В-->3.3V даже с коротким кабелем ужасно валит фронты, а микросхемы преобразователя уровней пока не нашел подходящего и доступного (
Вопрос пока чисто теоретический на будущее (не нашел ответ в доках), если кто пробовал - а можно ли объединить SD pins IN и OUT проводным ИЛИ, чтобы работать с карточкой по одной двунаправленной шине данных при программном SPI ?
|
|
|
|
|
Nov 15 2009, 20:28
|
Группа: Участник
Сообщений: 5
Регистрация: 23-10-09
Пользователь №: 53 173

|
Цитата(Mik174 @ Nov 12 2009, 02:38)  Посмотрите в сторону контроллера LPC2378. Спасибо! У меня задача обновить старую 5V разработку, где в кач-ве внешней памяти были PCMCIA-карты, а прикручиваю SD. Все пока работает в прототипе на hrdw уровне, проблема только найти (розница для прототипа) преобразователи уровней. Пока поставил для 5В->3В NC7SZ125 (запитка от 3.3В), а данные 3В от SD подаю в 5В контроллер напрямую (
|
|
|
|
|
Nov 17 2009, 10:21
|

Участник

Группа: Свой
Сообщений: 72
Регистрация: 10-02-05
Из: Краснодар
Пользователь №: 2 558

|
Цитата(inlog @ Nov 15 2009, 23:28)  Спасибо! У меня задача обновить старую 5V разработку, где в кач-ве внешней памяти были PCMCIA-карты, а прикручиваю SD. Все пока работает в прототипе на hrdw уровне, проблема только найти (розница для прототипа) преобразователи уровней. Пока поставил для 5В->3В NC7SZ125 (запитка от 3.3В), а данные 3В от SD подаю в 5В контроллер напрямую ( Из 3 в 5 можно 74act/ahct(hct) серию попробовать, из 5 в 3 - 74lcx наример. А не проще CF в режиме PCMCIA попробовать было (вроде должно поддерживать) ?
Сообщение отредактировал Ronin - Nov 17 2009, 10:31
|
|
|
|
|
Nov 24 2009, 17:54
|
Группа: Участник
Сообщений: 5
Регистрация: 23-10-09
Пользователь №: 53 173

|
чтобы не создавать новой темки, спрошу тут - железки работают, взял Chan's FATFS lib, после шаманства с некоторыми переменными и текстом скомпилился без ошибок в Keil, но : у меня Р89V51RD2 и всего 1КВ RAM, а скомпиленная по умолчанию библиотека занимает более 1К. В основном за счет того, что буфер 512КВ объявлен 2 раза - мною в main и внутри одной из процедур библиотеки как рабочий... Хватит ли в логике работы с FAT всего одного буфера при работе с одним драйвом и не объявить ли его Global, например, и убрать из нутра функции? А то оверлаппинг не помогает.
|
|
|
|
|
Nov 24 2009, 19:11
|
Группа: Участник
Сообщений: 5
Регистрация: 23-10-09
Пользователь №: 53 173

|
Цитата(inlog @ Nov 24 2009, 20:54)  оверлаппинг не помогает.  Sorry, похоже сам виноват, буфер всего один ( Только все равно в 1КВ уложить не могу пока с ф-циями записи ((((( Кроме как чистить ненужные функции (типа перименования файлов и еще кое что...) мыслей нет
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|