Перейти к содержанию
    

Помогите продумать архитектуру проекта на ARM7

На самом деле Вам нужен не очень скоростной контроллер, но с быстрым SPI, нормальным контроллером SD и достаточно большим количеством памяти

 

Подсказать что-нибудь можете?

Быстрый SPI это сколько? А то ведь в ARM7 вроде как и на 30 МГц можно работать.

Контроллер SD - помоему он только в ARM9 появляется.

 

Можно ли из DataFlash, NAND flash по одному проводу непрерывно без тормозов

 

А как же пост #13 Александра? Кому верить?

 

Так и не услышал комментариевна вот это:

Весьма условно: вот я передаю данные - скорость SPI равна CLK/2 . 16 тактов - 1 байт. А если контроллер принимает и передает информацию, то он должен за 16 тактов принять байт, записать его в свой регистр, потом за следующие 16 тактов второй SPI должен передать этот байт, в итоге 2кратное снижение скорости. Если думаешь как это сделать транзитно, то невольно приходишь к мысли, а не заменить ли контроллер проводом? Тут бит появился, там его тут же приняли. Задача контроллера только организовывать сеанс сязи и тактировать его. Какие же при этом будут тормоза?

 

И если все-таки использовать SD, то какой скорости чтения с использованием FAT и SPI режима на частоте контроллера 60МГц можно добиться?

Если она превышает 15 МБит/c то может действительно добавить SRAM и буферизовать?

 

Вот нашел бенчмарк прадва для LPC - там с SD карты чуть ли не 7 Мбайт/сек читается. Как?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

с SD карты чуть ли не 7 Мбайт/сек читается. Как?
Вам же внятно сказали, что контроллер карты (внутри который) отдаёт данные достаточно быстро, но когда ему нужно спокойненько сообщает, что занят и продолжает заниматься своими делами.

В спецификации на SD v2 (SDHC) (файл с sdcard.org Simplified_Physical_Layer_Spec.pdf) указаны размеры AU - Table 4-41: Maximum AU size, а далее в рамочке примечание и там есть - The host should use the maximum AU Size (4 MB) to determine host buffer size. Делаю вывод - обеспечение заявляемых скоростей учитывает наличие буфера у хост-контроллера.

Тут тоже бенчмарки

http://www.embedded-os.de/index.html?pcfat_port.htm

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Вам же внятно сказали

 

Нет, мне сказали невнятно. Ибо я спрашивал потом, какова длительность этих тормозов карты, в секундах, в тактах, в проценте процессорного времени - мне не ответили, хотя чувствуется, что люди зна.т об этом явно не из мануалов, а из собственного опыта. И самое главное - итоговая средняя скорость чтения превысит требуемые 1,5 мБайт/сек? Если да, тогда мне надо делать буфер.

 

Опять таки, мне тут уже два раза писали про буферизацию. Что есть буферизация? Это чтение данных из карты в буфер "впрок" на более высокой скорости с последующе передачей их из буфера на номинальной скорости, пока карта тормозит? Я правильно понял? Тогда с учетом практических факторов - упомянутых "длительности тормозов карты, в секундах, в тактах, в проценте процессорного времени" каков объем буфера должен быть? На чем его организовать, может использовать внешнюю SRAM?

 

Нельзя ли использовать 2 или 4 флешки, и читать из них данные параллельно? Типа как RAID 0?

 

Если все предложенные мной варианты несостоятельны, то что предложили бы вы? Ведь задача решаема, и наверняка отнюдь не за счет мощного процессора, ведь как я уже понял, все упирается в недостатки карт памяти.

 

aaarrr, вы как специалист по драйверам светодиодов, скажите, а может быть мне для моей задачи стоит ограничиться 8 битами? Я слаб в английском, так и не понял, в младшем брате DM164 - DM163 можно пользоваться только 8-битным банком, а 6-ти битный запрограммировать 1 раз и не трогать? Мне бы хотя бы в 2 раза урезать скорость данных.

 

http://www.gaw.ru/html.cgi/txt/publ/memory/nand.htm

 

В описании сказано что там есть буфер.Так какого же еще буфера для этой системы надо?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

Скажем было такое наблюдение: у SanDisk вариации времени чтения на файлах одинаковой длины могут достигать 30%, а у Kingston - 4%

Но это как нарвешься.

Чем более изношенная карта, тем сильнее вариации.

 

Вам надо иметь как минимум 2-а буфера вмещающих целые кадры на внешней RAM

А лучше делать адаптивную буфферизацию, как только фиксируется нехватка данных на вывод сразу увеличивать количество буферов.

Если взять ARM с 2-я SPI и грузить экран через оба SPI, то проблем с недостаточной скоростью загрузки можно избежать.

С SD картами лучше работать через специализированный 4-х битный интерфейс.

 

Вам бы подошел STM32F103xE.

Там аж 3-и SPI по 18 МГц, т.е. 54 Mbit/s в сумме . Есть интерфейсы и к SD карте и к NAND и к PSRAM

Только надо проверить мультиплексирование пинов, а то не всякая конфигурация может оказаться реализуемой.

Может внешняя RAM и не понадобится, у STM32 неплохая шинная матрица и потоки из NAND и SPI как бы могут пересылаться напрямую по DMA минуя шину инструкций.

 

 

Нет, мне сказали невнятно. Ибо я спрашивал потом, какова длительность этих тормозов карты, в секундах, в тактах, в проценте процессорного времени - мне не ответили, хотя чувствуется, что люди зна.т об этом явно не из мануалов, а из собственного опыта. И самое главное - итоговая средняя скорость чтения превысит требуемые 1,5 мБайт/сек? Если да, тогда мне надо делать буфер.

 

Опять таки, мне тут уже два раза писали про буферизацию. Что есть буферизация? Это чтение данных из карты в буфер "впрок" на более высокой скорости с последующе передачей их из буфера на номинальной скорости, пока карта тормозит? Я правильно понял? Тогда с учетом практических факторов - упомянутых "длительности тормозов карты, в секундах, в тактах, в проценте процессорного времени" каков объем буфера должен быть? На чем его организовать, может использовать внешнюю SRAM?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Если взять ARM с 2-я SPI и грузить экран через оба SPI, то проблем с недостаточной скоростью загрузки можно избежать.

 

Так ведь проблема не в скорости передачи данных из контроллера в экран, а в загрузке данных из флешки в контроллер или буфер.

Собственно, грузить экран можно и дерганьем ног, а 2 SPI использовать для загрузки буферов. Вот только мне непонятна архитектура их буфера, 2х-SPI и одной sd карты. Был бы благодарен за объяснение на пальцах или в виде схемки.

 

Вам бы подошел STM32F103xE.

Там аж 3-и SPI по 18 МГц, т.е. 54 Mbit/s в сумме . Есть интерфейсы и к SD карте и к NAND и к PSRAM

 

через efind.ru не нашел его цены.

Работает ли он с SD картами в SD режиме?

 

В принципе я готов поставить две или три NAND flash и грузить буфер из них, если это возможно. Как тогда организовать буфер? Я не имею опыта в создании таких схем.

 

 

Может внешняя RAM и не понадобится, у STM32 неплохая шинная матрица и потоки из NAND и SPI как бы могут пересылаться напрямую по DMA минуя шину инструкций.

 

Простите мне мою тупость, но я понял ситуацию так:

проблема не со скоростью контроллера, а с непостоянной скоростью загрузки данных из карты. Стало быть, нужно грузить из карты в буфер SRAM, с максимальной скоростью, превышающей скорость отдачи данных из буфера. И если средняя скорость загрузки данных из карты будет выше, то все получится. Либо писать данные в две флешки и грузить из их одновременно в буфер.

 

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

... Извините за назойливость.

Ага, именно это качество Вы демонстрируете :-)

Примите как данность - с SD картой работать реально со скоростью сотни килобайт в секунду. Сравнение файловых систем где-то было в инете, но я ссылку не сохранил. По моему, где-то тут на форуме в какой-то из тем было.

Поставьте внешнюю RAM, SDRAM большого объема, организуйте буфер и забудьте проблему, по сравнению со стоимостью собственно ридеборда, стоимость контроллера стремится нулю. Да и всей электроники по сравнению с механикой :biggrin:

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Гуглил про организацию буфера - мало чего полезного нашел.

Ну хоть подтолкните пожалуйста в нужном направлении. Как читать и как передавать, как в этом случае использовать преимущество 2-х SPI.

 

Да и по поводу памяти - искал информацию по микросхемам чтранные вещи - попадаются микрухи на 1Мбит стоимость по 600-800 рублей, что-то дорого, модуль DDR компьютерный на 256 МБ стоит рублей 200.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Гуглил про организацию буфера - мало чего полезного нашел.

Ну хоть подтолкните пожалуйста в нужном направлении. Как читать и как передавать, как в этом случае использовать преимущество 2-х SPI.

 

Да и по поводу памяти - искал информацию по микросхемам чтранные вещи - попадаются микрухи на 1Мбит стоимость по 600-800 рублей, что-то дорого, модуль DDR компьютерный на 256 МБ стоит рублей 200.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Слушай , Зверюга! Один мой товарищ делал некий девайс. В нем он выводил звук следующим образом.

На DataFlash 8МБит записывал звуковой файл. Потом Давал команду на чтение по SPI и получал данные на сдвиговый регистр на выходе R2R и усилок.

Говорил , что работает.

Я так понял и ты хочешь что-то подобное, но с матрицей светодиодов?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

ой чувствую заказчик не получит результат как минимум полгода

Изменено пользователем wangan

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

WDT - ну я же расписал выше. Примерно то же самое, но только скорость поболее будет.

Выдать 1,5 мбайт/сек наверное проблемы не будет. Проблема даже не в приеме данных, а в том что карта их не будет отдавать с постоянной скоростью, если я правильно понял форумцев.

Мне упорно твердят про 2 SPI, но я только никак не могу понять, как через них можно одновременно читать, если карта одна и давать команду на чтение типа SPI_READ придется по очереди, пока один SPI байт не примет, к другому не обратиться.

 

Что я пока смог себе уяснить - так это то, что буфер заполняется со скоростью большей чем нужно для отдачи информации, что компенсирует провалы в чтении (при условии, что средняя скорость чтения будет выше, я уже отказался от FAT). А вот правильно ли я это понял или нет, мне не говорят. Я готов поставить несколько флешек и читать с них параллельно, до почему-то кажется, что есть более изящные способы.

 

Может быть проблема в том, что я сам предлагаю какие-то вариант, которые подвергаются критике? Может проще спросить, как сделать?

 

А заказчик, мой друг и не торопит. Как раз полгода, не менее, было оговорено.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

WDT - ну я же расписал выше. Примерно то же самое, но только скорость поболее будет.

Выдать 1,5 мбайт/сек наверное проблемы не будет. Проблема даже не в приеме данных, а в том что карта их не будет отдавать с постоянной скоростью, если я правильно понял форумцев.

Мне упорно твердят про 2 SPI, но я только никак не могу понять, как через них можно одновременно читать, если карта одна и давать команду на чтение типа SPI_READ придется по очереди, пока один SPI байт не примет, к другому не обратиться.

 

Что я пока смог себе уяснить - так это то, что буфер заполняется со скоростью большей чем нужно для отдачи информации, что компенсирует провалы в чтении (при условии, что средняя скорость чтения будет выше, я уже отказался от FAT). А вот правильно ли я это понял или нет, мне не говорят. Я готов поставить несколько флешек и читать с них параллельно, до почему-то кажется, что есть более изящные способы.

 

Может быть проблема в том, что я сам предлагаю какие-то вариант, которые подвергаются критике? Может проще спросить, как сделать?

 

А заказчик, мой друг и не торопит. Как раз полгода, не менее, было оговорено.

Два SPI это два аппаратных SPI... То есть даешь команду на чтение по одному SPI когда он ответит через DMA передастся автоматом в регистр второго SPI. Время и ресурсы экономятся сильно.

От FAT отказываться смысла нет -- если блоки(кластеры) данных идут ПОДРЯД, то какая разница...

Ты же изначально прочитываешь Главную загрузочную запись, Загрузочную запись раздела, FAT и вычисляешь где данные.

 

Тут мне кажется никто, в том числе и я, не понимают что это за девайс:-))) Сказал бы уж что за хрень такая?

Например, непонятно зачем такая скорость при выводе на такой дохленький экранчик(240 на 40)??? Для вывода видео все равно не пойдет, а для вывода информации или каких-то эффектов скорости особой не надо. Тем более ты пользуешься каким-то там драйвером.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Скорость высокая? Так гр-н Шурила выше все расписал.

по SPI нужна будет скорость 240*40*3*16*30 фреймов = 13,824 Мбит.

 

Уже 50 минут 5 человек смотрят тему и все молчат )))

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Тут мне кажется никто, в том числе и я, не понимают что это за девайс:-))) Сказал бы уж что за хрень такая?

Что непонятного - бегущая строка

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
К сожалению, ваш контент содержит запрещённые слова. Пожалуйста, отредактируйте контент, чтобы удалить выделенные ниже слова.
Ответить в этой теме...

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

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...