Файлы быстрого чтения от STM32F103C8T6

Mkeyno
Ср. 13 июля 2016 г., 9:41
Привет, ребята, я очень ценю за любую помощь или намек на функцию STM и возможности для освещения, на самом деле я управлял POV Project с Teensy 3.1, который читается с изображением с SD -карты и покажите линию светодиодной полосы за линейкой . Для получения преимуществ новых функций ESP WebServer и WebSocket LIB, которые я перевел, чтобы запустить POV на ESP, однако чтение файлов изображений от Spiff было настолько медленным, тогда как необходимо, по крайней мере, читать 2.5 Mbyte/S, я думаю, может быть, было бы неплохо загрузить и управлять анимационным шоу от ESP и позволить рабу разработать такую ​​STM32F103C8T6, обрабатывая алгоритм POV, как вы думаете, чип STM с 64 -километровой вспышкой & 20Kbyte SRAM мог бы справиться с такой задачей? Я мог бы добавить, что я использую Fastled Lib и, надеюсь, смогу бежать на вашей STM Lib
Любые советы действительно ценится

Rogerclark
Ср. 13 июля 2016 г. 9:10 вечера
Не могли бы вы рассказать о том, что означает POV в вашем контексте.

Re: скорость передачи файла

2.5 м байтов за секунду - очень высокая скорость передачи данных для передачи SPI на SD -карту.

Видеть
http: // elm-chan.org/docs/mmc/mmc_e.HTML

Мы можем разгонять SPI до 36 МГц, но я не знаю, если какие -либо карты SD пошли так быстро.

Я приостановлен, вам нужно использовать SDIO, но эта функция недоступна на STM32F103C8, и у нас нет библиотеки SDIO для ядра Libmaple.

Я уверен, что MCU серии F4 может обработать столько данных из SDIO, но, поскольку в настоящее время нет библиотеки SDIO, вы, вероятно, должны попытаться получить Raspberry Pi Zero или другую высокоскоростную доску Unix E.глин. Оранжевый пи

Martinayotte
Ср. 13 июля 2016 г., 21:41
@mkeyno, я помню, как видел вашу дискуссию о Esp Gitter...

О ваших тестах с Teensy 3.1, какую производительность вы достигли ?

Ахулл
Ср. 13 июля 2016 г., 22:34
Вы также можете рассмотреть что -то вроде вспышки SPI, а не SD -карта.
Что-нибудь как это.

Martinayotte
Ср. 13 июля 2016 г., 22:42
... а также избегайте слоя файловой системы, поскольку ваши потребности просто для получения огромного количества RGB с известной длиной.

Mkeyno
Пн 18 июля 2016 г. 12:07
Извините за поздний ответ, я только что уведомил, и большое спасибо вам за ответ и оставьте вам заметки,
@ Rogerclark, POV - это видение, поставляется с вращением одной линии, приведенного в продукт, все изображение, я сделал это с Teensy3.1 Подключен к SD -карте, который просто прочитал изображение, линейку по линии и вставьте светодиодную полосу, чтобы получить преимущества функции ESP, я попытался использовать Spiff для размещения файлов изображений и функции WebServer для загрузки изображений, однако после пары о проверенных и многих обсуждающихся в комнате ESP Gitter, заметил, что ESP недостаточно быстр, чтобы прочитать изображение, и помимо фрагментации файла удерживает скорость обратно на оптимальную
В лучшей попытке я достигаю около 60 мс для каждого кадра, для 25 кадров/s я должен доставить 144 светодиодного пикселя * 3 байтовых данных RGB * 200 Line of Image = около 85Kbyte для каждого кадра и около 2 мбайт/с
Я думал, что с помощью функции DMA STMF103 может достичь такой производительности, тогда как она подключена к модулю ESP, как подчиненный модуль, я еще не решаю проверить его, но некоторые парни сказали мне, что ESP32 с двумя дополнительными разделенными ядра с бесплатной функцией DMA может справиться с этим
Если у вас, ребята, есть какой -либо опыт для SD Card Fast Reading By STMF103, я действительно ценил, чтобы иметь ваши подсказки

Racemaniac
Пн 18 июля 2016 г. 12:17
Mkeyno написал:Извините за поздний ответ, я только что уведомил, и большое спасибо вам за ответ и оставьте вам заметки,
@ Rogerclark, POV - это видение, поставляется с вращением одной линии, приведенного в продукт, все изображение, я сделал это с Teensy3.1 Подключен к SD -карте, который просто прочитал изображение, линейку по линии и вставьте светодиодную полосу, чтобы получить преимущества функции ESP, я попытался использовать Spiff для размещения файлов изображений и функции WebServer для загрузки изображений, однако после пары о проверенных и многих обсуждающихся в комнате ESP Gitter, заметил, что ESP недостаточно быстр, чтобы прочитать изображение, и помимо фрагментации файла удерживает скорость обратно на оптимальную
В лучшей попытке я достигаю около 60 мс для каждого кадра, для 25 кадров/s я должен доставить 144 светодиодного пикселя * 3 байтовых данных RGB * 200 Line of Image = около 85Kbyte для каждого кадра и около 2 мбайт/с
Я думал, что с помощью функции DMA STMF103 может достичь такой производительности, тогда как она подключена к модулю ESP, как подчиненный модуль, я еще не решаю проверить его, но некоторые парни сказали мне, что ESP32 с двумя дополнительными разделенными ядра с бесплатной функцией DMA может справиться с этим
Если у вас, ребята, есть какой -либо опыт для SD Card Fast Reading By STMF103, я действительно ценил, чтобы иметь ваши подсказки

Mkeyno
Пн 18 июля 2016 г. 12:21
Martinayotte написал:... а также избегайте слоя файловой системы, поскольку ваши потребности просто для получения огромного количества RGB с известной длиной.

Mkeyno
Пн 18 июля 2016 г. 12:34
Реданьяк написал: Недавно я сталкивался с аналогичными требованиями с потоковыми небольшими звуками, которые я хотел сыграть на своем Maple Mini, и, честно говоря, я даже не беспокоился о SD -картах... Текущая реализация DMA быстрая, но блокируя, вы можете попытаться это изменить, но если вы посмотрите на код, накладные расходы на файловую систему SD -карты огромны (также несоответствие того, как & Когда он реагирует из -за внутреннего управления тоже не очень хорошо).
Я не знаю, сколько данных вам нужно, но в итоге я просто купил несколько вспышек SPI (самые большие, которые у меня есть, - 1 ГБ (= 128 мбат)), и это намного проще работать с ними. Простой протокол для чтения данных из них, я сделал пользовательскую «файловую систему» ​​(первый 1K флеш -чипа содержит метаданные & Адреса того, что хранится где, и я держу в памяти). А потом я смог быстро написать простую структуру, которая позволяет мне транслировать многие каналы аудиоданных WAV из флеш -чипа на полной скорости порта SPI, и хорошо в фоновом режиме с DMA :).

Поэтому, если вам не нужны гигабайты данных, вам действительно следует рассмотреть опцию Flash Chip. Единственным использованием SD -карты в моем проекте было загрузить данные в Flash Chip XD.

Стивестронг
Пн 18 июля 2016 г. 12:38
Mkeyno написал:... 144 Светодиодный пиксель * 3 байтовых данных RGB * 200 Линия изображения ...

Стивестронг
Пн 18 июля 2016 г. 12:41
Кроме того, если вы не используете весь спектр 3*rgb (8bits) = 24 бита для одного светодиода, то вы можете сжать информацию о цвете данных.

Mkeyno
Пн 18 июля 2016 г. 12:44
Стивестронг написал:Mkeyno написал:... 144 Светодиодный пиксель * 3 байтовых данных RGB * 200 Линия изображения ...

Стивестронг
Пн 18 июля 2016 г. 12:56 вечера
Хммм, может.1 достичь такой скорости считывания SD, а STM32-? Интересно, почему...

Racemaniac
Пн 18 июля 2016 г., 12:58
Mkeyno написал:Реданьяк написал: Недавно я сталкивался с аналогичными требованиями с потоковыми небольшими звуками, которые я хотел сыграть на своем Maple Mini, и, честно говоря, я даже не беспокоился о SD -картах... Текущая реализация DMA быстрая, но блокируя, вы можете попытаться это изменить, но если вы посмотрите на код, накладные расходы на файловую систему SD -карты огромны (также несоответствие того, как & Когда он реагирует из -за внутреннего управления тоже не очень хорошо).
Я не знаю, сколько данных вам нужно, но в итоге я просто купил несколько вспышек SPI (самые большие, которые у меня есть, - 1 ГБ (= 128 мбат)), и это намного проще работать с ними. Простой протокол для чтения данных из них, я сделал пользовательскую «файловую систему» ​​(первый 1K флеш -чипа содержит метаданные & Адреса того, что хранится где, и я держу в памяти). А потом я смог быстро написать простую структуру, которая позволяет мне транслировать многие каналы аудиоданных WAV из флеш -чипа на полной скорости порта SPI, и хорошо в фоновом режиме с DMA :).

Поэтому, если вам не нужны гигабайты данных, вам действительно следует рассмотреть опцию Flash Chip. Единственным использованием SD -карты в моем проекте было загрузить данные в Flash Chip XD.

Mkeyno
Пн 18 июля 2016 г. 13:00
Стивестронг написал:Хммм, может.1 достичь такой скорости считывания SD, а STM32-? Интересно, почему...

Mkeyno
Пн 18 июля 2016 г., 13:04
Реданьяк написал:
Я не знаю много о возможностях ESP. Но для STM32: порт SPI может на максимальной до 32 МГц, это 32 мегабит/с, поэтому 4 мегабайт в секунду в секунду. Никакая реализация программного обеспечения не приблизится к этому. И вы можете заглянуть в нить SDFAT о тестах SD -карт на Maple Mini, я думаю, что они едва превзошли 1 мегабайт/с.... Если вы хотите 2.Скорость 5 мегабайта/с, я бы посоветовал пойти на Flashchip и STM32, обрабатывая данные & Управление светодиодами. Вам понадобится что -то с аппаратным портом, либо с гораздо более высокой скоростью процессора, чем ESP/STM32, чтобы получить такие данные, и SD -карты, адресованные SPI, тоже не получит его....

Racemaniac
Пн 18 июля 2016 г., 13:22
Mkeyno написал:Реданьяк написал:
Я не знаю много о возможностях ESP. Но для STM32: порт SPI может на максимальной до 32 МГц, это 32 мегабит/с, поэтому 4 мегабайт в секунду в секунду. Никакая реализация программного обеспечения не приблизится к этому. И вы можете заглянуть в нить SDFAT о тестах SD -карт на Maple Mini, я думаю, что они едва превзошли 1 мегабайт/с.... Если вы хотите 2.Скорость 5 мегабайта/с, я бы посоветовал пойти на Flashchip и STM32, обрабатывая данные & Управление светодиодами. Вам понадобится что -то с аппаратным портом, либо с гораздо более высокой скоростью процессора, чем ESP/STM32, чтобы получить такие данные, и SD -карты, адресованные SPI, тоже не получит его....

Mkeyno
Пн 18 июля 2016 г., 13:48
Реданьяк написал:Например, что -то подобное: https: // www.Уинбонд.com/resource-files/ ... _rev_g.PDF
Есть много вспышек, которые вы можете найти на таких сайтах, как Aliexpress, все с аналогичными протоколами & функции :).

Стивестронг
Пн 18 июля 2016 г., 14:08
Mkeyno написал: Я не знаю точно, как ESP не может достичь лучшей производительности

Racemaniac
Пн 18 июля 2016 г., 14:36
Mkeyno написал:Реданьяк написал:Например, что -то подобное: https: // www.Уинбонд.com/resource-files/ ... _rev_g.PDF
Есть много вспышек, которые вы можете найти на таких сайтах, как Aliexpress, все с аналогичными протоколами & функции :).

Martinayotte
Пн 18 июля 2016 г., 15:13
Реданьяк написал:ESP не имеет аппаратного порта SPI

Racemaniac
Пн 18 июля 2016 г. 15:22
Martinayotte написал:Реданьяк написал:ESP не имеет аппаратного порта SPI

Стивестронг
Пн 18 июля 2016 г. 18:26
Martinayotte написал:Это также можно сделать с помощью SDCARD без его форматирования (без FAT16, без FAT32), простого доступа к секторам по секторам в качестве необработанного потока данных, оно ускорит вещи.

Martinayotte
Пн 18 июля 2016 г., 19:52
Все еще используя низкую часть SDFAT, существуют такие функции, как readblock () и readblocks () для чтения 512bytes секторов из карты.
Я никогда не делал этого с sdcard, но должен быть выполнен. Что я сделал, что немного похоже на чтение Spiflash на STM32 с использованием readbytes ()

Mkeyno
Пн 18 июля 2016 г., 21:59
Реданьяк написал:
ESP не имеет аппаратного порта SPI, поэтому вы действительно не сможете получить высокие данные о данных...
Так что лучше всего использовать STM32 в качестве раба, чтобы сделать тяжелую работу для вас

Почему esp, кстати? Можете ли вы по беспроводной сети прислать ему новые картинки?

Martinayotte
Пн 18 июля 2016 г. 11:14
Я до сих пор убежден, что это можно сделать с помощью ESP8266, просто пропустив списки и используя простые необработанные данные, хранящиеся в вспышке, читая кусочки с использованием memcpy_p (), немного похожа на и Progmem используется.
Чтобы убедиться, что нам нужно написать какой -то эталон, тогда, если результаты хороши, подключите вашу светодиодную полосу WS2801 RGB.

Mkeyno
Вт 19 июля 2016 г., 6:25
Martinayotte написал:Все еще используя низкую часть SDFAT, существуют такие функции, как readblock () и readblocks () для чтения 512bytes секторов из карты.
Я никогда не делал этого с sdcard, но должен быть выполнен. Что я сделал, что немного похоже на чтение Spiflash на STM32 с использованием readbytes ()

Mkeyno
Вт 19 июля 2016 г., 6:29
Martinayotte написал:Я до сих пор убежден, что это можно сделать с помощью ESP8266, просто пропустив списки и используя простые необработанные данные, хранящиеся в вспышке, читая кусочки с использованием memcpy_p (), немного похожа на и Progmem используется.
Чтобы убедиться, что нам нужно написать какой -то эталон, тогда, если результаты хороши, подключите вашу светодиодную полосу WS2801 RGB.

Martinayotte
Вт 19 июля 2016 г., 16:17
Я сделал небольшой тест на производительность FlashReard () на ESP, и следующий код дал пропускную способность 16 МБ/с для длины 1MBYTES:
Linking everything together... "/Users/john/Library/Arduino15/packages/arduino/tools/arm-none-eabi-gcc/4.8.3-2014q1/bin/arm-none-eabi-gcc" -mcpu=cortex-m3 -mthumb -Os -g -Wl,--cref -Wl,--check-sections -Wl,--gc-sections -Wl,--entry=Reset_Handler -Wl,--unresolved-symbols=report-all -Wl,--warn-common -Wl,--warn-section-align "-T/Users/john/Documents/Arduino/hardware/STM32/STM32F1/variants/STM32F103RB-Nucleo/linker_scripts/gcc/STM32F103RB_FLASH.ld" "-Wl,-Map,/var/folders/92/z76wg34d7w92sdy4g_bwlbjh0000gn/T/arduino_build_475894/bme280test.ino.map" -o "/var/folders/92/z76wg34d7w92sdy4g_bwlbjh0000gn/T/arduino_build_475894/bme280test.ino.elf" "-L/var/folders/92/z76wg34d7w92sdy4g_bwlbjh0000gn/T/arduino_build_475894" -Wl,--start-group "/var/folders/92/z76wg34d7w92sdy4g_bwlbjh0000gn/T/arduino_build_475894/core/syscalls_stm32.c.o" "/var/folders/92/z76wg34d7w92sdy4g_bwlbjh0000gn/T/arduino_build_475894/sketch/bme280test.ino.cpp.o" "/var/folders/92/z76wg34d7w92sdy4g_bwlbjh0000gn/T/arduino_build_475894/libraries/Wire/Wire.cpp.o" "/var/folders/92/z76wg34d7w92sdy4g_bwlbjh0000gn/T/arduino_build_475894/libraries/Adafruit_BME280_Library/Adafruit_BME280.cpp.o" "/var/folders/92/z76wg34d7w92sdy4g_bwlbjh0000gn/T/arduino_build_475894/libraries/SPI/SPI.cpp.o" "/var/folders/92/z76wg34d7w92sdy4g_bwlbjh0000gn/T/arduino_build_475894/core/variant.cpp.o" "/Users/john/Documents/Arduino/hardware/STM32/STM32F1/variants/STM32F103RB-Nucleo/libstm32f1_nucleo-f103rb_gcc_rel.a" "/var/folders/92/z76wg34d7w92sdy4g_bwlbjh0000gn/T/arduino_build_475894/core/core.a" -Wl,--end-group --specs=nano.specs /Users/john/Library/Arduino15/packages/arduino/tools/arm-none-eabi-gcc/4.8.3-2014q1/bin/../lib/gcc/arm-none-eabi/4.8.3/../../../../arm-none-eabi/bin/ld: warning: changing start of section .text by 4 bytes /Users/john/Library/Arduino15/packages/arduino/tools/arm-none-eabi-gcc/4.8.3-2014q1/bin/../lib/gcc/arm-none-eabi/4.8.3/../../../../arm-none-eabi/bin/ld: warning: changing start of section .rodata by 4 bytes /Users/john/Library/Arduino15/packages/arduino/tools/arm-none-eabi-gcc/4.8.3-2014q1/bin/../lib/gcc/arm-none-eabi/4.8.3/../../../../arm-none-eabi/bin/ld: warning: changing start of section .text by 4 bytes /Users/john/Library/Arduino15/packages/arduino/tools/arm-none-eabi-gcc/4.8.3-2014q1/bin/../lib/gcc/arm-none-eabi/4.8.3/../../../../arm-none-eabi/bin/ld: warning: changing start of section .rodata by 4 bytes /Users/john/Library/Arduino15/packages/arduino/tools/arm-none-eabi-gcc/4.8.3-2014q1/bin/../lib/gcc/arm-none-eabi/4.8.3/../../../../arm-none-eabi/bin/ld: warning: changing start of section .text by 4 bytes /Users/john/Library/Arduino15/packages/arduino/tools/arm-none-eabi-gcc/4.8.3-2014q1/bin/../lib/gcc/arm-none-eabi/4.8.3/../../../../arm-none-eabi/bin/ld: warning: changing start of section .rodata by 4 bytes /Users/john/Library/Arduino15/packages/arduino/tools/arm-none-eabi-gcc/4.8.3-2014q1/bin/../lib/gcc/arm-none-eabi/4.8.3/../../../../arm-none-eabi/lib/armv7-m/libm.a(lib_a-w_pow.o): In function `pow': w_pow.c:(.text.pow+0x8c): undefined reference to `__errno' w_pow.c:(.text.pow+0x1a8): undefined reference to `__errno' w_pow.c:(.text.pow+0x1b2): undefined reference to `__errno' w_pow.c:(.text.pow+0x24c): undefined reference to `__errno' collect2: error: ld returned 1 exit status

Mkeyno
Чт 21 июля 2016 г., 4:45 утра
Martinayotte написал:Я сделал небольшой тест на производительность FlashReard () на ESP, и следующий код дал пропускную способность 16 МБ/с для длины 1MBYTES:
/** SinTable - This example code is in the public domain. 12-05-2012 [email protected] */ #include // // template that provides insertion operation for "Serial << foo;" // template inline Print &operator <<(Print &obj, T arg) { obj.print(arg); return obj; } namespace { float _PI; } // a simple test to make sure we can call a c function; float init_pi(void) { volatile float fPI; // volatile to force run time hw vfp instructions fPI = 4.0 * atanf(1.0); return fPI; } inline float deg2rad(float deg) { return (deg * _PI) / 180.0; } void setup() { _PI = init_pi(); Serial.begin(115200); // go fast just because we can } void loop() { unsigned angle; float sin_value; Serial << "Table of Sin(a)" << '\n'; for (angle = 0; angle < 360; angle++ ) { sin_value = sinf( deg2rad( static_cast(angle) ) ); Serial << "angle=" << angle << " sin="; Serial.println(sin_value, 7); } while (1); // stop here when done., press reset button to see again }

Martinayotte
Чт 21 июля 2016 12:43
Единственная часть эскиза, которая отсутствует, и, возможно, вы боретесь, это то, что должно быть на вершине эскиза:
#include int *__errno (void) { static int foo; return &foo; }

Mkeyno
Ср. 27 июля 2016 г., 12:30
Уважаемый @martinayotte, я сделал базу эскизов на твоих подсказках и других парнях в друтке и загружен в моем репоhttps: // github.com/mkeyno/esp_fast_reading , Хотя кажется, что производительность скорости увеличивается, но она бросает исключение при попытке использовать данные чтения из Flash, можете ли вы проверить эскиз, он, если он полностью протестирован и готов к загрузке
Спасибо

Martinayotte
Ср. 27 июля 2016 г. 15:41
К сожалению, я не могу легко проверить, так как у меня нет таких полос RGB.
Я могу попытаться извлечь кусок кода для отладки, но я не уверен, какой из них: это необработанные чтения, подталкиваемые к светодиодам или копию от Speffs до Raw Prises ?
Что касается исключений, которые вы все еще видите, вы использовали ExceptionDecoder, чтобы получить значимую трассу стека ?

Mkeyno
Ср. 27 июля 2016 г. 16:39
Martinayotte написал:К сожалению, я не могу легко проверить, так как у меня нет таких полос RGB.
Я могу попытаться извлечь кусок кода для отладки, но я не уверен, какой из них: это необработанные чтения, подталкиваемые к светодиодам или копию от Speffs до Raw Prises ?
Что касается исключений, которые вы все еще видите, вы использовали ExceptionDecoder, чтобы получить значимую трассу стека ?

Martinayotte
Ср. 27 июля 2016 г., 8:35 вечера
Вы имеете в виду, что у вас больше нет исключения ?

Mkeyno
Пт 29 июля 2016 г., 9:03
Martinayotte написал:Вы имеете в виду, что у вас больше нет исключения ?

Martinayotte
Пт 29 июля 2016 г. 13:19
Какой Memcpy дает вам исключение ?
Это memcpy (), который вы делаете с необработанным адресом Flash ?
Если да, то я могу сказать вам, что это не разрешено, вам нужно memcpy_p () вместо этого.

Mkeyno
Ср 10 августа 2016 г. 1:42
Martinayotte написал:Какой Memcpy дает вам исключение ?
Это memcpy (), который вы делаете с необработанным адресом Flash ?
Если да, то я могу сказать вам, что это не разрешено, вам нужно memcpy_p () вместо этого.

Martinayotte
Ср 10 августа 2016 г. 13:44
/Users/john/Documents/Arduino/hardware/STM32/STM32F1/cores/arduino/Arduino.h:42:18: fatal error: chip.h: No such file or directory #include ^ compilation terminated. exit status 1 Error compiling for board NUCLEO-F103RB.

SSD1306 OLED Проблемы