[STM32Generic] SDIO DMA

victor_pv
Солнце 30 апреля 2017 г. 11:25
Похоже, что добавление DMA в библиотеку SDIO не должно быть намного сложнее, чем добавление его в SPI.
Теперь у моей доски F407 нет слота SDCARD, поэтому я еще не тестировал текущий SDIO.
Может ли кто -нибудь подтвердить, что все работает нормально с текущим SDIO с F4 и библиотекой SDFAT?
Если это так, какие изменения необходимы, чтобы заставить его работать с текущей библиотекой SDIO?

Я хотел бы настроить его, чтобы я мог добавить DMA в SDIO и проверить его.

Обновлять:
Даниэль уже указал на пример в этом посте:
ViewTopic.PHP?F = 42&T = 1966&P = 27197&hilit = sdfat#p27197

Добавление здесь для тех, кто задается вопросом, работает ли SDIO с SDFAT. В папке есть 2 файла, необходимые и комментарии в .INO -файл объясните, что нужно сделать в библиотеке SDFAT.
Я посмотрю, смогу ли я сработать это сегодня позже, и если да, обратитесь к DMA и посмотрю, что произойдет. Я отправлю результаты.

Обновление2:
Эта ветвь содержит мои последние файлы SDIO. Остальная часть ядра в этом филиале не синхронизирована с Даниэлем, поэтому я бы порекомендовал просто загрузить файлы SDIO:
https: // github.com/Victorpv/stm32generi ... DMA-Latest

Обновление 19.05.17:
Новая мусорная корзина с использованием последней F4 HAL.
F407VET, DMA, SDIO 4B, 512BYTES Buffer Bench Test.
Скачать/файл.PHP?ID = 1611

Обновление 25.05.17:
Моя последняя рабочая версия + последнее ядро ​​Даниэля HAL
https: // github.com/Victorpv/stm32generic/tree/fw-update

AG123
Пн, 1 мая 2017 г., 11:00 утра
Соответственно, SDIO сильно отличается от SPI, те же самые выводы также назначаются по -разному, и используются больше контактов e.глин. использует контакты D0: D3 на SD -карте
сделал немного Google и нашел следующие ссылки

https: // Сообщество.ул.com/thread/30654
https: // github.com/hexanaft/stm32f4-dis ... SDIO-FATFS
http: // www.ул.com/resource/en/product_t ... _sdmmc.PDF
http: // www.Digitalspirit.org/file/index ... Icrosd.PDF

Надеюсь, мы сможем найти реализацию HAL для «физического» слоя SDIO, я.эн. Аппаратное обеспечение делает все это взаимодействие
Тогда нам нужно найти крючки, чтобы связать SDFAT или, вернее, FATFS в интерфейс SDIO HAL

victor_pv
Ср 10 мая 2017 г. 20:48
Просто обновление, я взял файлы SDIO Даниэля и добавил еще несколько функций, которые были в файлах подростков и были необходимы для теста на скамье, так что, надеюсь.
Мне все еще нужно проверить и ошибаться, мы увидим, где мы получим...
Если это работает, затем добавляет возможности DMA.

Стивестронг
Ср 10 мая 2017 г. 9:19 вечера
Виктор, я мог бы проверить на плате Black F4 любой файл бин, который вы публикуете здесь, вывод на сериал 1 или USB.

victor_pv
Чт 11 мая 2017 г., 4:37
Стивестронг написал:Виктор, я мог бы проверить на плате Black F4 любой файл бин, который вы публикуете здесь, вывод на сериал 1 или USB.

victor_pv
Пт 12 мая 2017 г. 15:40
Еще одно обновление.
Я получил SDIO, работающий с DMA в F4, еще не пробовал F1.
Производительность сейчас такое же, как и без DMA (разочаровывает, но может быть связано с SDCARD).
Далее приходите:
Попытка выяснить, почему режим шириной 4 бит на самом деле не происходит.
Поскольку для библиотеки SDFAT существует режим SDIOEX, обнаружение, если это повышает производительность в той же степени, что и в SPI.
Тестирование на других сериях.

Пито
Пт 12 мая 2017 г., 17:55
Какой сериал вы используете с приведенным выше файлом тестирования бин? A: USB -сериал
Сандиск 16 ГБ ультра Manufacturing date: 5/2134 File size 5 MB Buffer size 512 bytes Starting write test, please wait. write speed and latency speed,max,min,avg KB/Sec,usec,usec,usec 413.44,18504,943,1237 413.27,18861,942,1238 Starting read test, please wait. read speed and latency speed,max,min,avg KB/Sec,usec,usec,usec 1999.07,540,252,255 1999.87,516,252,255

victor_pv
Пт 12 мая 2017 г., 18:23
Пито написал:Какой сериал вы используете с приведенным выше файлом тестирования бин? A: USB -сериал
Сандиск 16 ГБ ультра Manufacturing date: 5/2134 File size 5 MB Buffer size 512 bytes Starting write test, please wait. write speed and latency speed,max,min,avg KB/Sec,usec,usec,usec 413.44,18504,943,1237 413.27,18861,942,1238 Starting read test, please wait. read speed and latency speed,max,min,avg KB/Sec,usec,usec,usec 1999.07,540,252,255 1999.87,516,252,255

Пито
Пт 12 мая 2017 г., 18:42
Я сомневаюсь, что мы получим SDIO, похожие на скорости с большим буфером 512 бит. Не могли бы вы создать .корзина с большим буфером 32 КБ??
Я ожидаю 8-10 МБ/с с большим буфером SDIO и F407 и 32KB.
5-6y Back Я провел тестирование SDIO с Chibios - я получил около 6 МБ/с с буфером 32 КБ и около 400 кб/с с 512B, Afik.
Кстати, SDIO является местным интерфейсом для SDCards с тех пор, как SPI - это просто «опция», все поставщики поддерживают, к счастью, :)

victor_pv
Пт 12 мая 2017 г. 18:44
Пито написал:Я сомневаюсь, что мы получим SDIO, похожие на скорости с большим буфером 512 бит. Не могли бы вы создать .корзина с большим буфером 32 КБ??
Я ожидаю 8-10 МБ/с с большим буфером SDIO и F407 и 32KB.
Кстати, SDIO является местным интерфейсом для SDCards с тех пор, как SPI - это просто «опция», все поставщики поддерживают, к счастью, :)

Пито
Пт 12 мая 2017 г. 18:48
Use a freshly formatted SD for best performance. Type any character to start FreeStack: 93351

Стивестронг
Пт 12 мая 2017 г. 18:58
Нельзя ли сочетать с SDIO с SDFATБЫВШИЙ?

victor_pv
Пт 12 мая 2017 г., 19:02
Стивестронг написал:Нельзя ли сочетать с SDIO с SDFATБЫВШИЙ?

Пито
Пт 12 мая 2017 г., 19:10
У меня была дискуссия с Билгом на SDIO и что он указал: ..На Teensy 3.6 Ошибки предотвратили использование DMA в режиме EX.
Teensy 3.6 имеет 512 байта FIFO в контроллере SDIO, поэтому я использовал программу ввода -вывода.
Обратите внимание на Teensy 3.6 результатов по размеру буфера 512 байтов. Напишите: DMA 598 KB/SEC, EX MODE FIFO 18820 KB/SEC..

victor_pv
Пт 12 мая 2017 г., 19:16
Пито написал:У меня была дискуссия с Билгом и то, что он указал: ..На Teensy 3.6 Ошибки предотвратили использование DMA в режиме EX.
Teensy 3.6 имеет 512 байта FIFO в контроллере SDIO, поэтому я использовал программу ввода -вывода.
Обратите внимание на Teensy 3.6 результатов по размеру буфера 512 байтов. Напишите: DMA 598 KB/SEC, EX MODE FIFO 18820 KB/SEC..

Пито
Пт 12 мая 2017 г., 19:30
С моими вышеупомянутыми результатами: у меня есть 4 -битный сокет SDIO на черном F407, и я получил 4.Написать 7 МБ/с (с максимальной задержкой 250 мс!) и 10 МБ/с прочитаны со старой картой 8Y.
Итак, с хорошей картой это может быть 68/10 МБ/с. Это близко к ожидаемому максимуму при 24 МГц часы SDIO.
Но все еще есть беспорядок с чтением информационных данных SDCARD, так что, возможно, это должно быть исправлено сначала.
EX -режим может быть нелегко работать, и выигрыш будет нет быть высоким с 24 МГц часами SDIO. РЕДАКТИРОВАТЬ: Это может быть «высоким», когда вы получаете 8/10 МБ/с с большим буфером 512B :)
Результаты вышеуказанного счета приведены с часами SDIO 50 МГц, конечно.
Обновление: Здесь после нескольких пробежек со старым CL4 Sandisk 4GB: File size 5 MB Buffer size 32768 bytes Starting write test, please wait. write speed and latency speed,max,min,avg KB/Sec,usec,usec,usec 8662.15,9753,3554,3767 8165.14,13336,3555,3995 Starting read test, please wait. read speed and latency speed,max,min,avg KB/Sec,usec,usec,usec 10333.48,3523,3143,3169 10333.48,3524,3140,3168

victor_pv
Пт 12 мая 2017 г., 19:49
Пито написал:С моими вышеупомянутыми результатами: у меня есть 4 -битный сокет SDIO на черном F407, и я получил 4.Написать 7 МБ/с (с максимальной задержкой 250 мс) и 10 МБ/с прочитана с старой картой 8Y.
Итак, с хорошей картой это может быть 68/10 МБ/с. Это близко к ожидаемому максимуму при 24 МГц часы SDIO.
Но все еще есть беспорядок с чтением информационных данных SDCARD, так что, возможно, это должно быть исправлено сначала.
EX -режим может быть нелегко работать, и выигрыш будет нет быть высоким с 24 МГц часами SDIO. РЕДАКТИРОВАТЬ: Это может быть «высоким», когда вы получаете 8/10 МБ/с с большим буфером 512B :)
Результаты вышеуказанного счета приведены с часами SDIO 50 МГц, конечно.
Обновление: Здесь после нескольких пробежек со старым CL4 Sandisk 4GB: File size 5 MB Buffer size 32768 bytes Starting write test, please wait. write speed and latency speed,max,min,avg KB/Sec,usec,usec,usec 8662.15,9753,3554,3767 8165.14,13336,3555,3995 Starting read test, please wait. read speed and latency speed,max,min,avg KB/Sec,usec,usec,usec 10333.48,3523,3143,3169 10333.48,3524,3140,3168

AG123
Пт 12 мая 2017 г. 9:15 вечера
вау достигает 5 цифр (минимум 80 Мбит / с!), это дует большинство тестов & Вам понадобился USB 2.0 Высокоскоростной Ulpi, если вы хотите отправить данные на ПК (я думаю, что даже Ethernet 100 Мбит / с может быть недостаточно с накладными расходами) :ржу не могу:
http: // www.eBay.com/sch/i.HTML?_odkw = ul ... 0&_SACAT = 0

Со скоростью мы идем 1 день, мы транслировали HD -видео на разъеме HDMI (Гбит / с) :ржу не могу:

Пито
Пт 12 мая 2017 г., 21:42
AG123 написал:вау достигает 5 цифр (минимум 80 Мбит / с!)..

AG123
Пт 12 мая 2017 г. 22:01
Тогда кажется, что мы «достигли предела», может быть, APB1 составляет 42 МГц, поэтому предполагая, что мы можем принять при 21 Мбит / с на контакт 21x4 = 84 Мбит / с ~ 10 Мбит / с :ржу не могу:

Пито
Пт 12 мая 2017 г. 22:01
@victor - с моим CL10 uhs -i samsung он останавливается после FreeStack. Кажется, он не может распознать другой тип карты, чем CL4.. Так что есть проблема в SDCard Init, вероятно,..

victor_pv
Пт 12 мая 2017 г. 22:51
Пито написал:@victor - с моим CL10 uhs -i samsung он останавливается после FreeStack. Кажется, он не может распознать другой тип карты, чем CL4.. Так что есть проблема в SDCard Init, вероятно,..

Пито
Сб 13 мая 2017 г. 8:38 утра
Первая и вторая корзина то же самое - информация карты не читается должным образом.
Я пробовал с Samsung 8 ГБ и 16 ГБ, оба Evo CL10, UHS-I. Информация - это мусор, и она не запускает скамейку.
С Sandisk CL4 Информация о карте тоже мусор, но она выполняет эталон, как указано выше.

AG123
Сб 13 мая 2017 г., 10:22
Ой, надеюсь, не «мусор в мусоре» на 10 Мбит / с :ржу не могу:

Пито
Сб 13 мая 2017 г., 22:30
Эта настройка OK в SDIO.CPP? hsd.Init.ClockDiv = 0; // <<<<< should be max 400kHz error = HAL_SD_Init(&hsd, &SDCardInfo); if (error != SD_OK) { return false; }

victor_pv
Солнце 14 мая 2017 г. 12:28
Пито написал:Эта настройка OK в SDIO.CPP? hsd.Init.ClockDiv = 0; // <<<<< should be max 400kHz error = HAL_SD_Init(&hsd, &SDCardInfo); if (error != SD_OK) { return false; }

Пито
Солнце 14 мая 2017 г. 7:56 утра
При отладке вашего HAL_SD_INIT () я вижу все данные CID, считываемые с SDCARD в SDCARDINFO.Структура SD_CID верна (по крайней мере, я вижу правильную информацию внутри структуры).
«Информация» внутри этого »Sdcardinfo.Структура SD_CID идентична информации CID, распечатанной SDFAT Bench Run с SPI для данной карты.
Мне кажется, что «преобразование/картирование» между вашей структурой SD_CID и таблицей SDFAT «CID» в SDIO.У CPP есть ошибка, однако.. bool SDIOClass::readCID(void* cid) { memcpy(cid, &SDCardInfo.SD_cid, 16); return true; }

Пито
Солнце 14 мая 2017 г. 15:32
Печать CID SDIO тоже показывает хорошие результаты bool SDIOClass::readCID(void* cid) { memcpy(cid, &hsd.CID, 16); //&SDCardInfo.SD_cid, 16); Serial.println(hsd.CID[0], HEX); Serial.println(hsd.CID[1], HEX); Serial.println(hsd.CID[2], HEX); Serial.println(hsd.CID[3], HEX); return true; }

victor_pv
Солнце 14 мая 2017 г. 16:00
Пито написал:Печать CID SDIO тоже показывает хорошие результаты bool SDIOClass::readCID(void* cid) { memcpy(cid, &hsd.CID, 16); //&SDCardInfo.SD_cid, 16); Serial.println(hsd.CID[0], HEX); Serial.println(hsd.CID[1], HEX); Serial.println(hsd.CID[2], HEX); Serial.println(hsd.CID[3], HEX); return true; }

Стивестронг
Солнце 14 мая 2017 г., 17:55
ProdName1 из первого изображения uint32_t (4 байта), соответствующий PNM со второй картинки - char [5] (5 байтов).
Разве это не несоответствие?

Пито
Солнце 14 мая 2017 г. 18:09
Мануфид - 0x3
OEMID - это "SD" для Сандиска
Rev - 0x80 = 8.0
Prodname = prodname1 + prodname2 = 5bytes = "su04g"
Производство 0xc7 = 12 + 7 = июль/2012

@Victor: я смотрел CSD, и он показал 50 максимальной скорости. Карта Sandisk CL4 4GB (она выполняет 8 МБ/с записи! В то время как Макс 4). И поскольку карты Samsung CL10 еще не проходят инициируют, кажется, что типы карт каким -то образом изменили типы карт.

Стивестронг
Солнце 14 мая 2017 г. 18:19
Тогда кажется, что выравнивание элемента этих двух массивов отличается, поэтому использовать Memcpy не делает то, что можно было бы ожидать.
Просто проверьте размеры этих массивов.

AG123
Солнце 14 мая 2017 г. 22:06
ОТ: Ого, эта слайды на SD -карте довольно «технически», но она читается почти так же захватывающе, как роман Spy Suspense Thriller :ржу не могу:
http: // bunniefoo.com/bunnie/sdcard-30c3-pub.PDF

victor_pv
Пн 15 мая 2017 г., 4:21
Стивестронг написал:ProdName1 из первого изображения uint32_t (4 байта), соответствующий PNM со второй картинки - char [5] (5 байтов).
Разве это не несоответствие?

Пито
Пн 15 мая 2017 г., 7:43
И CID, и CSD столики длиной 16 байтов. SDFAT или HAL читает их как 16 -бит длиной во время карты.
Таблицы упакованы без прокладки.

SDFAT отображает структуру «CID» на таблицу CID, такая информация доступна через CID.xyz.
HAL делает то же самое через структуру "SD_CID".

Настройка внутренних типов HAL в структуре картирования CID/CSD отличается от одной SDFAT, но полученная «извлеченная» информация такая же, как и базовая таблица CID/CID в длину 16bytes.
Итак, Memcpy должен работать.

Как вы можете увидеть выше, кажется, что структура "CID" SDFAT каким -то образом разбивается.

Стивестронг
Пн 15 мая 2017 г. 8:37 утра
Стивестронг написал:Тогда кажется, что выравнивание элемента этих двух массивов отличается, поэтому использовать Memcpy не делает то, что можно было бы ожидать.
Просто проверьте размеры этих массивов.

Пито
Пн 15 мая 2017 г., 11:28
Здесь
http: // www.STM32duino.com/viewtopic.PHP ... = 20#p28025
Я мемокопировал "HSD.CID ", который является сырой таблицей CID, в" CID "SDFAT.
Я распечатал HSD.CID Content также.
«CID» SDFAT по -прежнему нарушен (но по -разному).
PS: Обратите внимание на некоторые из элементов CID -таблицы SDFAT, отображаемых с Nibbles CID.

Пито
Пн 15 мая 2017 г. 12:07
Я добавил печать из CID/CSD в SDFAT SDSPICARD.CPP: /** read CID or CSR register */ bool SdSpiCard::readRegister(uint8_t cmd, void* buf) { .. if (!readData(dst, 16)) { goto fail; } // ##Pito - printing out the CID/CSD int i; for (i=0; i<16; i++){ Serial.print(dst[i],HEX); Serial.print("-"); } Serial.println(); ..

Пито
Пн 15 мая 2017 г. 12:30
И та же карта с SDIO (F407) во время выполнения bool SDIOClass::readCID(void* cid) { memcpy(cid, &hsd.CID, 16); //&SDCardInfo.SD_cid, 16); Serial.println(hsd.CID[0], HEX); Serial.println(hsd.CID[1], HEX); Serial.println(hsd.CID[2], HEX); Serial.println(hsd.CID[3], HEX); return true; }

Пито
Пн 15 мая 2017 г. 12:56
И CID распечатана в SDIO с той же рутиной, что и с SPI bool SDIOClass::readCID(void* cid) { memcpy(cid, &SDCardInfo.SD_cid, 16); // ##Pito - printing out the CID/CSD int i; char *buf = (char*)(cid); for (i=0; i<16; i++){ Serial.print(buf[i],HEX); Serial.print("-"); } Serial.println(); return true; }

Пито
Пн 15 мая 2017 г. 13:01
CID распечатана в версии SPI (правильная) 3-53-44-53-55-30-34-47-80-2-F1-B6-DF-0-C7-69- <<<<<<< CID

Стивестронг
Пн 15 мая 2017 г. 13:05
Вы добавили прагму "__attribute __ (((упакован))" в структуру CID в SDIO?
Кроме того, будьте в курсе Endianess при преобразовании UIN32_T в массив [n].
Вы можете легко проверить несоответствие структуры, распечатав «sizeof (cid_struct)» как для SPI, так и для SDIO.

Пито
Пн 15 мая 2017 г. 13:24
Здесь я копирую HSD.CID (SDIO), который является сырой таблицей 16BYTES: ool SDIOClass::readCID(void* cid) { memcpy(cid, &hsd.CID, 16); // ##Pito - printing out the CID/CSD int i; char *bufs = (char*) hsd.CID; for (i=0; i<16; i++){ Serial.print(bufs[i],HEX); Serial.print("-"); } Serial.println(); char *bufd = (char*)(cid); for (i=0; i<16; i++){ Serial.print(bufd[i],HEX); Serial.print("-"); } Serial.println(); return true; }

Стивестронг
Пн 15 мая 2017 г. 13:36
Memcpy и Byte-Byte Копирование должно быть, конечно, идентична, что также демонстрируется вашим тестом.

Но проблема в том, какой параметр вы используете с функцией sdio :: readcid ().

Если структура, из которой проходит указатель, не является «упакованной» и имеет другое распределение байтов, чем структура SPI -CID, то у вас есть эта проблема.
Чтобы иметь входной параметр void -указатель может быть опасным, когда указатели указывают на разные структуры данных.

Стивестронг
Пн 15 мая 2017 г. 13:44
Изменение источника и пункта назначения?
void * memcpy ( void * destination, const void * source, size_t num );

Пито
Пн 15 мая 2017 г. 13:45
С /** @defgroup SD_Exported_Types_Group3 Card Identification Data: CID Register * @{ */ typedef struct { __IO uint8_t ManufacturerID; /*!< Manufacturer ID */ __IO uint16_t OEM_AppliID; /*!< OEM/Application ID */ __IO uint32_t ProdName1; /*!< Product Name part1 */ __IO uint8_t ProdName2; /*!< Product Name part2 */ __IO uint8_t ProdRev; /*!< Product Revision */ __IO uint32_t ProdSN; /*!< Product Serial Number */ __IO uint8_t Reserved1; /*!< Reserved1 */ __IO uint16_t ManufactDate; /*!< Manufacturing Date */ __IO uint8_t CID_CRC; /*!< CID CRC */ __IO uint8_t Reserved2; /*!< Always 1 */ } __attribute__((packed)) HAL_SD_CIDTypedef;

Стивестронг
Пн 15 мая 2017 г. 13:47
Эндианс из
uint32_t char [4]
и
uint32_t+uint8 для char [5]

Пито
Пн 15 мая 2017 г. 13:54
Теперь - где внести изменения??
В HAL или в SDFAT??
Или мы можем использовать элемент по копии элемента вместо memcpy..
Такая же проблема может быть мы, другие таблицы, т.е. CSD.
Также HAL_SD_CSDTYPEDEF..

victor_pv
Пн 15 мая 2017 г. 13:56
Пито написал:И CID распечатана в SDIO с той же рутиной, что и с SPI bool SDIOClass::readCID(void* cid) { memcpy(cid, &SDCardInfo.SD_cid, 16); // ##Pito - printing out the CID/CSD int i; char *buf = (char*)(cid); for (i=0; i<16; i++){ Serial.print(buf[i],HEX); Serial.print("-"); } Serial.println(); return true; }

Пито
Пн 15 мая 2017 г. 14:06
1. CID - оригинальный Memcpy приводит к беспорядку, потому что
а. таблица HAL не упакована
беременный. «Эндианесс» - или лучше сказать, что SDFAT интерпретирует/распечатывает Uint16/32/Strings с другого конца :)

2. CSD - я еще не разработал его, но
а. таблица HAL не упакована
беременный. Таблица HAL составляет около 41 бит
в. «Эндианса» - или лучше сказать, что SDFAT может интерпретировать/распечатать Uints16/32/Strings с другого конца :)

Мне кажется, что копия с трансформацией понадобится в SDIO.час :(

Необработанные данные доступны в HSD.CID [] и, вероятно, HSD.CSD [] в SDIO.

victor_pv
Пн 15 мая 2017 г. 14:22
Пито написал:1. CID - оригинальный Memcpy приводит к беспорядку, потому что
а. таблица HAL не упакована
беременный. «Эндианесс» - или лучше сказать, что SDFAT интерпретирует/распечатывает Uint16/32/Strings с другого конца :)

2. CSD - я еще не разработал его, но
а. таблица HAL не упакована
беременный. Таблица HAL составляет около 41 бит
в. «Эндианса» - или лучше сказать, что SDFAT может интерпретировать/распечатать Uints16/32/Strings с другого конца :)

Мне кажется, что копия с трансформацией понадобится в SDIO.час :(

Необработанные данные доступны в HSD.CID [] и, вероятно, HSD.CSD [] в SDIO.

Пито
Пн 15 мая 2017 г. 15:46
Это то, что работает: #define SWAP_UINT32(x) (((x)>>24) | (((x) & 0x00FF0000)>>8) | (((x) & 0x0000FF00)<<8) | ((x)<<24)) bool SDIOClass::readCID(void* cid) { // Pito 5/2017 cid_t* cidi = reinterpret_cast(cid); cidi->mid = SDCardInfo.SD_cid.ManufacturerID; cidi->oid[0] = SDCardInfo.SD_cid.OEM_AppliID >> 8; cidi->oid[1] = SDCardInfo.SD_cid.OEM_AppliID; cidi->pnm[0] = SDCardInfo.SD_cid.ProdName1 >> 24; cidi->pnm[1] = SDCardInfo.SD_cid.ProdName1 >> 16; cidi->pnm[2] = SDCardInfo.SD_cid.ProdName1 >> 8; cidi->pnm[3] = SDCardInfo.SD_cid.ProdName1; cidi->pnm[4] = SDCardInfo.SD_cid.ProdName2; cidi->prv_n = (SDCardInfo.SD_cid.ProdRev >> 4) & 0xF; cidi->prv_m = (SDCardInfo.SD_cid.ProdRev) & 0xF; cidi->psn = SWAP_UINT32(SDCardInfo.SD_cid.ProdSN); cidi->mdt_year_high = (SDCardInfo.SD_cid.Reserved1) & 0xF; cidi->mdt_year_low = (SDCardInfo.SD_cid.ManufactDate >> 4) & 0xF; cidi->mdt_month = (SDCardInfo.SD_cid.ManufactDate) & 0xF; cidi->crc = (SDCardInfo.SD_cid.CID_CRC >> 7) & 0x7F; return true; }

Пито
Пн 15 мая 2017 г. 15:58
В Teensy Bill делает: //----------------------------------------------------------------------------- // Read 16 byte CID or CSD register. static bool readReg16(uint32_t xfertyp, void* data) { uint8_t* d = reinterpret_cast(data); if (!cardCommand(xfertyp, m_rca)) { return false; // Caller will set errorCode. } uint32_t sr[] = {SDHC_CMDRSP0, SDHC_CMDRSP1, SDHC_CMDRSP2, SDHC_CMDRSP3}; for (int i = 0; i < 15; i++) { d[14 - i] = sr[i/4] >> 8*(i%4); } d[15] = 0; return true; }

Пито
Пн 15 мая 2017 г. 16:54
Еще один оптимизирован :) версия, которая также работает: #define SWAP_UINT32(x) (((x)>>24) | (((x) & 0x00FF0000)>>8) | (((x) & 0x0000FF00)<<8) | ((x)<<24)) bool SDIOClass::readCID(void* cid) { // Pito 5/2017 uint32_t s[4]; s[0] = SWAP_UINT32(hsd.CID[0]); s[1] = SWAP_UINT32(hsd.CID[1]); s[2] = SWAP_UINT32(hsd.CID[2]); s[3] = SWAP_UINT32(hsd.CID[3]); //Serial.println(s[0], HEX); //Serial.println(s[1], HEX); //Serial.println(s[2], HEX); //Serial.println(s[3], HEX); memcpy(cid, &s, 16); //&SDCardInfo.SD_cid, 16); return true; } bool SDIOClass::readCSD(void* csd) { // Pito 5/2017 uint32_t s[4]; s[0] = SWAP_UINT32(hsd.CSD[0]); s[1] = SWAP_UINT32(hsd.CSD[1]); s[2] = SWAP_UINT32(hsd.CSD[2]); s[3] = SWAP_UINT32(hsd.CSD[3]); //Serial.println(hsd.CSD[0], HEX); //Serial.println(hsd.CSD[1], HEX); //Serial.println(hsd.CSD[2], HEX); //Serial.println(hsd.CSD[3], HEX); memcpy(csd, &s, 16); //&SDCardInfo.SD_csd, 16); return true; }

victor_pv
Пн 15 мая 2017 г., 17:23
Пито написал:Еще один оптимизирован :) версия, которая также работает: #define SWAP_UINT32(x) (((x)>>24) | (((x) & 0x00FF0000)>>8) | (((x) & 0x0000FF00)<<8) | ((x)<<24)) bool SDIOClass::readCID(void* cid) { // Pito 5/2017 uint32_t s[4]; s[0] = SWAP_UINT32(hsd.CID[0]); s[1] = SWAP_UINT32(hsd.CID[1]); s[2] = SWAP_UINT32(hsd.CID[2]); s[3] = SWAP_UINT32(hsd.CID[3]); //Serial.println(s[0], HEX); //Serial.println(s[1], HEX); //Serial.println(s[2], HEX); //Serial.println(s[3], HEX); memcpy(cid, &s, 16); //&SDCardInfo.SD_cid, 16); return true; } bool SDIOClass::readCSD(void* csd) { // Pito 5/2017 uint32_t s[4]; s[0] = SWAP_UINT32(hsd.CSD[0]); s[1] = SWAP_UINT32(hsd.CSD[1]); s[2] = SWAP_UINT32(hsd.CSD[2]); s[3] = SWAP_UINT32(hsd.CSD[3]); //Serial.println(hsd.CSD[0], HEX); //Serial.println(hsd.CSD[1], HEX); //Serial.println(hsd.CSD[2], HEX); //Serial.println(hsd.CSD[3], HEX); memcpy(csd, &s, 16); //&SDCardInfo.SD_csd, 16); return true; }

Пито
Пн 15 мая 2017 г. 18:18
Да, решение состоит в том, чтобы поменять эндсианс четырех UINT32 в HSD.CID [] и HSD.CSD [].
Я могу попробовать в режиме 1 -бит, конечно.
На сегодняшний день мои два Sammies cl10 uhs-я либо замерзаю в SD.Begin () или бросьте ошибку «карта не отформатирована» с режимом 4 -бит.

Пито
Пн 15 мая 2017 г., 19:08
Это SDIO в 1 -битном режиме с SAMMY 8GB CL10 (и то же самое с 16 ГБ CL10): File size 5 MB Buffer size 65536 bytes Starting write test, please wait. write speed and latency speed,max,min,avg KB/Sec,usec,usec,usec 2666.35,51553,23531,24512 2720.23,34257,23539,24020 Starting read test, please wait. read speed and latency speed,max,min,avg KB/Sec,usec,usec,usec 2889.06,24517,22623,22687 2890.73,23701,22624,22666

victor_pv
Пн 15 мая 2017 г., 19:48
Пито написал:Это SDIO в 1 -битном режиме с SAMMY 8GB CL10 (и то же самое с 16 ГБ CL10): File size 5 MB Buffer size 65536 bytes Starting write test, please wait. write speed and latency speed,max,min,avg KB/Sec,usec,usec,usec 2666.35,51553,23531,24512 2720.23,34257,23539,24020 Starting read test, please wait. read speed and latency speed,max,min,avg KB/Sec,usec,usec,usec 2889.06,24517,22623,22687 2890.73,23701,22624,22666

Пито
Пн 15 мая 2017 г., 8:15 вечера
Это для Sammy CL10 16GB - CSD от Sdcardinfo.SD_CSD (4 -битный режим):
CSD SAMMY 16GB.JPG
CSD Сэмми 16 ГБ.JPG (130.95 киб) просмотрено 279 раз

Пито
Пн 15 мая 2017 г. 20:33
Во время прохождения его обычно останавливается петля здесь: /* In case of single block transfer, no need of stop transfer at all */ #ifdef SDIO_STA_STBITERR while(!__HAL_SD_SDIO_GET_FLAG(hsd, SDIO_FLAG_RXOVERR | SDIO_FLAG_DCRCFAIL | SDIO_FLAG_DTIMEOUT | SDIO_FLAG_DBCKEND | SDIO_FLAG_STBITERR)) #else /* SDIO_STA_STBITERR not defined */ while(!__HAL_SD_SDIO_GET_FLAG(hsd, SDIO_FLAG_RXOVERR | SDIO_FLAG_DCRCFAIL | SDIO_FLAG_DTIMEOUT | SDIO_FLAG_DBCKEND)) #endif /* SDIO_STA_STBITERR */ { if (__HAL_SD_SDIO_GET_FLAG(hsd, SDIO_FLAG_RXFIFOHF)) <<<<<<<<<<<<<< line 572 ..hal_cd.c

Пито
Пн 15 мая 2017 г., 22:27
А пока я скопировал файл A до B с SDIO 4BT на SANDISK 4G CL4, буфер 32 КБ.
10 МБ скопировано в 6.1 секунды, работал в 3 раза, хорошо, хэши соответствуют.
100 МБ скопировано в 45.6secs, работали только один раз из 3 попыток, но хэш не совпадал :)

victor_pv
Пн 15 мая 2017 г., 22:44
Пито написал:Во время прохождения его обычно останавливается петля здесь: /* In case of single block transfer, no need of stop transfer at all */ #ifdef SDIO_STA_STBITERR while(!__HAL_SD_SDIO_GET_FLAG(hsd, SDIO_FLAG_RXOVERR | SDIO_FLAG_DCRCFAIL | SDIO_FLAG_DTIMEOUT | SDIO_FLAG_DBCKEND | SDIO_FLAG_STBITERR)) #else /* SDIO_STA_STBITERR not defined */ while(!__HAL_SD_SDIO_GET_FLAG(hsd, SDIO_FLAG_RXOVERR | SDIO_FLAG_DCRCFAIL | SDIO_FLAG_DTIMEOUT | SDIO_FLAG_DBCKEND)) #endif /* SDIO_STA_STBITERR */ { if (__HAL_SD_SDIO_GET_FLAG(hsd, SDIO_FLAG_RXFIFOHF)) <<<<<<<<<<<<<< line 572 ..hal_cd.c

Пито
Вторник 16 мая 2017 г. 8:33
С включенным управлением аппаратного потока я получаю ошибки со всеми моими картами, обычно Type any character to start FreeStack: 60211 Invalid format, reformat SD.

victor_pv
Вторник 16 мая 2017 г. 14:27
Пито написал:С включенным управлением аппаратного потока я получаю ошибки со всеми моими картами, обычно Type any character to start FreeStack: 60211 Invalid format, reformat SD.

victor_pv
Ср 17 мая 2017 г. 13:54
Только что обнаружил инструкцию для обмена байтом (для CID и CSD).
В комплектации в «Сборке» в REV, в GCC есть встроенная инструкция, которая будет переведена в правую инструкцию ассемблера: a = __builtin_bswap32(a);

Пито
Ср 17 мая 2017 г. 14:01
Я пробовал с 1 -битным режимом SDIO - 100 МБ и 1.5 ГБ копии (Black F407Zet, SDIO Socket на плате). С Samsung CL10 он скопировал скорость 1 МБ/с (часы SDIO 24 МГц), а хэши соответствуют.
Теперь, почему режим 4 -бит не удается?

AG123
Ср 17 мая 2017 г. 14:05
Это режим SDIO SDFAT? Я думаю, что у аппаратного обеспечения F4 также есть аппаратный SDIO, но я не слишком уверен, как это будет работать, но я предполагаю, что библиотеки «HAL» понадобятся для этого. Я предполагаю, что может потребоваться просмотреть схемы, чтобы увидеть, действительно ли слот SD -карты подключен к SDIO

В любом случае, можно было бы увидеть, есть ли способ позвонить в Hal Sdio Say из SDFAT, предположительно, это было бы быстрее, и если это ошибка (в SDFAT), это может диагностировать его. Я обошел веб -сайты и обнаружил, что действительно есть некоторые коды, в которых он предоставляет довольно простые крючки для подключения стека среднего хранилища USB -хранения ST к оборудованию STM32 SDIO через HAL. Следовательно, возможно, для SDFAT может быть способ его использовать

Пито
Ср 17 мая 2017 г. 14:22
@AG123 - он работает с F4 HW SDIO, SDFAT вызывает драйвер SDIO, который работает через HAL с HW (1 бит или 4 -бит).

Пито
Ср 17 мая 2017 г. 14:32
Пито написал:Я пробовал с 1 -битным режимом SDIO - 100 МБ и 1.5 ГБ копии (Black F407Zet, SDIO Socket на плате). С Samsung CL10 он скопировал скорость 1 МБ/с (часы SDIO 24 МГц), а хэши соответствуют.
Теперь, почему режим 4 -бит не удается?

Стивестронг
Ср 17 мая 2017 г., 14:40
Извлечение из листа ошибок F4: 2.12 SDIO peripheral limitations 2.12.1 SDIO HW flow control Description When enabling the HW flow control by setting bit 14 of the SDIO_CLKCR register to ‘1’, glitches can occur on the SDIOCLK output clock resulting in wrong data to be written into the SD/MMC card or into the SDIO device. As a consequence, a CRC error will be reported to the SD/SDIO MMC host interface (DCRCFAIL bit set to ‘1’ in SDIO_STA register). Workaround None. Note: Do not use the HW flow control. Overrun errors (Rx mode) and FIFO underrun (Tx mode) should be managed by the application software.

Пито
Ср 17 мая 2017 г. 14:52
Пито написал:Пито написал:Я пробовал с 1 -битным режимом SDIO - 100 МБ и 1.5 ГБ копии (Black F407Zet, SDIO Socket на плате). С Samsung CL10 он скопировал скорость 1 МБ/с (часы SDIO 24 МГц), а хэши соответствуют.
Теперь, почему режим 4 -бит не удается?

Пито
Ср 17 мая 2017 г. 14:54
Стивестронг написал:Извлечение из листа ошибок F4:
..
Заключение: Не используйте управление потоком HW.

Racemaniac
Ср 17 мая 2017 г. 14:59
Вы настроили подтягивания на булавках для 4 -битной связи? (или у вас есть внешние подтягивания?)

Пито
Ср 17 мая 2017 г. 15:05
На всех сигналах есть внешние 10 -километровые подтягивания, розетка на плате.
Black F407zet Board: http: // www.STM32duino.com/viewtopic.PHP ... = 30#p22456

Даниэфф
Ср 17 мая 2017 г. 15:15
В SDIO.CPP, делает линию error = HAL_SD_WideBusOperation_Config(&hsd, SDIO_BUS_WIDE_4B);

Пито
Ср 17 мая 2017 г. 15:24
Black F407ZET Board
Sdio 1bit copy.jpg
SDIO 1BT COPY.JPG (32.87 киб) просмотрено 278 раз

Пито
Ср 17 мая 2017 г. 15:29
Даниэфф написал:В SDIO.CPP, делает линию error = HAL_SD_WideBusOperation_Config(&hsd, SDIO_BUS_WIDE_4B);

Даниэфф
Ср 17 мая 2017 г. 15:59
Было бы полезно поместить в SDIO.CPP после каждого `if (ошибка != Sd_ok) {`сериал.Печать (ошибка), потому что это может дать вам кучу кодов https: // github.com/danieleff/stm32gener ... _SD.H#L221
Вместо общей «ошибки: открыть неудачу»

Пито
Ср 17 мая 2017 г. 16:17
Я добавил печать из кодов ошибок в SDIO.CPP.
Вот ошибка, которую я получаю с 2x CL10 Samsungs, когда режим 4BT включен (HW Flow Ctrl отключен): Use a freshly formatted SD for best performance. Type any character to start HAL_SD_ReadBlocks Error: 2 Invalid format, reformat SD.

Пито
Ср 17 мая 2017 г., 17:36
Я добавил счетчик петли в SDIOCLASS :: ReadBlocks, и, например, я получаю немного другой последовательности (файл, который будет открыт на карте), Samsung CL10: Use a freshly formatted SD for best performance. Type any character to start Loop: 0 Loop: 1 Opening the read file.. Loop: 2 HAL_SD_ReadBlocks Error: 2 error: opening test_in.bin for Read failed Use a freshly formatted SD for best performance. Type any character to start HAL_SD_Init Error: 3 Can't access SD card. Do not reformat. SD errorCode: 0X64,0X0

Пито
Ср 17 мая 2017 г., 19:27
С Sandisk CL10 он работает «каким -то образом» в 4 -битном режиме, поэтому я добавил первый результат теста на 4BITS:
Sdio 1bit и 4bit copy.jpg
SDIO 1BIT и 4BT COPY.JPG (59.61 киб) просмотрено 781 раза

victor_pv
Ср 17 мая 2017 г., 8:45 вечера
Стивестронг написал:Извлечение из листа ошибок F4: 2.12 SDIO peripheral limitations 2.12.1 SDIO HW flow control Description When enabling the HW flow control by setting bit 14 of the SDIO_CLKCR register to ‘1’, glitches can occur on the SDIOCLK output clock resulting in wrong data to be written into the SD/MMC card or into the SDIO device. As a consequence, a CRC error will be reported to the SD/SDIO MMC host interface (DCRCFAIL bit set to ‘1’ in SDIO_STA register). Workaround None. Note: Do not use the HW flow control. Overrun errors (Rx mode) and FIFO underrun (Tx mode) should be managed by the application software.

victor_pv
Ср 17 мая 2017 г. 11:00 вечера
Пито написал: С 42 МГц sdio clk это бросает ошибки: Use a freshly formatted SD for best performance. Type any character to start Opening the read file.. Opening the write file.. Reading and Writing.. HAL_SD_WriteBlocks Error: 5 HAL_SD_WriteBlocks Error: 3 HAL_SD_WriteBlocks Error: 16 HAL_SD_WriteBlocks Error: 5 HAL_SD_WriteBlocks Error: 3 HAL_SD_WriteBlocks Error: 16 HAL_SD_WriteBlocks Error: 3 HAL_SD_WriteBlocks Error: 3 .. HAL_SD_WriteBlocks Error: 3

Даниэфф
Чт 18 мая 2017 г., 4:03
victor_pv написал:Из того, что я прочитал, я думаю, что мы должны подтвердить, прежде чем читать или писать, что карта готова на самом деле принять данные. И как только запись будет завершена, прочитайте статус карты и подтвердите, что ошибок не было, и повторно, если необходимо, при необходимости.
Но, возможно, SDFAT уже обеспечивает некоторую повторную попытку. Это довольно сложно отслеживать все это с таким количеством слоев.

victor_pv
Чт 18 мая 2017 г., 4:33
Даниэфф написал:victor_pv написал:Из того, что я прочитал, я думаю, что мы должны подтвердить, прежде чем читать или писать, что карта готова на самом деле принять данные. И как только запись будет завершена, прочитайте статус карты и подтвердите, что ошибок не было, и повторно, если необходимо, при необходимости.
Но, возможно, SDFAT уже обеспечивает некоторую повторную попытку. Это довольно сложно отслеживать все это с таким количеством слоев.

Даниэфф
Чт 18 мая 2017 г. 5:27 утра
Хорошо, я понимаю, что ты имеешь в виду. Да, копируйте части кода HAL и используйте это. Как вы сказали, это может сломать разные серии, так что в качестве по умолчанию используются `#define sdioex sdio` и для F4 Использовать части F4 HAL. Таким образом, это будет работать. И для других серий только это, то, что кто -то может на самом деле проверить.

Но сначала сконцентрируйтесь на ошибке.

Пито
Чт 18 мая 2017 г. 9:00 утра
Было бы здорово, если бы кто -то еще сделал тесты с SDIO.
Вот «Copy Test», который я опубликовал на этом форуме год назад - здесь версия с SDIO.
Просто скопируйте файл «любого размера» в SDCard, переименовать его в "test_in.бин ". После запуска эскиза он копирует test_in.корзин в "test_out.бин ".
Сравните хэш, чтобы проверить, хорошо ли копия прошла.
ПРИМЕЧАНИЕ: вы хотите получить файлы Victor SDIO LIB отсюда
https: // github.com/Victorpv/stm32generi ... s/sdio/src
https: // github.com/Victorpv/stm32generi ... 07VE/скамейка
Также вам тоже нужен SDFAT Lib.
/* SDcard SDIO example - Copy Test - copy binaries Buffer of BUFSIZE bytes is used for writing. You have to place a binary called "test_in.bin" on the SDcard and run the sketch. You will get the "test_out.bin" after the copy finishes. Pito 5/2016, no warranties of any kind Pito 5/2017, no warranties of any kind */ #include "SDIO.h" #include "STM32SdFatSdio.h" STM32SdFatSdio sd; SdFile myFileIn; SdFile myFileOut; #define BUFSIZE 32*1024 // Serial output stream ArduinoOutStream cout(Serial); void setup() { Serial.begin(115200); delay(1000); cout << F("\nUse a freshly formatted SD for best performance.\n"); // Discard any input. do { delay(10); } while (Serial.available() && Serial.read() >= 0); Serial.println("Type any character to start\n"); while (!Serial.available()) { SysCall::yield(); } if (!sd.begin()) { sd.initErrorHalt(); } Serial.println("*************************************************"); Serial.println("Opening the read file.."); // open the file for Read if (!myFileIn.open("test_in.bin", O_RDONLY)) { sd.errorHalt("opening test_in.bin for Read failed"); } Serial.println("Opening the write file.."); // open the file for Write if (!myFileOut.open("test_out.bin", O_WRITE | O_CREAT)) { sd.errorHalt("opening test_out.bin for Write failed"); } // Read from myFileIn and write to myFileOut via a Buffer Serial.println("Reading and Writing.."); uint8_t buf[BUFSIZE]; uint32_t nr; uint32_t t = millis(); while ((nr = myFileIn.read(buf, BUFSIZE)) > 0) { if (nr < BUFSIZE){ myFileOut.write(buf, nr); } else { myFileOut.write(buf, BUFSIZE); } } t = millis() - t; // close the files myFileIn.close(); myFileOut.close(); Serial.println("*************************************************"); Serial.print("Done in "); Serial.print(t); Serial.print(" msecs"); } void loop() { }

Стивестронг
Чт 18 мая 2017 г. 9:42
Может ли кто -нибудь, пожалуйста, предоставить двоичный файл для Black F407Ve Poard? Тогда я бы тоже проверил это.

Стивестронг
Чт 18 мая 2017 г. 9:47 утра
Кстати, в листе ошибок есть несколько других связанных с SDIO проблем, которые заставит программное обеспечение: Workaround The CCRCFAIL bit in the SDIO_STA register shall be ignored by the software. CCRCFAIL must be cleared by setting CCRCFAILC bit of the SDIO_ICR register after reception of the response to the CMD5 command.

Даниэфф
Чт 18 мая 2017 г. 10:26
Учитывая, что, например, ReadBlocks просто вызывает hal_sd_readblocks, и вот и все, я надеюсь, что эти проблемы исправлены в HAL. (кроме, может быть, настройка часов).

Что напоминает мне, на самом деле есть новые версии прошивки HAL для серии, поэтому я обновлю их, когда вернусь домой; Это тоже может помочь.

Пито
Чт 18 мая 2017 г. 10:37 утра
Стивестронг написал:Может ли кто -нибудь, пожалуйста, предоставить двоичный файл для Black F407Ve Poard? Тогда я бы тоже проверил это.

victor_pv
Чт 18 мая 2017 г. 14:08
Ошибка 2 - это CRC.
Коды ошибок определяются как HAL_SD_ERRORTYPEDEF, который находится в F4XX_HAL_SD.час

Я проходил некоторое тестирование, но скамейка не подходит для меня.
Теперь я шел через звонки HAL, чтобы увидеть, какие есть проверки и тайм -ауты.

Как только передача DMA началась, следующая вещь - подождать, чтобы это вернуть ОК или ошибку: hal_sd_checkwriteoperation
На этой функции действительные результаты - тайм -аут, ошибка или ОК. Я подозреваю, что тайм -ауты, вероятно, сообщают об этом.
Тот, что называется до этого, поэтому запустите DMA, может ошибиться, прежде чем запустить фактическую передачу, если карта не в действительном состоянии для нее.

Поэтому я подозреваю, что когда перевод идет не так.

Я запускал скамью кучу времени, но с моей картой CL4 это просто не удается, поэтому я не вижу, откуда исходит любая ошибка. Мне нужно найти CL10, чтобы я мог повторить тесты.

Новый тестовый эскиз от Pito должен помочь. Я опубликую свой текущий код на GitHub, чтобы мы все синхронизировались для начала.

Что касается обновлений HAL. Основной F4 HAL находится с 2016 года. Новый HAL с апреля 2017 года имеет много изменений. Разные функции, имена функций, возвращает. Должна быть причина для таких серьезных изменений. Скорее всего, приведет к нарушению совместимости с F1 или другими, которые не были обновлены через некоторое время, но если нам нужно написать 2 библиотеки, чтобы получить их стабильные, то лучше, чем один с проблемами.

У меня есть несколько чипов F3, ожидающих прибытия Bluepills, чтобы сделать пересадку, после того, как я сделаю, я могу проверить F3.

Пито
Чт 18 мая 2017 г. 14:11
Мы используем DMA? На основе результатов копии мне кажется, что мы не имеем (удвоение часов результатов в 1.Только 6x).

victor_pv
Чт 18 мая 2017 г. 14:12
Пито написал:Мы используем DMA? На основании результатов копии мне кажется, что мы не.

Пито
Чт 18 мая 2017 г. 14:22
victor_pv написал:..
Я запускал скамью кучу времени, но с моей картой CL4 это просто не удается, поэтому я не вижу, откуда исходит любая ошибка. Мне нужно найти CL10, чтобы я мог повторить тесты...

victor_pv
Чт 18 мая 2017 г. 14:26
Пито написал:victor_pv написал:..
Я запускал скамью кучу времени, но с моей картой CL4 это просто не удается, поэтому я не вижу, откуда исходит любая ошибка. Мне нужно найти CL10, чтобы я мог повторить тесты...

Даниэфф
Чт 18 мая 2017 г., 17:13
victor_pv написал: Что касается обновлений HAL. Основной F4 HAL находится с 2016 года. Новый HAL с апреля 2017 года имеет много изменений. Разные функции, имена функций, возвращает. Должна быть причина для таких серьезных изменений. Скорее всего, приведет к нарушению совместимости с F1 или другими, которые не были обновлены через некоторое время, но если нам нужно написать 2 библиотеки, чтобы получить их стабильные, то лучше, чем один с проблемами.

victor_pv
Чт 18 мая 2017 г. 18:14
Даниэфф написал:victor_pv написал: Что касается обновлений HAL. Основной F4 HAL находится с 2016 года. Новый HAL с апреля 2017 года имеет много изменений. Разные функции, имена функций, возвращает. Должна быть причина для таких серьезных изменений. Скорее всего, приведет к нарушению совместимости с F1 или другими, которые не были обновлены через некоторое время, но если нам нужно написать 2 библиотеки, чтобы получить их стабильные, то лучше, чем один с проблемами.

victor_pv
Чт 18 мая 2017 г. 18:23
Пито написал:victor_pv написал:..
Я запускал скамью кучу времени, но с моей картой CL4 это просто не удается, поэтому я не вижу, откуда исходит любая ошибка. Мне нужно найти CL10, чтобы я мог повторить тесты...

Стивестронг
Пт 19 мая 2017 г. 12:46
Только что нашел это в сети, может быть, это так же помогает:
https: // блог.Франквх.com/2011/09/04/STM ... интерфейс/

AG123
Пт 19 мая 2017 г. 13:56
Хорошо, я присоединяюсь к игре «тестирование» :ржу не могу:
Этот черный F407Vet6 имеет хороший слот в долларах, в котором есть пружина, щелкните в & Нажмите, используя этот слот для теста : mrgreen:
http: // i.ebayimg.com/images/g/58caosw4 ... -L1600.JPG
Использование бинарного пито, черного F407Vet6, 5 МБ test_in.Файл корзины,
SD -карта - это 16 -ГБ карты бренда. Класс 10 класс 10
http: // www.стронций.Биз/Продукты/Мемор ... Ори-карты/ Use a freshly formatted SD for best performance. Type any character to start ************************************************* Opening the read file.. Opening the write file.. Reading and Writing.. ************************************************* Done in 1922 msecs

Пито
Пт 19 мая 2017 г. 15:25
Большой! Таким образом, типичные ошибки 2, 3, 5, 16.

AG123
Пт 19 мая 2017 г. 15:28
Я не уверен, что «жаловаться» на оборудование SDIO говорит на форуме St? Наверняка не будет выглядеть хорошо, чтобы сказать, что у STM32F4 есть аппаратный SDIO, но не работает или не работает с ошибками, никто не осмелился бы использовать его для чего -либо серьезного и может испортить целые гигабайты SD -карты :ржу не могу:

victor_pv
Пт 19 мая 2017 г. 15:58
Я нахожусь в процессе обновления библиотеки SDIO до последнего HAL в соответствии с обновлением Даниэля в филиале FW_UPDATE.

В настоящее время DMA читает, что работает нормально, но некоторые ошибки в записи, я считаю, что тайм -ауты из -за карты, которая занимает свое сладкое время, чтобы написать блоки. Я пытаюсь добавить код, чтобы подождать, пока карта не пройдет, по крайней мере, после стадии программирования.
Я думаю, что то, как HAL управляет SDCARD, имеет больше смысла в новом API, мы посмотрим, поможет ли это с надежностью.

victor_pv
Пт 19 мая 2017 г. 16:00
AG123 написал:Я не уверен, что «жаловаться» на оборудование SDIO говорит на форуме St? Наверняка не будет выглядеть хорошо, чтобы сказать, что у STM32F4 есть аппаратный SDIO, но не работает или не работает с ошибками, никто не осмелился бы использовать его для чего -либо серьезного и может испортить целые гигабайты SD -карты :ржу не могу:

AG123
Пт 19 мая 2017 г. 16:04
Одна из проблем заключается в том, что спецификации SDIO в значительной степени не публичные, что затрудняет выяснение ошибок. Возможно, нам понадобится «Google» для этого, возможно, на некоторых других форумах AVR, Intel и, скажем, даже на ядрах ARM App (Raspberry Pi, Beagle Bone Black и т. Д.) Для некоторых ответов ;)

Некоторые куски информации можно найти в разных местах
http: // www.Digitalspirit.org/file/index ... 33-001.PDF
https: // yannik520.GitHub.io/sdio.HTML

Стивестронг
Пт 19 мая 2017 г. 16:16
Почему бы не попытаться скопировать ESP8266 Teensy Driver бета -либера?

victor_pv
Пт 19 мая 2017 г. 16:34
Стивестронг написал:Почему бы не попытаться скопировать ESP8266 Teensy Driver бета -либера?

victor_pv
Пт 19 мая 2017 г. 16:54
AG123 написал:Одна из проблем заключается в том, что спецификации SDIO в значительной степени не публичные, что затрудняет выяснение ошибок. Возможно, нам понадобится «Google» для этого, возможно, на некоторых других форумах AVR, Intel и, скажем, даже на ядрах ARM App (Raspberry Pi, Beagle Bone Black и т. Д.) Для некоторых ответов ;)

Некоторые куски информации можно найти в разных местах
http: // www.Digitalspirit.org/file/index ... 33-001.PDF
https: // yannik520.GitHub.io/sdio.HTML

Стивестронг
Пт 19 мая 2017 г., 17:11
Виктор, можете ли вы предоставить Black F407VET Bin File для тестирования? У меня карта 16 ГБ CL10.

AG123
Пт 19 мая 2017 г., 17:23
Я думаю, что упрощенные характеристики и доступные документы «там» делают SD над SPI и 1 PIN -SDIO Works, каким -то образом сорт «высокой скорости» 4 контакта, который в соответствии с упрощенными характеристиками является «обязательным», не публично, мы могли только предположить Эти 4 штифта будут работать так же, как и 1 булавка, я думаю, это возможный «улов» об этом

Я думаю, что один из лучших сайтов о 4 PIN -SDIO - это
https: // yannik520.GitHub.io/sdio.HTML
Мне еще предстоит найти лучший ресурс для этого в Google

victor_pv
Пт 19 мая 2017 г., 19:13
Стивестронг написал:Виктор, можете ли вы предоставить Black F407VET Bin File для тестирования? У меня карта 16 ГБ CL10.

Стивестронг
Пт 19 мая 2017 г. 20:18
Первая попытка: FreeStack: 125615 Type is FAT32 Card size: 15.93 GB (GB = 1E9 bytes) Manufacturer ID: 0X3 OEM ID: SD Product: SL16G Version: 8.0 Serial number: 0X72F2CA43 Manufacturing date: 8/2015 File size 5 MB Buffer size 512 bytes Starting write test, please wait. write speed and latency speed,max,min,avg KB/Sec,usec,usec,usec 336.72,58116,888,1519 425.03,76534,888,1203 Starting read test, please wait. read speed and latency speed,max,min,avg KB/Sec,usec,usec,usec 2187.09,3711,216,233 2190.92,442,216,233 Done Type any character to start

victor_pv
Пт 19 мая 2017 г., 20:45
Стивестронг написал:Первая попытка: FreeStack: 125615 Type is FAT32 Card size: 15.93 GB (GB = 1E9 bytes) Manufacturer ID: 0X3 OEM ID: SD Product: SL16G Version: 8.0 Serial number: 0X72F2CA43 Manufacturing date: 8/2015 File size 5 MB Buffer size 512 bytes Starting write test, please wait. write speed and latency speed,max,min,avg KB/Sec,usec,usec,usec 336.72,58116,888,1519 425.03,76534,888,1203 Starting read test, please wait. read speed and latency speed,max,min,avg KB/Sec,usec,usec,usec 2187.09,3711,216,233 2190.92,442,216,233 Done Type any character to start

Пито
Сб 20 мая 2017 г. 6:38
У вас должен быть буфер 32 КБ с SDIO, чтобы увидеть более высокие скорости.

Пито
Сб 20 мая 2017 г. 9:59
С CL10 Samsung и Sandisk: Use a freshly formatted SD for best performance. Type any character to start FreeStack: 125615 Can't access SD card. Do not reformat. SD errorCode: 0X64,0X0

victor_pv
Сб 20 мая 2017 г. 14:05
Пито написал:С CL10 Samsung и Sandisk: Use a freshly formatted SD for best performance. Type any character to start FreeStack: 125615 Can't access SD card. Do not reformat. SD errorCode: 0X64,0X0

Пито
Сб 20 мая 2017 г. 16:29
Где вы добавили код, чтобы показать коды ошибок? Давайте добавим это в тест на скамейке, чтобы увидеть, какие ошибки мы получаем. http: // www.STM32duino.com/viewtopic.PHP ... = 90#p28184

victor_pv
Сб 20 мая 2017 г., 22:58
Пито написал:Где вы добавили код, чтобы показать коды ошибок? Давайте добавим это в тест на скамейке, чтобы увидеть, какие ошибки мы получаем. http: // www.STM32duino.com/viewtopic.PHP ... = 90#p28184

Даниэфф
Солнце 21 мая 2017 г. 6:35 утра
Это странно, но это работает только в том случае, если я устанавливаю _Usenma = true;
с _Usenma = false;, я получаю ошибки записи:
FreeStack: 125619 Type is FAT32 Card size: 7.78 GB (GB = 1E9 bytes) Manufacturer ID: 0X2 OEM ID: TM Product: SA08G Version: 2.2 Serial number: 0XD1C17F26 Manufacturing date: 6/2010 File size 5 MB Buffer size 512 bytes Starting write test, please wait. write speed and latency speed,max,min,avg KB/Sec,usec,usec,usec HAL_SD_WriteBlocks error, hsd.ErrorCode: 4 error: write failed HAL_SD_WriteBlocks error, hsd.ErrorCode: 4 Type any character to start

Пито
Солнце 21 мая 2017 г. 6:58
victor_pv написал:Пито написал:Где вы добавили код, чтобы показать коды ошибок? Давайте добавим это в тест на скамейке, чтобы увидеть, какие ошибки мы получаем. http: // www.STM32duino.com/viewtopic.PHP ... = 90#p28184

Даниэфф
Солнце 21 мая 2017 г., 6:59
Если я положил `while (hal_sd_getcardstate (&hsd) == hal_sd_card_programming); `в часть no-dma` sdioclass :: writeblocks` (точно так же, как часть DMA), Nodma также работает:
FreeStack: 93359 Type is FAT32 Card size: 7.78 GB (GB = 1E9 bytes) Manufacturer ID: 0X2 OEM ID: TM Product: SA08G Version: 2.2 Serial number: 0XD1C17F26 Manufacturing date: 6/2010 File size 5 MB Buffer size 32768 bytes Starting write test, please wait. write speed and latency speed,max,min,avg KB/Sec,usec,usec,usec 4552.77,295514,4348,6926 6623.32,12115,4344,4685 Starting read test, please wait. read speed and latency speed,max,min,avg KB/Sec,usec,usec,usec 8617.19,4376,3763,3803 8602.31,4372,3673,3804 Done Type any character to start

Пито
Солнце 21 мая 2017 г. 8:21
ИСПОЛЬЗОВАНИЕ ИСПОЛЬЗОВАНИЯ (Samsung CL10 16GB): Use a freshly formatted SD for best performance. Type any character to start FreeStack: 60907 Invalid format, reformat SD. Use a freshly formatted SD for best performance. Type any character to start FreeStack: 60907 HAL_SD_WideBusOperation_Config Error: 1 Can't access SD card. Do not reformat. SD errorCode: 0X64,0X0

victor_pv
Солнце 21 мая 2017 г. 22:16
Пито написал:ИСПОЛЬЗОВАНИЕ ИСПОЛЬЗОВАНИЯ (Samsung CL10 16GB): Use a freshly formatted SD for best performance. Type any character to start FreeStack: 60907 Invalid format, reformat SD. Use a freshly formatted SD for best performance. Type any character to start FreeStack: 60907 HAL_SD_WideBusOperation_Config Error: 1 Can't access SD card. Do not reformat. SD errorCode: 0X64,0X0

Даниэфф
Пн 22 мая 2017 г., 7:26 утра
victor_pv написал: Даниэль, если вы хотите объединить файлы SDIO в вашу филиал, мы тоже сможем это сделать. Я не послал пиар, потому что я еще не смотрел и что вы сделали для F7, поэтому я не хочу переписывать что -либо с моими изменениями, которые могут понадобиться для F7, и я работаю с версией, что еще не был разделен в серии.

victor_pv
Пн 22 мая 2017 г., 17:15
Даниэфф написал:victor_pv написал: Даниэль, если вы хотите объединить файлы SDIO в вашу филиал, мы тоже сможем это сделать. Я не послал пиар, потому что я еще не смотрел и что вы сделали для F7, поэтому я не хочу переписывать что -либо с моими изменениями, которые могут понадобиться для F7, и я работаю с версией, что еще не был разделен в серии.

victor_pv
Ср 24 мая 2017 г. 15:37
Даниэфф написал:victor_pv написал: Даниэль, если вы хотите объединить файлы SDIO в вашу филиал, мы тоже сможем это сделать. Я не послал пиар, потому что я еще не смотрел и что вы сделали для F7, поэтому я не хочу переписывать что -либо с моими изменениями, которые могут понадобиться для F7, и я работаю с версией, что еще не был разделен в серии.

Даниэфф
Ср 24 мая 2017 г. 16:42
victor_pv написал: Можем ли мы проверить Begin (), находится ли карта уже в правильном состоянии, прежде чем пытаться? Либо это, либо отправьте команду GO_IDLE в начале, которая является наиболее близким к отдыху, который я нахожу в спецификациях.

victor_pv
Ср 24 мая 2017 г. 18:59
Даниэфф написал:victor_pv написал: Можем ли мы проверить Begin (), находится ли карта уже в правильном состоянии, прежде чем пытаться? Либо это, либо отправьте команду GO_IDLE в начале, которая является наиболее близким к отдыху, который я нахожу в спецификациях.

victor_pv
Чт 25 мая 2017 г. 5:53 утра
Обновлено несколько вещей в файлах SDIO и добавил расчет CRC в эскиз CopyTest из PITO, поэтому он читает обратно и вычисляет CRC файлов в и выходе и сравнивает их и сравнивает.
Сейчас он также работает в цикле, поэтому, если вы не получите ошибку, вы можете запускать ее снова и снова.
Я взял сериал, чтобы прочитать, чтобы тестовый повторялся снова и снова и запустить около 10 раз в файле 15 МБ без ошибок.

Было бы здорово, если бы кто -то, у кого были ошибки до сих пор, дал ему шанс.
Файлы в моем филиале, в первом посте потока.

Даниэфф
Чт 25 мая 2017 г., 6:23
victor_pv написал: Файлы в моем филиале, в первом посте потока.

Пито
Чт 25 мая 2017 г. 8:13
Используйте SDFAT от GitHub
https: // github.com/greiman/sdfat
Вместо бета-бета. Бета старая и была объединена с SDFAT месяц назад.

Стивестронг
Чт 25 мая 2017 г. 8:14
Пито написал:Используйте SDFAT от GitHub вместо SDFAT-бета. Бета старая и была объединена с SDFAT месяц назад.

victor_pv
Чт 25 мая 2017 г. 13:19
Даниэфф написал:victor_pv написал: Файлы в моем филиале, в первом посте потока.

Пито
Чт 25 мая 2017 г. 14:02
Интересное чтение по некоторым вопросам и обходным пути SDIO:
https: // блог.Франквх.com/2011/09/04/STM ... интерфейс/
https: // блог.Франквх.com/2011/12/30/STM ... CE-Part-2/

victor_pv
Чт 25 мая 2017 г. 15:22
Пито написал:Интересное чтение по некоторым вопросам и обходным пути SDIO:
https: // блог.Франквх.com/2011/09/04/STM ... интерфейс/
https: // блог.Франквх.com/2011/12/30/STM ... CE-Part-2/

Даниэфф
Чт 25 мая 2017 г. 15:30
(SDIO/Примеры/CopyTest не имеет STM32SDFATSDIO.H и Arduino IDE каким -то образом не хотят компилировать подкаталог CRC32)
В противном случае 100 МБ test_in.бин кажется в порядке:
************************************************* Opening the read file.. Opening the write file.. Reading and Writing.. ************************************************* Done in 45406 msecs ************************************************* Running CRC calculations... File in CRC: DE9D6BE7 File out CRC: DE9D6BE7 ************************************************* Done in 74235 msecsType any character to start ************************************************* Opening the read file.. Opening the write file.. Reading and Writing.. ************************************************* Done in 44892 msecs ************************************************* Running CRC calculations... File in CRC: DE9D6BE7 File out CRC: DE9D6BE7 ************************************************* Done in 74235 msecsType any character to start ************************************************* Opening the read file.. Opening the write file.. Reading and Writing.. ************************************************* Done in 44843 msecs ************************************************* Running CRC calculations... File in CRC: DE9D6BE7 File out CRC: DE9D6BE7 ************************************************* Done in 74209 msecsType any character to start ************************************************* Opening the read file.. Opening the write file.. Reading and Writing.. ************************************************* Done in 44571 msecs ************************************************* Running CRC calculations... File in CRC: DE9D6BE7 File out CRC: DE9D6BE7 ************************************************* Done in 74208 msecsType any character to start ************************************************* Opening the read file.. Opening the write file.. Reading and Writing.. ************************************************* Done in 44603 msecs ************************************************* Running CRC calculations... File in CRC: DE9D6BE7 File out CRC: DE9D6BE7 ************************************************* Done in 74210 msecsType any character to start ************************************************* Opening the read file.. Opening the write file.. Reading and Writing.. ************************************************* Done in 44601 msecs ************************************************* Running CRC calculations... File in CRC: DE9D6BE7 File out CRC: DE9D6BE7 ************************************************* Done in 74211 msecsType any character to start ************************************************* Opening the read file.. Opening the write file.. Reading and Writing.. ************************************************* Done in 44545 msecs ************************************************* Running CRC calculations... File in CRC: DE9D6BE7 File out CRC: DE9D6BE7 ************************************************* Done in 74210 msecsType any character to start ************************************************* Opening the read file.. Opening the write file.. Reading and Writing.. ************************************************* Done in 44616 msecs ************************************************* Running CRC calculations... File in CRC: DE9D6BE7 File out CRC: DE9D6BE7 ************************************************* Done in 74214 msecsType any character to start ************************************************* Opening the read file.. Opening the write file.. Reading and Writing.. ************************************************* Done in 44626 msecs ************************************************* Running CRC calculations...

victor_pv
Чт 25 мая 2017 г., 17:37
Даниэфф написал:(SDIO/Примеры/CopyTest не имеет STM32SDFATSDIO.H и Arduino IDE каким -то образом не хотят компилировать подкаталог CRC32)
В противном случае 100 МБ test_in.бин кажется в порядке:
************************************************* Opening the read file.. Opening the write file.. Reading and Writing.. ************************************************* Done in 45406 msecs ************************************************* Running CRC calculations... File in CRC: DE9D6BE7 File out CRC: DE9D6BE7 ************************************************* Done in 74235 msecsType any character to start ************************************************* Opening the read file.. Opening the write file.. Reading and Writing.. ************************************************* Done in 44892 msecs ************************************************* Running CRC calculations... File in CRC: DE9D6BE7 File out CRC: DE9D6BE7 ************************************************* Done in 74235 msecsType any character to start ************************************************* Opening the read file.. Opening the write file.. Reading and Writing.. ************************************************* Done in 44843 msecs ************************************************* Running CRC calculations... File in CRC: DE9D6BE7 File out CRC: DE9D6BE7 ************************************************* Done in 74209 msecsType any character to start ************************************************* Opening the read file.. Opening the write file.. Reading and Writing.. ************************************************* Done in 44571 msecs ************************************************* Running CRC calculations... File in CRC: DE9D6BE7 File out CRC: DE9D6BE7 ************************************************* Done in 74208 msecsType any character to start ************************************************* Opening the read file.. Opening the write file.. Reading and Writing.. ************************************************* Done in 44603 msecs ************************************************* Running CRC calculations... File in CRC: DE9D6BE7 File out CRC: DE9D6BE7 ************************************************* Done in 74210 msecsType any character to start ************************************************* Opening the read file.. Opening the write file.. Reading and Writing.. ************************************************* Done in 44601 msecs ************************************************* Running CRC calculations... File in CRC: DE9D6BE7 File out CRC: DE9D6BE7 ************************************************* Done in 74211 msecsType any character to start ************************************************* Opening the read file.. Opening the write file.. Reading and Writing.. ************************************************* Done in 44545 msecs ************************************************* Running CRC calculations... File in CRC: DE9D6BE7 File out CRC: DE9D6BE7 ************************************************* Done in 74210 msecsType any character to start ************************************************* Opening the read file.. Opening the write file.. Reading and Writing.. ************************************************* Done in 44616 msecs ************************************************* Running CRC calculations... File in CRC: DE9D6BE7 File out CRC: DE9D6BE7 ************************************************* Done in 74214 msecsType any character to start ************************************************* Opening the read file.. Opening the write file.. Reading and Writing.. ************************************************* Done in 44626 msecs ************************************************* Running CRC calculations...

AG123
Пт 26 мая 2017 г. 9:42 утра
У тебя есть бинар? Я бы тоже попробовал это ;)

victor_pv
Пт 26 мая 2017 г. 13:31
Это эскиз для теста копирования, включая расчеты CRC.
Если вы нажмете клавишу, он будет работать, и в конце вы можете снова нажать клавишу и запустить другой проход.
В каждом проходе удаляет выходной файл и создаст новый.
sdio_bin_test.молния
(22.42 киб) скачано 13 раз

AG123
Пт 26 мая 2017 г. 14:21
Спасибо, Виктор,

100 мег (102400000 байтов) test_in.бин
Strontium frunded USD Card класс 10 16 ГБ
http: // www.стронций.Биз/Продукты/Мемор ... Ори-карты/ Reading, Writing and calculating CRC of In file... ************************************************* Done in 61185 msecs ************************************************* Running CRC calculation on Out file... File in CRC: 638C64C3 File out CRC: 638C64C3 ************************************************* Done in 33304 msecs

victor_pv
Пт 26 мая 2017 г. 14:35
AG123 написал:Спасибо, Виктор,

100 мег (102400000 байтов) test_in.бин
Strontium frunded USD Card класс 10 16 ГБ
http: // www.стронций.Биз/Продукты/Мемор ... Ори-карты/ Reading, Writing and calculating CRC of In file... ************************************************* Done in 61185 msecs ************************************************* Running CRC calculation on Out file... File in CRC: 638C64C3 File out CRC: 638C64C3 ************************************************* Done in 33304 msecs

AG123
Пт 26 мая 2017 г. 14:37
Ой, казалось, что карта повреждена, она поймана в моем журнале системы Linux DMESG [ 4085.713867] sdc: sdc1 [ 4087.396831] FAT-fs (sdc1): error, invalid access to FAT (entry 0x0f006300) [ 4087.396837] FAT-fs (sdc1): Filesystem has been set read-only [ 4098.257323] FAT-fs (sdc1): error, invalid access to FAT (entry 0x0f006300) [ 4098.257327] FAT-fs (sdc1): Filesystem has been set read-only [ 4104.627274] FAT-fs (sdc1): error, invalid access to FAT (entry 0x0f006300) [ 4104.627277] FAT-fs (sdc1): Filesystem has been set read-only [ 4117.426892] sd 6:0:0:0: [sdc] 31211520 512-byte logical blocks: (15.9 GB/14.8 GiB) [ 4117.430519] sdc: sdc1 [ 4119.329292] FAT-fs (sdc1): error, invalid access to FAT (entry 0x0f006300) [ 4119.329295] FAT-fs (sdc1): Filesystem has been set read-only

victor_pv
Пт 26 мая 2017 г. 14:41
AG123 написал:Ой, казалось, что карта повреждена, она поймана в моем журнале системы Linux DMESG [ 4085.713867] sdc: sdc1 [ 4087.396831] FAT-fs (sdc1): error, invalid access to FAT (entry 0x0f006300) [ 4087.396837] FAT-fs (sdc1): Filesystem has been set read-only [ 4098.257323] FAT-fs (sdc1): error, invalid access to FAT (entry 0x0f006300) [ 4098.257327] FAT-fs (sdc1): Filesystem has been set read-only [ 4104.627274] FAT-fs (sdc1): error, invalid access to FAT (entry 0x0f006300) [ 4104.627277] FAT-fs (sdc1): Filesystem has been set read-only [ 4117.426892] sd 6:0:0:0: [sdc] 31211520 512-byte logical blocks: (15.9 GB/14.8 GiB) [ 4117.430519] sdc: sdc1 [ 4119.329292] FAT-fs (sdc1): error, invalid access to FAT (entry 0x0f006300) [ 4119.329295] FAT-fs (sdc1): Filesystem has been set read-only

AG123
Пт 26 мая 2017 г. 14:43
на карте могут быть некоторые предварительные ошибки жира. Следовательно, мы уже проигнорировали это, собираясь повторно запустить новый тест
100 мег (102400000 байтов) test_in.бин
Strontium frunded USD Card класс 10 16 ГБ ************************************************* Opening the read file.. Opening the write file.. Reading, Writing and calculating CRC of In file... ************************************************* Done in 60094 msecs ************************************************* Running CRC calculation on Out file... File in CRC: 94130507 File out CRC: 94130507 ************************************************* Done in 33315 msecs

AG123
Пт 26 мая 2017 г. 15:11
victor_pv написал: Можете ли вы запустить его несколько раз подряд, чтобы увидеть, не удается ли он в любое время?
Я также обнаружил, что если я позволю эскизу ждать несколько минут, карта, похоже, пойдет на холостое время, которое понадобится другая команда, чтобы снова получить его в режиме передачи. Если бы вы могли проверить это, было бы хорошо подтвердить, что это нормальное поведение. Просто оставьте эскиз в ожидании клавиши на некоторое время, может быть, 10-15 минут, затем нажмите клавишу и посмотрите, бросает ли он сообщения об ошибках.

Кстати, скорость копирования вдвое больше, так как он читает из файла, вычисляет CRC этого блока и записывает ее в другой файл.
С тех пор, как чтение и вычисление займет 33 секунды во втором файле, мы можем вычесть это с первого раза, чтобы оценить время, затрачиваемое на написание, так что около 102 400 000 /28 ~ 3.Скорость написания 67 МБ :)

Пито
Пт 26 мая 2017 г. 15:54
Я не знаю, как это с SDIO, но в SPI SDCARD идет в холостом ходу сразу после выбора (CS = 1), а затем требуется 200UA ток обычно.

victor_pv
Пт 26 мая 2017 г. 16:02
Пито написал:Я не знаю, как это с SDIO, но в SPI SDCARD идет в холостом ходу сразу после выбора (CS = 1), а затем требуется 200UA ток обычно.

victor_pv
Пт 26 мая 2017 г. 16:03
AG123 написал:victor_pv написал: Можете ли вы запустить его несколько раз подряд, чтобы увидеть, не удается ли он в любое время?
Я также обнаружил, что если я позволю эскизу ждать несколько минут, карта, похоже, пойдет на холостое время, которое понадобится другая команда, чтобы снова получить его в режиме передачи. Если бы вы могли проверить это, было бы хорошо подтвердить, что это нормальное поведение. Просто оставьте эскиз в ожидании клавиши на некоторое время, может быть, 10-15 минут, затем нажмите клавишу и посмотрите, бросает ли он сообщения об ошибках.

Кстати, скорость копирования вдвое больше, так как он читает из файла, вычисляет CRC этого блока и записывает ее в другой файл.
С тех пор, как чтение и вычисление займет 33 секунды во втором файле, мы можем вычесть это с первого раза, чтобы оценить время, затрачиваемое на написание, так что около 102 400 000 /28 ~ 3.Скорость написания 67 МБ :)

Пито
Пт 26 мая 2017 г. 16:06
Первая попытка с вашим последним бинарным выше, Sammy 16GB, CL10, UHS-I Card, Formatted, без файла на SDCARD: Use a freshly formatted SD for best performance. Type any character to start State value (HAL_SD_STATE...): 1 Errorcode value (HAL_SD_ERROR...): 2 R1 value: 100100000000 HAL Return value (HAL_...): 0 C:\Users\Victor\Documents\Arduino\Hardware\STM32GENERIC\STM32\libraries\SDIO\src\SDIO.cpp 168 readBlocks Timeout on Read, over 100ms Invalid format, reformat SD.

AG123
Пт 26 мая 2017 г., 18:16
Я думаю, что я должен иметь смешированные последовательности, пока я тестировал, тестирую с 32 -мег -файлом класса 10 Class Brondtium USD -карта, плата протестирована с Black STM32F407VET6 с использованием на борту USD STOT USD : P
Я ждал некоторое время между пробежками, но не воспроизвел ошибку, которую я получил ранее.Use a freshly formatted SD for best performance. Type any character to start ************************************************* Opening the read file.. error: opening test_in.bin for Read failed ************************************************* Opening the read file.. Opening the write file.. Reading, Writing and calculating CRC of In file... ************************************************* Done in 19895 msecs ************************************************* Running CRC calculation on Out file... File in CRC: 9D29D540 File out CRC: 9D29D540 ************************************************* Done in 10897 msecs Type any character to start ************************************************* Opening the read file.. Opening the write file.. Reading, Writing and calculating CRC of In file... ************************************************* Done in 19139 msecs ************************************************* Running CRC calculation on Out file... File in CRC: 9D29D540 File out CRC: 9D29D540 ************************************************* Done in 10885 msecs

victor_pv
Пт 26 мая 2017 г., 18:41
(Hal_sd_error...): #define SDMMC_ERROR_NONE 0x00000000U /*!< No error */ #define SDMMC_ERROR_CMD_CRC_FAIL 0x00000001U /*!< Command response received (but CRC check failed) */ #define SDMMC_ERROR_DATA_CRC_FAIL 0x00000002U /*!< Data block sent/received (CRC check failed) */ #define SDMMC_ERROR_CMD_RSP_TIMEOUT 0x00000004U /*!< Command response timeout */ #define SDMMC_ERROR_DATA_TIMEOUT 0x00000008U /*!< Data timeout */ #define SDMMC_ERROR_TX_UNDERRUN 0x00000010U /*!< Transmit FIFO underrun */ #define SDMMC_ERROR_RX_OVERRUN 0x00000020U /*!< Receive FIFO overrun */ #define SDMMC_ERROR_ADDR_MISALIGNED 0x00000040U /*!< Misaligned address */ #define SDMMC_ERROR_BLOCK_LEN_ERR 0x00000080U /*!< Transferred block length is not allowed for the card or the number of transferred bytes does not match the block length */ #define SDMMC_ERROR_ERASE_SEQ_ERR 0x00000100U /*!< An error in the sequence of erase command occurs */ #define SDMMC_ERROR_BAD_ERASE_PARAM 0x00000200U /*!< An invalid selection for erase groups */ #define SDMMC_ERROR_WRITE_PROT_VIOLATION 0x00000400U /*!< Attempt to program a write protect block */ #define SDMMC_ERROR_LOCK_UNLOCK_FAILED 0x00000800U /*!< Sequence or password error has been detected in unlock command or if there was an attempt to access a locked card */ #define SDMMC_ERROR_COM_CRC_FAILED 0x00001000U /*!< CRC check of the previous command failed */ #define SDMMC_ERROR_ILLEGAL_CMD 0x00002000U /*!< Command is not legal for the card state */ #define SDMMC_ERROR_CARD_ECC_FAILED 0x00004000U /*!< Card internal ECC was applied but failed to correct the data */ #define SDMMC_ERROR_CC_ERR 0x00008000U /*!< Internal card controller error */ #define SDMMC_ERROR_GENERAL_UNKNOWN_ERR 0x00010000U /*!< General or unknown error */ #define SDMMC_ERROR_STREAM_READ_UNDERRUN 0x00020000U /*!< The card could not sustain data reading in stream rmode */ #define SDMMC_ERROR_STREAM_WRITE_OVERRUN 0x00040000U /*!< The card could not sustain data programming in stream mode */ #define SDMMC_ERROR_CID_CSD_OVERWRITE 0x00080000U /*!< CID/CSD overwrite error */ #define SDMMC_ERROR_WP_ERASE_SKIP 0x00100000U /*!< Only partial address space was erased */ #define SDMMC_ERROR_CARD_ECC_DISABLED 0x00200000U /*!< Command has been executed without using internal ECC */ #define SDMMC_ERROR_ERASE_RESET 0x00400000U /*!< Erase sequence was cleared before executing because an out of erase sequence command was received */ #define SDMMC_ERROR_AKE_SEQ_ERR 0x00800000U /*!< Error in sequence of authentication */ #define SDMMC_ERROR_INVALID_VOLTRANGE 0x01000000U /*!< Error in case of invalid voltage range */ #define SDMMC_ERROR_ADDR_OUT_OF_RANGE 0x02000000U /*!< Error when addressed block is out of range */ #define SDMMC_ERROR_REQUEST_NOT_APPLICABLE 0x04000000U /*!< Error when command request is not applicable */ #define SDMMC_ERROR_INVALID_PARAMETER 0x08000000U /*!< the used parameter is not valid */ #define SDMMC_ERROR_UNSUPPORTED_FEATURE 0x10000000U /*!< Error when feature is not insupported */ #define SDMMC_ERROR_BUSY 0x20000000U /*!< Error when transfer process is busy */ #define SDMMC_ERROR_DMA 0x40000000U /*!< Error while DMA transfer */ #define SDMMC_ERROR_TIMEOUT 0x80000000U /*!< Timeout error */

AG123
Пт 26 мая 2017 г., 18:56
Ну, кажется, ошибка CRC облегчена? Это довольно хорошее достижение : D
Я посмотрел на последний пост Пито, кажется, в этих копиях нет ошибок CRC
Тайм -ауты команд казались несколько сложнее решить, и некоторые из логики могут показаться необходимыми в самом эскизе/приложении. эн.глин. Я не уверен, могут ли есть некоторые команды, чтобы исследовать, если карта простаивает и передан инициализация. Но я предполагаю, что это нужно сделать с помощью самого эскиза/приложения

Пито
Пт 26 мая 2017 г., 19:06
Я думаю, что чего -то не хватает в последовательности init. Эти ошибки CRC не из -за проводки, а пропущенные команды init. Я бы порекомендовал сравнить все команды, необходимые с другими реализациями - например, Chibios SDIO или другие. Это должно быть сделано шаг за шагом. Также обращайте на нет указанные ссылки - они также упоминают ошибки CRC в результате неправильной обработки.
Например, это может произойти, SAMMY требует, чтобы режим скорости CMD6 был установлен правильно, в то время как Sandisk, возможно, нет.
Итак, давайте сначала сравнитесь с другими рабочими реализацией, чтобы избежать попыток и ошибок..

victor_pv
Пт 26 мая 2017 г., 19:12
Пито написал:Я думаю, что чего -то не хватает в последовательности init. Эти ошибки CRC не из -за проводки, а пропущенные команды init. Я бы порекомендовал сравнить все команды, необходимые с другими реализациями - например, Chibios SDIO или другие.

Пито
Пт 26 мая 2017 г., 19:24
Тот факт, что у нас есть проблема с началом карты Samsung Evo, является четким признаком, что все еще есть проблема..

victor_pv
Пт 26 мая 2017 г., 19:24
BTE Этот ответ R1 указывает, что карта находится в режиме приема, но не готова получить данные: R1 value: 110000000000

victor_pv
Пт 26 мая 2017 г., 19:27
Пито написал:Тот факт, что у нас есть проблема с началом карты Samsung Evo, является четким признаком, что все еще есть проблема..

Пито
Пт 26 мая 2017 г., 19:29
Тайм -ауты 100 мс недостаточно. Давайте сделаем 500 мс.
Настройки GPIO должны быть самой высокой скоростью.
Я бы также следил за настройками напряжения и CMD6, даже скорость 50 МГц - максимум для 3.3V сигнализация. Высокий режим также устанавливает ввод/вывода SDCARD на более быструю настройку. Более того, кажется, что 24 МГц уже высокая скорость (SDR25).

Вот быстрый хак, как поместить карту в режим высокого скорости через cmd6:
http: // www.STM32duino.com/viewtopic.PHP?T = 1053#P12809
Cmd6.jpg
Cmd6.JPG (85.48 киб) просмотрено 813 раз

victor_pv
Пт 26 мая 2017 г., 20:24
Пито написал:Тайм -ауты 100 мс недостаточно. Давайте сделаем 500 мс.
Настройки GPIO должны быть самой высокой скоростью.
Я бы также следил за настройками напряжения и CMD6, даже скорость 50 МГц - максимум для 3.3V сигнализация. Высокий режим также устанавливает ввод/вывода SDCARD на более быструю настройку. Более того, кажется, что 24 МГц уже высокая скорость (SDR25).

AG123
Пт 26 мая 2017 г., 20:34
Не по теме: в некотором смысле, возможно, 1 день, мы могли бы просто получить флэш- & взломать наши собственные SD-карты (возможно, с STM32 F1-F7 в качестве контроллера, без ошибок CRC) :ржу не могу:
http: // bunniefoo.com/bunnie/sdcard-30c3-pub.PDF
Удивительно, но ты на самом деле смог бы получить эту флэш & Даже некоторые проприетарные программисты на eBay :ржу не могу:
http: // www.eBay.com/sch/i.HTML?_from = r4 ... +&_SACAT = 0

Пито
Пт 26 мая 2017 г., 20:42
@victor - Большая часть настроек CMD6 работает с SDIO и 1.Только сигнализация 8 В. Afik единственный настройка, применимый для 3.Сигнализация 3 В является настройкой высокоскоростной режима. Cmd6 читает 64bytes, где вы получаете некоторую информацию.

Максимальная скорость - вы можете установить здесь 50 МГц, так как 25 и 50 являются единственными поддерживаемыми 3.Сигнализация 3V (у нас нет 1.Сигнализация 8 В с помощью STM32F407).

Питание - это максимальная мощность, которую карта может извлечь из розетки - 0.36W - 2.88WATT, в основном это ток, взятый из источника VCC SDCARD, измеренный в 3.6 В. SD Spec заявляет, что скорости 50 МГц и выше могут потребовать установки более высоких настроек максимальной мощности (по умолчанию для наших типичных карт равен 0.36 Вт/0.72W = 100 мА/200 мА).

Сила водителя - прочность водителя применима для 1.Только сигнализация 8 В.

victor_pv
Сб 27 мая 2017 г. 14:13
Пито написал:@victor - Большая часть настроек CMD6 работает с SDIO и 1.Только сигнализация 8 В. Afik единственный настройка, применимый для 3.Сигнализация 3 В является настройкой высокоскоростной режима. Cmd6 читает 64bytes, где вы получаете некоторую информацию.

Максимальная скорость - вы можете установить здесь 50 МГц, так как 25 и 50 являются единственными поддерживаемыми 3.Сигнализация 3V (у нас нет 1.Сигнализация 8 В с помощью STM32F407).

Питание - это максимальная мощность, которую карта может извлечь из розетки - 0.36W - 2.88WATT, в основном это ток, взятый из источника VCC SDCARD, измеренный в 3.6 В. SD Spec заявляет, что скорости 50 МГц и выше могут потребовать установки более высоких настроек максимальной мощности (по умолчанию для наших типичных карт равен 0.36 Вт/0.72W = 100 мА/200 мА).

Сила водителя - прочность водителя применима для 1.Только сигнализация 8 В.

Стивестронг
Пн 29 мая 2017 г. 9:38
Коэффициент нестабильности, по моему опыту с F4, может быть вызван источником питания. SD -карты могут потреблять более 100..Пиковое значение 150 мА при использовании в режиме высокой скорости (50 МГц).

Моя деятельность во время теста SPI с картами SD показала, что результаты гораздо более стабильны, если вы используете отдельный источник питания 5 В для платы, а не из USB -хоста. Или вы подключаетесь к USB -концентратору, поставляемому внешним адаптером. Кормление с внешним 3.3V (200 мА) непосредственно может улучшить стабильность.

AG123
Пн 29 мая 2017 г. 9:11 вечера
Я думаю, что если ошибки CRC не приведут к потере данных, это, возможно, означает, что Nak's и Retransmit сделаны в протоколе & алгоритм.
это все равно было бы в порядке.

Но если ошибки CRC приводят к потере данных, возможно, что -то не так в протоколе / алгоритме.

Ошибки CRC могут произойти, если либо SD -карта, «слишком медленная», или что STM32 прерывается, в то время как некоторые данные переполняют буфер. могут быть киоски между прерывами. И проблема в том, что подробные характеристики «высокой скорости» SDIO, по -видимому, не публикуются публично. Следовательно, мы можем только сделать и сделать лучшее предположение на основе доступной информации и реализации HAL

С точки зрения тайм -аута команд, это может означать, что приложение должно периодически «пинговать» карту периодически? или, возможно, сделайте проверку, если карта простаивает и при необходимости перезагрузить инициализацию

Пито
Вторник 30 мая 2017 г. 10:23
Сэмми 16 ГБ CL10 - подключен к другому USB -порту и добавил дополнительную мощность 5V из серийного ключа (выше двоичного): Use a freshly formatted SD for best performance. Type any character to start ************************************************* Opening the read file.. Opening the write file.. Reading, Writing and calculating CRC of In file... State value (HAL_SD_STATE...): 1 Errorcode value (HAL_SD_ERROR...): 0 R1 value: 101100000000 HAL Return value (HAL_...): 0 C:\Users\Victor\Documents\Arduino\Hardware\STM32GENERIC\STM32\libraries\SDIO\src\SDIO.cpp 168 readBlocks Timeout on Read, over 6400ms Type any character to start State value (HAL_SD_STATE...): 1 Errorcode value (HAL_SD_ERROR...): 4 R1 value: 100100000000 HAL Return value (HAL_...): 1 C:\Users\Victor\Documents\Arduino\Hardware\STM32GENERIC\STM32\libraries\SDIO\src\SDIO.cpp 158 readBlocks error: opening test_out.bin for delete failed

Пито
Ср 31 мая 2017 г., 7:37
Скомпилирован с последним SDIO Lib и SDCopyTest Victor, Samsung 16GB CL10, 2x10U, развязка, 3.3+5 В USB Use a freshly formatted SD for best performance. Type any character to start ************************************************* Opening the read file.. Opening the write file.. Reading and Writing.. State value (HAL_SD_STATE...): 1 Errorcode value (HAL_SD_ERROR...): 0 R1 value: 101100000000 HAL Return value (HAL_...): 0 C:\Users\pito\MyCode\Arduino\hardware\Arduino_STM32\STM32DE\libraries\SDIO\src\SDIO.cpp 199 readBlocks Timeout on Read, over 12800ms Use a freshly formatted SD for best performance. Type any character to start State value (HAL_SD_STATE...): 1 Errorcode value (HAL_SD_ERROR...): 2 R1 value: 100100000000 HAL Return value (HAL_...): 0 C:\Users\pito\MyCode\Arduino\hardware\Arduino_STM32\STM32DE\libraries\SDIO\src\SDIO.cpp 199 readBlocks Timeout on Read, over 200ms Invalid format, reformat SD.

Даниэфф
Ср 31 мая 2017 г. 9:08
Было бы неплохо посмотреть, может ли он успешно читать / написать несколько блоков, а затем останавливается или даже не может прочитать / написать первый блок.

Стивестронг
Ср 31 мая 2017 г. 14:59
Пито написал:Значение R1: 101100000000

Пито
Ср 31 мая 2017 г., 8:26 вечера
Все тайм -ауты увеличились в 10 раз #define sdRdTimeout 2000 #define sdWrTimeout 5000 #define sdBsyTimeout 5000 #define sdErTimeout 2500 #define sd_timeout 2500 // timeout in ms in the new HAL API

Пито
Ср 31 мая 2017 г., 22:21
Samsung Evo 16GB CL10, 4Bit SDIO, 168/24 МГц, 102 МБ файл Use a freshly formatted SD for best performance. Type any character to start ************************************************* Opening the read file.. Opening the write file.. Reading and Writing.. ************************************************* Done in 47545 msecs ************************************************* Running CRC calculations... File in CRC: 22483A52 File out CRC: 22483A52 ************************************************* Done in 68002 msecs

Пито
Ср 31 мая 2017 г. 22:25
Проблема в ..Stm32de \ cores \ arduino \ stm32 \ stm32_gpio_af_f0f2f3f4f7l0l1l4.C: GPIO_InitTypeDef GPIO_InitStruct; GPIO_InitStruct.Pin = pin; GPIO_InitStruct.Mode = mode; GPIO_InitStruct.Pull = pull; GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_MEDIUM; //GPIO_SPEED_FREQ_VERY_HIGH; <<<<<<<<<<< THE PROBLEM GPIO_InitStruct.Alternate = stm32AfGet(list, size, instance, port, pin); HAL_GPIO_Init(port, &GPIO_InitStruct);

Пито
Чт, 01 июня 2017 г., 6:39
Samsung Evo 16GB CL10, SDIO 4BIT, 200/33.3 МГц File size 5 MB Buffer size 65536 bytes Starting write test, please wait. write speed and latency speed,max,min,avg KB/Sec,usec,usec,usec 10574.81,27066,5642,6140 10574.81,21555,5642,6140 Starting read test, please wait. read speed and latency speed,max,min,avg KB/Sec,usec,usec,usec 14030.24,6463,4629,4671 14069.88,5345,4627,4655 Done Type any character to start

AG123
Чт, 01 июня 2017 г., 19:34
Вау 14 МБ за секунды, вы достигаете узкого места даже 100 Мбит / с быстро Ethernet, вам понадобится USB 2.0 * Высокая скорость *, чтобы поговорить с рабочим столом :ржу не могу:

victor_pv
Пт, 02 июня 2017 г. 12:50 утра
Стивестронг написал:Пито написал:Значение R1: 101100000000

victor_pv
Пт, 02 июня 2017 г. 12:55 утра
Пито написал:Samsung Evo 16GB CL10, 4Bit SDIO, 168/24 МГц, 102 МБ файл Use a freshly formatted SD for best performance. Type any character to start ************************************************* Opening the read file.. Opening the write file.. Reading and Writing.. ************************************************* Done in 47545 msecs ************************************************* Running CRC calculations... File in CRC: 22483A52 File out CRC: 22483A52 ************************************************* Done in 68002 msecs

Пито
Пт, 02 июня 2017 г., 6:45
Вы внесли какие -либо изменения, чтобы он работал в режиме 4 -бит на этот раз? Это изменило что -то в настройках порта GPIO? Да, я сделал, увидел свой пост выше о скорости.

AG123
Пт, 02 июня 2017 г. 13:36
Если gpio_speed_freq_medium предназначен для Sammy Class 10, то, что подходит для GPIO_SPEED_FREQ_VERY_HIGH? Гбит / с? :ржу не могу:
^^^ Кстати, GPIO_SPEED_FREQ_MEDIUM Скорость, которая работает для использования с текущим драйвером SDIO?

Пито
Пт, 02 июня 2017 г. 15:46
AG123 написал:Если gpio_speed_freq_medium предназначен для Sammy Class 10, то, что подходит для GPIO_SPEED_FREQ_VERY_HIGH? Гбит / с? :ржу не могу:
^^^ Кстати, GPIO_SPEED_FREQ_MEDIUM Скорость, которая работает для использования с текущим драйвером SDIO?

Даниэфф
Пт, 02 июня 2017 г., 16:53
Ну, тогда средний это будет.

Учитывая, что в нынешнем мастере SDIO даже не компилируется, я был бы рад вытащить текущее состояние. И создать SDFAT/SRC/SDCARD/SDIOSTM32.CPP, так что текущий STM32Sdfatsdio.H может быть удален с повсюду, и я позабочусь о том, чтобы включенный SDFAT собирал, есть ли чип SDIO или нет.
(Кстати, нет необходимости создавать различный код для F1, так как я думаю, что F1 HAL также будет обновлен до нового стиля SDIO)

Даниэфф
SAT 03 июня 2017 г., 7:32 утра
Пито написал: Я не знаю, является ли скорость нажатия единственной причиной проблемы. При просмотре SDIO с F4 вы можете увидеть наиболее рекомендуемой настройки - среда. И это единственная настройка, которая работает с Samsung в 24-33 МГц здесь.
Часы выше 33 МГц здесь тоже не работают, так что все же это может быть и другая проблема..

AG123
SAT 03 июня 2017 г. 8:22 утра
Маленький секрет здесь - F4 пробегает на уровне 240 МГц (против «официального» 168 МГц) столь же способным, как и F7, предпочтительно добавляет немного испарительного жидкого азота для стабильности :ржу не могу:
http: // www.STM32duino.com/viewtopic.PHP ... 160#P26942

Пито
SAT 03 июня 2017 г. 9:46
Даниэфф написал:Пито написал: Я не знаю, является ли скорость нажатия единственной причиной проблемы. При просмотре SDIO с F4 вы можете увидеть наиболее рекомендуемой настройки - среда. И это единственная настройка, которая работает с Samsung в 24-33 МГц здесь.
Часы выше 33 МГц здесь тоже не работают, так что все же это может быть и другая проблема..

Пито
SAT 03 июня 2017 г. 10:42
Это с Samsung Evo 16GB CL10 и 240MHZ_FCPU/34.3MHZ_SDIO (все ниже с черной платой F407ZET): File size 5 MB Buffer size 65536 bytes Starting write test, please wait. write speed and latency speed,max,min,avg KB/Sec,usec,usec,usec 10376.53,27872,5529,6249 10851.28,17714,5529,5971 Starting read test, please wait. read speed and latency speed,max,min,avg KB/Sec,usec,usec,usec 14395.19,6292,4515,4557 14395.19,5229,4515,4543 Done Type any character to start

Пито
Сб, 03 июня 2017 г. 15:48
Sandisk Ultra 16 ГБ CL10, 240/34.3 МГц, 1.513 ГБ большой файл (CRC32 = 06172C89): Use a freshly formatted SD for best performance.. ************************************************* Opening the read file.. Opening the write file.. Reading and Writing.. ************************************************* Done in 493254 msecs ************************************************* Running CRC calculations... File in CRC: 6172C89 File out CRC: 6172C89 ************************************************* Done in 715025 msecs

ZMEMW16
SAT 03 июня 2017 г. 16:21
Любой шанс распечатать время раскола отдельно для операций чтения и записи?

Другой - для нас, плюддерс с досками 8 МГц и/или 25 МГц, любая вероятность пулентного доказательства более медленного/гораздо более медленного набора файлов ?
У некоторых из нас нет более быстрых полос, только ваш основной синий CZ MinistM32 F103VET/Zet, Black 407Vet/Zet/Zgt :рулон:
SRP

victor_pv
SAT 03 июня 2017 г., 17:19
Пито написал:Я чувствую, что он должен работать на 50 МГц SDIO, когда SDCARD устанавливается в режим высокого скорости (CMD6), и, возможно, активированная «ячейка для нагрузки GPIO».. Мы работаем здесь с разгоночными вещами, чтобы эксперты STM не помогли с этим, конечно :)

Пито
SAT 03 июня 2017 г., 17:34
Для экспериментальных целей высокоскоростный режим с картой CL10 устанавливается следующим образом (в режиме медленных часов):
1. Выпустите CMD6 с аргументом 0x80000001 SDMMC_CmdSwitchFunction(SDIO, 0x80000001);

AG123
SAT 03 июня 2017 г., 21:17
Вау, 16 МБ за секунды & он копирует 1.5 ГБ в ниже 8 & 1/3 минуты, Fast Ethernet определенно не может наверстать упущенное, вам понадобится USB 2.0 * Высокая скорость *, чтобы получить хост :ржу не могу:

Пито
Вт 13 июня 2017 г. 6:51
Не уверен, куда разместить это, но позвольте мне начать здесь:
Я провел прошлой ночью, возившись в следующем выпуске - Black F407ZET с внешним SRAM 512 КБ, куча во внешней SRAM, SDCARD через SDIO, SDFAT, Основные частоты.

«MBMP», выделенный в куче через Malloc (), распределение прошло нормально.

Это не работает, он висит в записи: if (myFile.write(mbmp.data, mbmp.size) != mbmp.size) { Serial.println(F("### Error writing the file..")); return 1; }

Даниэфф
Вт 13 июня 2017 г. 10:50 утра
Я могу тестировать только внешнюю ОЗУ + SDIO на F7, но в этой ветви SDIO не компилируется. Я объединю филиал SDIO, чтобы освоить, и исправить его для работы с F7, исправить другие вещи, слияние STM32Sdfatsdio.H в SDFAT и т. Д...

Пито
Вт 13 июня 2017 г. 18:49
Я начал с отладчика, и он останавливается здесь - sdio.Строка CPP 221:
uint8_t SDIOClass::writeBlocks(uint32_t block, const uint8_t* src, size_t nb) { if (((uint32_t)src & 0x3) !=0){ // Serial.println("### Not aligned src in SDIO.cpp line 221"); // Added by Pito while (1); //Hang here, src was not aligned to word, this is a problem }

Стивестронг
Вт 13 июня 2017 г., 19:46
Отсутствует выравнивание (4) ?

Пито
Вт 13 июня 2017 г., 19:51
в сценарии LD?

Стивестронг
Вт 13 июня 2017 г., 19:53
общий.Inc для Libmaple

Даниэфф
Ср 14 июня 2017 г. 3:36 утра
Я объединил SDIO, чтобы освоить. Работает на F4/F7. Не работает на F1 из -за несоответствия HAL, но он скоро будет обновлен. DMA в настоящее время управляется централизованно.
Измененная скорость перекоса GPIO на среднюю. Фиксированный SDFAT, примеры и т. Д... (Несвязанный: F407 SPI теперь находится на PA5/PA6/PA7)

Malloc выровняется до 8, поэтому, вероятно, данные в структуре MBMP не являются первым элементом. (Можете ли вы распечатать адрес MBMP и показать структуру MBMP)

Пито
Ср 14 июня 2017 г., 7:29 утра
Это структура: typedef struct tagBitmap { size_t width; size_t height; size_t size; unsigned char *data; } Bitmap;

ZMEMW16
Ср 14 июня 2017 г. 7:53 утра
При использовании вызова для функции/процедуры со значениями дефолта, разве нет некоторых правил о том, как установить список параметров.
это что -то подобное ?

Мой синтаксис неправ, я читал об этом некоторое время назад и подумал, что это может быть полезно (как?) void fred ( int a=0, int b=1, int c=2); fred ( 2,3,4); fred ( c=5); fred ( b=2, 5);

Стивестронг
Ср 14 июня 2017 г. 8:14
Определите MBMP или только указатель данных как выровненные Bitmap mbmp __attribute__((aligned(4)));

Пито
Ср 14 июня 2017 г. 8:27 утра
Неа..
Это может быть мифил.write () или stm32sdfatsdio.H поставляет неправильные параметры для драйвера SDIO.
Блок = 20289, src = 0x680001d2, nb = 63 .. это странно, не так ли?

Даниэфф
Ср 14 июня 2017 г. 8:43
Да, это странно. Где первый 0x680001d2 - 0x68000008 = 458 байтов Go.
В любом случае, когда не выровнен, мы можем просто делать регулярную запись вместо DMA написать.

Пито
Ср 14 июня 2017 г. 8:50 утра
Он работал с F103ZET и кучей во внешнем SRAM и с SPI.
http: // www.STM32duino.com/viewtopic.PHP ... 140#P22415

Даниэфф
Ср 14 июня 2017 г. 10:20 утра
Тогда это, вероятно, правильно. Попробуйте с _usedma = false;, и удалите проверку выравнивания.

Пито
Ср 14 июня 2017 г. 10:38
С _usedma = false, и в то время как (1) в проверке выравнивания я получу (3 числа в конце есть: block, src, nb) Writing the .bmp to SDcard.. ### Not aligned SDIO.cpp writeBlocks line 221 20289 680001D2 63 ### Not aligned SDIO.cpp writeBlocks line 221 20352 68007FD2 64 ### Not aligned SDIO.cpp writeBlocks line 221 20416 6800FFD2 64 ### Not aligned SDIO.cpp writeBlocks line 221 20480 68017FD2 64 ### Not aligned SDIO.cpp writeBlocks line 221 20544 6801FFD2 64 ### Not aligned SDIO.cpp writeBlocks line 221 20608 68027FD2 64 ### Not aligned SDIO.cpp writeBlocks line 221 20672 6802FFD2 64 ### Not aligned SDIO.cpp writeBlocks line 221 20736 68037FD2 64 ### Not aligned SDIO.cpp writeBlocks line 221 20800 6803FFD2 64 ### Not aligned SDIO.cpp writeBlocks line 221 20864 68047FD2 64 ### Not aligned SDIO.cpp writeBlocks line 221 20928 6804FFD2 64 ### Not aligned SDIO.cpp writeBlocks line 221 20992 68057FD2 64 ### Not aligned SDIO.cpp writeBlocks line 221 21056 6805FFD2 64 ### Not aligned SDIO.cpp writeBlocks line 221 21120 68067FD2 64 ### Not aligned SDIO.cpp writeBlocks line 221 21184 6806FFD2 41 Done..

Пито
Ср 14 июня 2017 г. 12:50
При прохождении первых 4 проходов проходят через int FatFile::write(const void* buf, size_t nbyte) { // convert void* to uint8_t* - must be before goto statements const uint8_t* src = reinterpret_cast(buf); cache_t* pc; uint8_t cacheOption; // number of bytes left to write - must be before goto statements size_t nToWrite = nbyte; size_t n;

Пито
Ср 14 июня 2017 г. 16:04
В качестве доказательства я прокомментировал написание 54 -байт заголовка BMP, с __usedma = true, и добавил печати из адресов при выравнивании: Writing the .bmp to SDcard.. ### Aligned SDIO.cpp writeBlocks line 221 20288 68000008 64 ### Aligned SDIO.cpp writeBlocks line 221 20352 68008008 64 ### Aligned SDIO.cpp writeBlocks line 221 20416 68010008 64 ### Aligned SDIO.cpp writeBlocks line 221 20480 68018008 64 ### Aligned SDIO.cpp writeBlocks line 221 20544 68020008 64 ### Aligned SDIO.cpp writeBlocks line 221 20608 68028008 64 ### Aligned SDIO.cpp writeBlocks line 221 20672 68030008 64 ### Aligned SDIO.cpp writeBlocks line 221 20736 68038008 64 ### Aligned SDIO.cpp writeBlocks line 221 20800 68040008 64 ### Aligned SDIO.cpp writeBlocks line 221 20864 68048008 64 ### Aligned SDIO.cpp writeBlocks line 221 20928 68050008 64 ### Aligned SDIO.cpp writeBlocks line 221 20992 68058008 64 ### Aligned SDIO.cpp writeBlocks line 221 21056 68060008 64 ### Aligned SDIO.cpp writeBlocks line 221 21120 68068008 64 ### Aligned SDIO.cpp writeBlocks line 221 21184 68070008 41 Close file: ### Aligned SDIO.cpp writeBlocks line 221 21225 200000F8 1 ### Aligned SDIO.cpp writeBlocks line 221 16384 200000F8 1 ### Aligned SDIO.cpp writeBlocks line 221 8790 20000304 1 ### Aligned SDIO.cpp writeBlocks line 221 12587 20000304 1 Done..

Пито
Чт 15 июня 2017 г., 6:03
Это небольшая модификация в SDIO.CPP, который работает с выровненными и смещенными, однако не решает DMA для смещения:
uint8_t SDIOClass::readBlocks(uint32_t block, uint8_t* dst, size_t nb) { if (((uint32_t)dst & 0x3U) != 0){ // while (1); //Hang here, dst was not aligned to word, this is a problem _useDMA = false; } else { _useDMA = true; }

Даниэфф
Чт 15 июня 2017 г., 6:29
Я взял это на себя, чтобы Мастер, чтобы исправить это: https: // github.com/danieleff/stm32gener ... 11f6f9def1

Как вы можете видеть, как и в случае с SPI, блокировка SDIO DMA не так быстрее, чем блокирование SDIO Non-DMA, поэтому я не буду беспокоиться о производительности.

Пито
Чт 15 июня 2017 г., 6:53
И недооцененный результат записи :) в долине морской конь

Обновление: с радужным цветным колесом
Mandel 400x400x1024COL SingleP FPU 7Secs.jpg
Mandel 400x400x1024COL SingleP FPU 7secs.JPG (102.26 киб) просмотрено 273 раза

victor_pv
Чт 15 июня 2017 г. 9:18 вечера
Даниэфф написал:Да, это странно. Где первый 0x680001d2 - 0x68000008 = 458 байтов Go.
В любом случае, когда не выровнен, мы можем просто делать регулярную запись вместо DMA написать.

Пито
Пт 16 июня 2017 г. 16:47
Тем не менее, примерно в 20% случаев, открывая карту (после сброса) я получаю Opening the SDcard's bmp file.. State value (HAL_SD_STATE...): 1 Errorcode value (HAL_SD_ERROR...): 80000000 R1 value: 0 HAL Return value (HAL_...): 1 C:\Users\pito\MyCode\Arduino\hardware\Arduino_STM32\STM32DE\libraries\SDIO\src\SDIO.cpp 121 begin ### Error opening the SDcard's file..

Даниэфф
Пт 16 июня 2017 г. 18:06
Я получаю то же самое.
Кажется, застряло:
Hal_sd_init -> Hal_sd_initcard -> SD_Poweron -> SDMMC_CMDGOIDLESTATE -> SDMMC_GETCMDERROR

В основном он отправляет cmd0, а затем тайм -ауты, ожидая SDIO_FLAG_CMDSENT (проблема уже есть в HAL_SD_INIT, а не в HAL_SD_CONFIGWIDEBUSORERATY)

Стивестронг
Пт 16 июня 2017 г., 18:30
Я использую эту строку, чтобы обнаружить конец команды, потому что также были проблемы с флагом Cmdend: while ( (SDIO->STA&SDIO_STA_CMDACT) ) ; // wait for actual command to be sent

Даниэфф
Пт 16 июня 2017 г. 18:49
Да, кажется, застряло в ожидании отправки команды, поэтому она не инициализирована должным образом.
Если у вас есть SDFAT, можете ли вы просто использовать пример скамейки?

Если я помесчу `hal_delay (1);` mination `sdio_powerstate_on` и` __hal_sd_enable`, я получаю гораздо лучшие результаты (кажется, всегда инициализируется): https: // github.com/danieleff/stm32gener ... _SD.C#L379

Стивестронг
Пт 16 июня 2017 г. 18:56
Даниэфф написал:Если у вас есть SDFAT, можете ли вы просто использовать пример скамейки?

Пито
Пт 16 июня 2017 г., 19:49
@Steve: Если вы хотите, чтобы смелость от блока данных, просто сделайте MyFile.Напишите ('x'), прежде чем начать писать блок с помощью myfile.написать (блок, размер).
Он пишет Byte X и первые 511 байтов из блока в кэш и на карту, затем начинает писать блок через DMA с адреса 511 Блока (смещено). Теперь в SDIO есть исправление.CPP такой вы не увидите ошибки, вместо этого он будет писать без DMA. Вы должны неудобно, когда (1) Там такое, что он висит с смещением (см. Выше).
Я скоро подготовлю демонстрацию Мандельброта.

@Daniel: Я немного прочитал на «SDIO Проблема STM32F407» и нашел много отчаянных тем в сообществе.ул.компонент. Честно говоря, я очень удивлен, что наш SDIO работает так хорошо :)
Я видел где -то на этом форуме, они вставили задержку (10) где -то в init, а затем до Cmd55 и до cmd10, как я помню. Я должен снова найти эту дискуссию :рулон:

Пито
Пт 16 июня 2017 г., 21:13
Даниэфф написал:Если я помесчу `hal_delay (1);` mination `sdio_powerstate_on` и` __hal_sd_enable`, я получаю гораздо лучшие результаты (кажется, всегда инициализируется): https: // github.com/danieleff/stm32gener ... _SD.C#L379

Стивестронг
SAT 17 июня 2017 г. 8:03
Пито написал:@Steve: Если вы хотите, чтобы смелость от блока данных, просто сделайте MyFile.Напишите ('x'), прежде чем начать писать блок с помощью myfile.написать (блок, размер).
Он пишет Byte X и первые 511 байтов из блока в кэш и на карту, затем начинает писать блок через DMA с адреса 511 Блока (смещено).

Пито
Сб 17 июня 2017 г. 13:05
Когда вы делите блок, который вы читаете с прямого адреса RAM Block - поэтому значение выравнивания имеет значение. Вы не пишите через кеш при выполнении DMA.

Пито
Солнце 18 июня 2017 г. 16:43
Работая с примером Zmodem, я редко (2 раза из, возможно, 20 передач) получил следующую ошибку (168/24 МГц, Samsung CL10): State value (HAL_SD_STATE...): 1 Errorcode value (HAL_SD_ERROR...): 10 R1 value: 100100000000 HAL Return value (HAL_...): 1 C:\Users\pito\MyCode\Arduino\hardware\Arduino_STM32\STM32DE\libraries\SDIO\src\SDIO.cpp 270 writeBlocks