Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Внешний SRAM. Нужен ли?
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > ARM
inventor
Такой вопрос знатокам: хотим использовать CortextM4 от STM
у них есть уже на борту немного памяти - 256 кбайт.
Я не знаю, можно ли поставить дополнительную внешнюю память к этому камню.(т.е есть ли у них интерфейс SRAM)
Задача такая-4 канала на частоте 4 кгц по 4 байт sm.gif сбрасывать на SD карту.
Ну а чтобы данные не терялись при записи на SD - это можно
обойти ТОЛЬКО с помошью памяти большого объема, где можно накопить большую
порцию данных и сбросить их на SD - и как можно реже.
Соответсвтенно если скидывать раз в 10 секунд - то надежность гораздо
выше чем скидывать раз в 1 секунду.
Кто может посоветовать что сделать в этом случае?
InsolentS
Я думаю, Вам нужна двойная буферизация - пока один буфер накапливается, другой скидывается на SD карту.
У контроллера памяти stm32, к сожалению, нет возможности подключить SDRAM, а статика нынче дорого стоит.
Наверное, есть смысл обратить внимание на C-M4 от NXP или ещё какие-нибудь.
Поток данных у Вас 64кб/с, может быть и уместитесь во внутренней памяти, но я бы не рисковал.
inventor
Цитата(InsolentS @ May 13 2013, 12:56) *
Я думаю, Вам нужна двойная буферизация - пока один буфер накапливается, другой скидывается на SD карту.
У контроллера памяти stm32, к сожалению, нет возможности подключить SDRAM, а статика нынче дорого стоит.
Наверное, есть смысл обратить внимание на C-M4 от NXP или ещё какие-нибудь.
Поток данных у Вас 64кб/с, может быть и уместитесь во внутренней памяти, но я бы не рисковал.

2 буфера пинг-понг-это понятно,
но вот 256 кбайт без внешнего срам это конечно плохо sad.gif
SSerge
В 4xx семействе все, у кого ног для этого хватает, умеют работать с внешней
SRAM,PSRAM, Compact Flash/NOR/NAND memories,
а некоторые (429/439) ещё и SDRAM тоже поддерживают.
Впрочем, при потребности всего в несколько мегабайт с SDRAM нет смысла связываться, обычная SRAM или PSRAM гораздо удобнее, поскольку если не гнаться за скоростью, их можно на 16- или даже 8-битную шину посадить.
InsolentS
Цитата(SSerge @ May 13 2013, 15:37) *
а некоторые (429/439) ещё и SDRAM тоже поддерживают.

Как, я понял, они только-только анонсированы и в продаже будут доступны не скоро.
_pv
на таких скоростях внешняя память может быть и последовательной.
http://media.digikey.com/pdf/Data%20Sheets...s/P5Q%20PCM.pdf
немного экзотика конечно.
еще можно eepromов набрать, на 2мбита вроде вполне существуют.
upd да и 2Гбита тоже http://www.toshiba.com/taec/components/Dat...NVG1S3ETAI0.pdf
inventor
Цитата(SSerge @ May 13 2013, 13:37) *
В 4xx семействе все, у кого ног для этого хватает, умеют работать с внешней
SRAM,PSRAM, Compact Flash/NOR/NAND memories,
а некоторые (429/439) ещё и SDRAM тоже поддерживают.
Впрочем, при потребности всего в несколько мегабайт с SDRAM нет смысла связываться, обычная SRAM или PSRAM гораздо удобнее, поскольку если не гнаться за скоростью, их можно на 16- или даже 8-битную шину посадить.

Спасибо, но SDRAM не катит-оно много потребляет.
Ну а если SRAM можно мегов ~4 то это очень хорошо!
jcxz
Цитата(inventor @ May 13 2013, 14:46) *
Такой вопрос знатокам: хотим использовать CortextM4 от STM
у них есть уже на борту немного памяти - 256 кбайт.
Я не знаю, можно ли поставить дополнительную внешнюю память к этому камню.(т.е есть ли у них интерфейс SRAM)
Задача такая-4 канала на частоте 4 кгц по 4 байт sm.gif сбрасывать на SD карту.
Ну а чтобы данные не терялись при записи на SD - это можно
обойти ТОЛЬКО с помошью памяти большого объема, где можно накопить большую
Интересное заключение... А почему они должны теряться??? wacko.gif
И как поможет это обойти большая память?
Или у Вас на SD файловая система и Вы боитесь произвольных отключений питания?
Так выкиньте её нафиг и будет Вам 100%-я надёжность.
В крайнем случае - журналирующая файловая система.
Да даже обычную FS можно бэкапить хоть раз в секунду хоть раз в миллисекунду.
А лучше (если есть возможность аппаратной модификации) - монитор питания.

Для Вашей задачи даже 64кил - выше крыши если с умом подходить к делу.
vlad_new
При вашей скорости в 64кбайта вам внешняя оперативка не нужна.
По спецификации операция записи на SD может занимать до 250мс. Это в худшем случае. Реальное время записи на современную карточку 4 класса не превышает 5о мс. Ваша программа должна обеспечивать буферизацию данных как минимум на это время.
Следовательно надо 2 буфера по 16кило. На всякий пожарный сделайте 2 буфера по 32 кило. Что касается кол-ва циклов перезаписи, то они не зависят от объема ваших буферов, поскольку их колличество определяется внутренним механизмом карточки ( колличеством стираний блоков ). Естественно при условии, что вы не будите каждый раз закрывать файл все должно хватить с большим запасом.
CO2040
да с этим камнем и 8 кб сделать буфер - хватит, DMA позволяет циклически буфер писать и читать, ставите прерывания по середине и концу - и переключаетесь легко какую часть читать в файл, а какую писать. При той производительности cortex M4 никакой дополнительной памяти не надо. И вообще проблема медленной SD карточки - это проблема правильной организации интерфейса. Я раньше намучался когда карту ставил в SPI режиме, теперь только SDIO !!! Тем более что в любом самом захудалом cortex M3-M4 от STM это есть ! А так по железу : у меня на ARM7DTMI 48МГц при доступной для буфера памяти в 2кб и тормозном SPI- интерфейсе с SD картой нормально работала запись 8кГц в 24 бита ! И еще запас оставался, так что я бы 2 ваших канала туда уложил легко. При таких убогих ресурсах !
Второй вопрос помимо интерфейса с SD - использование нормальной файловой системы, работающей с SDHC картами. Все новые (от 5.2 и выше версии IAR PowerPac это делают, хоть и пинают эту ФС многие именно за скорость - но у меня все именно на ней тестируется.)
inventor
Сейчас я работаю с Блекфином 504.
там всего 32+32 кбайт памяти.
Я 4 кбайт засунул в scrachpad под стек
ну а 32 и 32 под память данных и память программ.
У меня 2 буфера и на большой скорости и если например пишу на 1 кгц 4 канала
бывают потери данных.
На новых карточках такое не бывает. но если карту несколько раз записывал-то стопудово
она будет сбоить.
Так что описываемые вами карты 4-го класса и памяти 64 кбайт
не хватит.
На sd карте есть свой процессор, который сам распределяет куда ему писать информацию.
И если у него сбойный сектор-то он задумается и данные которые я хочу писать просто пропадут.
Поэтому мне и нужет вариант процессора который поддерживает sram-хорошую быструю память
с малыми потреблением.
CO2040
тогда зачем вообще SRAM - ставьте SDRAM несколько Мб, туда все пишите а потом выгружайте на SD если надо.
и еще раз - важен интерфейс с самой SD картой.
jcxz
Цитата(inventor @ May 24 2013, 20:34) *
На sd карте есть свой процессор, который сам распределяет куда ему писать информацию.
И если у него сбойный сектор-то он задумается и данные которые я хочу писать просто пропадут.
Поэтому мне и нужет вариант процессора который поддерживает sram-хорошую быструю память
с малыми потреблением.

Ну вот - наконец-то Вы написали причину "потерь". После определения причины можно начинать думать как с ней бороться...
Значит главная причина - задержки записи на SD и как следствие - потери данных из-за переполнения буфера. А не сбои питания.
Путей решения несколько:
1. Как вам тут уже предложили - отказаться от SD и писать на обычную flash (SPI). Если устраивает её размер. Задержки записи/стирания такой flash порядка десятков мсек. Можете сами подсчитать размер буфера во внутренней ОЗУ по величинам этих задержек.
2. Для буферизации использовать внешнюю память без задержек записи/стирания (не обязательно RAM и не обязательно параллельную). Можно прицепить её по SPI или даже I2C. Можно RAM или FRAM. Размер определяется скоростью потока и величинами задержек основной памяти. При перезаписи на SD (если Вы всё-таки не откажетесь от неё), при недостатке внутренней ОЗУ, можно не держать весь записываемый на SD блок в ОЗУ, а подкачивать его частями из внешней памяти. Т.е. - во внешней памяти организуется обычный кольцевой буфер из блоков данных (стандартное решение по согласованию двух потоков данных с различными скоростями и латентностями), у вас в CPU одна задача будет записывать блоки в этот буфер, а задача пишущая на основную флеш-память - проверять заполненность этого буфера и переписывать на SD (к примеру).
3. ...
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.