реклама на сайте
подробности

 
 
> Помогите продумать архитектуру проекта на ARM7
Зверюга
сообщение Feb 7 2009, 05:14
Сообщение #1


Местный
***

Группа: Свой
Сообщений: 413
Регистрация: 15-12-06
Пользователь №: 23 563



Господа, подскажите в какую сторону двигаться, а то я как от Иван перед камнем- направо пойдешь... налево пойдешь...

Задача следующая - необходимо с ARM7 контроллера гнать данные на DM164 (драйвер полноцветных светодиодов) со скоростью 1,5 Мбайт/сек. Само устройство - долго объяснять его принцип работы, да и заказчик пожелал особо не распространяться о деталях, в общем, представьте себе что это видеоэкран из RGB светодиодов размерами 40х240 штук.
Данные должны читаться с SD карты с FAT16.

Возможно два варианта: читается блок 57600 байт (28800 по 16 бит) и гоняется 30 раз в секунду, либо непрерывно читается поток данных состоящих из блоков того же размера, 30 раз в секунду.
Для првого варианта соответственно есть два подварианта - каждый раз читать его с флешки, либо один раз загнать в память, после чего циклически передавать по SPI.

Я мало разбираюсь в видеосистемах, но подозреваю что без RAM не обойтись. По крайней мере видел как люди, пытавшиеся запустить экран от мобильного телефона организовывали буфера из памяти, в одни грузили, из другого выводили, что существенно повышало быстродействие.

Учитывая вышеизложенное возможно несколько вариантов:

1. Попроще - максимально адаптировать содержимое файла, чтобы гнать из него информацию сразу на драйвер. Т.Е. карта и драйвер сидят на одном SPI, контроллер обращается к карте, инициирует чтение данных, а перед собственно чтением включает CS на драйвере и данные идут минуя контроллер. Сам контроллер конечно следит за процессом, проверят периодически состояние кнопок и пр.
Но чует мое сердце, что есть подвох в этой простоте и без RAM не обойтись.
С использованием RAM тоже несколько вариантов.

2. Взять контроллер потолще - с 64 кб RAM. 57600 используем под данные, остальные 6кб на посторонние нужды - за глаза. Разбить ее на блоки по 240 байт, блок передали, записали с флешки новый, читаем следующий блок и т.д. Однако в этом случае придется в два раза повысить скорость чтения данных, т.е. 3 мБайт/сек, а максимальная частота драйвера DM164 всего 25 Мгц. Не получится.

3. Взять простой контроллер и использовать внешнюю RAM. Однако мне все равно не совсем понятно, даже если организовать две страницы видеопамяти, как с ними работать - если надо передавать допусти 100 байт в секунду, то ведь их одновременно надо читать, не понадобится ли удвоение скорости чтения и передачи?

4. Взять контроллер их серии SE - там вообще мед - встроенный интерфейс под внешнюю RAM под внешнюю FLASH, в описании сказано, что скорость обмена данными благодаря этому чуть ли не в 5 раз больше. Однако нужен ли такой навороченный камень?

В общем, кто что скажет, какие во всем этом есть подводные камни, проверенные способы, может обойтись первым вариантом?
Только не предлагайте ПЛИС, мне и так ARM7 с нуля осваивать.


Спасибо.
Go to the top of the page
 
+Quote Post
5 страниц V  « < 2 3 4 5 >  
Start new topic
Ответов (45 - 59)
aaarrr
сообщение Feb 10 2009, 14:54
Сообщение #46


Гуру
******

Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448



Цитата(Зверюга @ Feb 10 2009, 17:44) *
SPI и DMA будет 20 Мбит/сек

Не будет. Надо учитывать еще оверхед на команды и задержки карты.
И у SE только один SPI. Правда, если работать в режиме "забиваем с карты все ОЗУ - показываем анимацию", то хватит.
Go to the top of the page
 
+Quote Post
Зверюга
сообщение Feb 10 2009, 14:58
Сообщение #47


Местный
***

Группа: Свой
Сообщений: 413
Регистрация: 15-12-06
Пользователь №: 23 563



Цитата
возьмите контроллер с железным SD.
- возьмите быструю SD-карту.
- загружайте данные с использованием DMA и команды READ_MULTIPLE_BLOCK.


Спасибо. Погуглить, в каких контроллерах такая начинка есть я могу. ОДнако хотелось бы услышать ваши рекомендации. Все таки желательно чтобы контроллер был распространен, без геморроя в освоении, чтобы информации и примеров по нему в сети было достаточно. А то привык я к ATMEL...

Цитата
возьмите контроллер с железным SD.
- возьмите быструю SD-карту.
- загружайте данные с использованием DMA и команды READ_MULTIPLE_BLOCK.


А если сделать так, то какую скорость следует ожидать?
Go to the top of the page
 
+Quote Post
aaarrr
сообщение Feb 10 2009, 15:07
Сообщение #48


Гуру
******

Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448



Цитата(Зверюга @ Feb 10 2009, 17:58) *
Все таки желательно чтобы контроллер был распространен, без геморроя в освоении, чтобы информации и примеров по нему в сети было достаточно. А то привык я к ATMEL...

Я бы, возможно, взял какой-нибудь из ARM9 от того же Атмела. Но назвать это простым решением не могу.

Цитата(Зверюга @ Feb 10 2009, 17:58) *
А если сделать так, то какую скорость следует ожидать?

Предельную для карты. Точной цифры никто не даст, так как все они разные.
Go to the top of the page
 
+Quote Post
Dog Pawlowa
сообщение Feb 10 2009, 15:19
Сообщение #49


Гуру
******

Группа: Свой
Сообщений: 2 702
Регистрация: 14-07-06
Пользователь №: 18 823



Цитата(Зверюга @ Feb 10 2009, 18:58) *
А если сделать так, то какую скорость следует ожидать?

У нас порт efsl на ARM7 через интерфейс SD без DMA дает около 100 килобайт в секунду на коротких файлах.

На половине имеющейся SDRAM можно расположить 50 кадров мультфильма разрешения VGA (на 2 секунды).

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

Кстати, может лучше сделать адаптер сигналов TFT дисплея в сигналы ридеборда на какой-нить PGA и использовать готовый прибор?


--------------------
Уходя, оставьте свет...
Go to the top of the page
 
+Quote Post
WDT
сообщение Feb 10 2009, 18:28
Сообщение #50


Участник
*

Группа: Новичок
Сообщений: 31
Регистрация: 30-01-09
Пользователь №: 44 166



Чего-то не нашел даташит на этот драйвер DM164...
Go to the top of the page
 
+Quote Post
aaarrr
сообщение Feb 10 2009, 18:32
Сообщение #51


Гуру
******

Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448



DM164
Go to the top of the page
 
+Quote Post
WDT
сообщение Feb 10 2009, 18:47
Сообщение #52


Участник
*

Группа: Новичок
Сообщений: 31
Регистрация: 30-01-09
Пользователь №: 44 166



Я тут о чем подумал, Зверюга... У меня посветка на RGB диодах в девайсе. Так вот -- диоды через ШИМ работают эффективно только в нижней трети заполнения. То есть если добавлять заполнение ШИМа от нуля, то они сначала быстро становятся яркими, а потом яркость почти не изменяется. Так может не имеет смысла так много разрядов на цвет держать? Может быть вообще достаточно 7-ми цветов +белый? Тогда и памяти на борту хватит и не надо заморачиваться со скоростями. Ну например 240*40*(4бит цветности). Еще можно использовать палитру. То есть , в память на место пикселя записывать указатель на цвет в палитре. Тогда получится 240*40*8бит(256 цветов). Я думаю больше и не надо. А то поставил себе какую-то сверх задачу...
Go to the top of the page
 
+Quote Post
Зверюга
сообщение Feb 10 2009, 19:45
Сообщение #53


Местный
***

Группа: Свой
Сообщений: 413
Регистрация: 15-12-06
Пользователь №: 23 563



Цитата(WDT @ Feb 10 2009, 21:28) *
Чего-то не нашел даташит на этот драйвер DM164...


вот http://www.e-neon.ru/catalog/id/3291275#3291275

WDT

Да я давно думал, как бы перевести драйвер в 8-битный режим. Да вот беда не переводится. МОжно конечно писать 8-ми битный файл, а "левые" биты сочинять на ходу - но на сколько при этом увеличится процессорное время... Впрочем это надо обдумать. 8 бит - 16 000 000 цветов - за глаза, плюс, при таком маленьком разрешении эти полутона просто не будут востребованы. Я понимаю, если на 1600 точек растянуть от 000000 до 0000FF, а на 240...

В тоже время выигрыш всего в два раза. То есть если не изобретать, даже с 8 битами не успеем. А если изобретем, то и 16 потянем.

WDT

Да я давно думал, как бы перевести драйвер в 8-битный режим. Да вот беда не переводится. МОжно конечно писать 8-ми битный файл, а "левые" биты сочинять на ходу - но на сколько при этом увеличится процессорное время... Впрочем это надо обдумать. 8 бит - 16 000 000 цветов - за глаза, плюс, при таком маленьком разрешении эти полутона просто не будут востребованы. Я понимаю, если на 1600 точек растянуть от 000000 до 0000FF, а на 240...

В тоже время выигрыш всего в два раза. То есть если не изобретать, даже с 8 битами не успеем. А если изобретем, то и 16 потянем.

Хм.... я тут прикинул - а ведь ничего переводить не надо - просто в драйвер посылать первые 8 бит, остальные 8 тактов пусть драйвер думает, что ему шлют информацию, а информация будет - нули. ПРи этом цвет будет тот же, правда урезаный до 8 бит. То есть 50% времени мы занимаемся благими делами.

Итак, ТЗ снова меняется. Надо всего 650 кбайт/сек.
Go to the top of the page
 
+Quote Post
aaarrr
сообщение Feb 10 2009, 21:07
Сообщение #54


Гуру
******

Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448



Цитата(Зверюга @ Feb 10 2009, 22:45) *
8 бит - 16 000 000 цветов - за глаза

8 бит - это очень мало, особенно для видео (не знаю, что у Вас).
Для получения более-менее качественной картинки нужно вводить гамма-коррекцию и использовать минимум 10 бит ШИМ.
Go to the top of the page
 
+Quote Post
Rst7
сообщение Feb 10 2009, 23:19
Сообщение #55


Йа моск ;)
******

Группа: Модераторы
Сообщений: 4 345
Регистрация: 7-07-05
Из: Kharkiv-city
Пользователь №: 6 610



Господа, а может стоит подумать об упаковке кадров каким нибудь методом класса LZ (не LZW)? Распаковка практически не заберет скорости (при правильном подходе к делу скорость будет сравнима с побайтовым копированием), но зато снизит нагрузку на канал чтения данных с карточки?


--------------------
"Практика выше (теоретического) познания, ибо она имеет не только достоинство всеобщности, но и непосредственной действительности." - В.И. Ленин
Go to the top of the page
 
+Quote Post
aaarrr
сообщение Feb 11 2009, 01:01
Сообщение #56


Гуру
******

Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448



Цитата(Rst7 @ Feb 11 2009, 02:19) *
Господа, а может стоит подумать об упаковке кадров каким нибудь методом класса LZ (не LZW)? Распаковка практически не заберет скорости (при правильном подходе к делу скорость будет сравнима с побайтовым копированием), но зато снизит нагрузку на канал чтения данных с карточки?

Оно, возможно, стоит, но мы до сих пор не знаем, что это за табло, и какого рода информацию оно отображает.
Go to the top of the page
 
+Quote Post
rezident
сообщение Feb 11 2009, 01:55
Сообщение #57


Гуру
******

Группа: Свой
Сообщений: 10 920
Регистрация: 5-04-05
Пользователь №: 3 882



Цитата(WDT @ Feb 10 2009, 23:47) *
Так вот -- диоды через ШИМ работают эффективно только в нижней трети заполнения. То есть если добавлять заполнение ШИМа от нуля, то они сначала быстро становятся яркими, а потом яркость почти не изменяется.
Это видимый эффект. Интенсивность свечения СИД прямо пропорциональна среднему току, протекающему через него. А вот у человеческого глаза логарифмическая чувствительность к яркости объекта, что следует учитывать при регулировке.
Go to the top of the page
 
+Quote Post
Зверюга
сообщение Feb 11 2009, 03:57
Сообщение #58


Местный
***

Группа: Свой
Сообщений: 413
Регистрация: 15-12-06
Пользователь №: 23 563



Качественного видео не надо. В лучшем случае картинка как в анимированном баннере. С резкими переходами цвета, оляпистая.

Цитата
Господа, а может стоит подумать об упаковке кадров каким нибудь методом класса LZ (не LZW)?


Все хорошо, но обычно архивация преназначена для уменьшения общего объема хранения данных. А представьте себе картинку такого пискельного состава, который сжимается плохо. Будут неприятные сюрпирзы. Особенно если в момент чтения такого кадра карта затормозит. Если я не прав, поправьте меня.
Go to the top of the page
 
+Quote Post
WDT
сообщение Feb 11 2009, 05:48
Сообщение #59


Участник
*

Группа: Новичок
Сообщений: 31
Регистрация: 30-01-09
Пользователь №: 44 166



Цитата(aaarrr @ Feb 11 2009, 00:07) *
8 бит - это очень мало, особенно для видео (не знаю, что у Вас).
Для получения более-менее качественной картинки нужно вводить гамма-коррекцию и использовать минимум 10 бит ШИМ.

Да какое видео на такой разрешаловке... А насчет восьми бит -- на светодиодах больше и не получишь. Вот взяли допустим 10 бит шим -- 1024 единицы. Изменение яркости на 10 единиц вряд ли отличишь. Так зачем такой ШИМ? Я ж писал выше--характеристика яркости светодиодов нехорошая и по цветам отличается сильно(я так понял это о гамма коррекции?).

Есть небольшой примерчик. Насчет градаций. У меня есть индикатор OLED 256x64 16 GrayScale. У него на пиксел идет 4 бита. Преобразуешь bmp в LCD Icon Color и выводишь. Совсем неплохо смотрится с 16-ю градациями.

Посмотрел драйвер 164. Это ж сколько надо таких драйверов, офигеть просто... Нафиг такая штука нужна. Надо другой драйвер искать. Например драйвер индикатора какого-то.

Цитата(rezident @ Feb 11 2009, 04:55) *
Это видимый эффект. Интенсивность свечения СИД прямо пропорциональна среднему току, протекающему через него. А вот у человеческого глаза логарифмическая чувствительность к яркости объекта, что следует учитывать при регулировке.

Вы все правильно сказали. Только еще есть вольтамперная характеристика и она не линейная. То есть при изменении напряжения ток меняется НЕЛИНЕЙНО... Поэтому и яркость будет нелинейная. Поправьте , если я ошибаюсь... + к этому еще и восприятие глаза, в том числе и к разным спектрам излучения.
Дело в том , что это все уже давно проверено. Я частенько использую RGB подсветку и добиться на этой подсветке нормальных цветов надо попотеть. Я тоже поначалу начал делать кучу цветов, а потом скатился на 32 всего.

Сообщение отредактировал WDT - Feb 11 2009, 05:53
Go to the top of the page
 
+Quote Post
Dog Pawlowa
сообщение Feb 11 2009, 06:49
Сообщение #60


Гуру
******

Группа: Свой
Сообщений: 2 702
Регистрация: 14-07-06
Пользователь №: 18 823



Цитата(WDT @ Feb 11 2009, 09:48) *
Это ж сколько надо таких драйверов, офигеть просто... Нафиг такая штука нужна.
Пример не совсем тот, драйвера не те, но нафиг говорить "нафиг" cranky.gif
Прикрепленное изображение


--------------------
Уходя, оставьте свет...
Go to the top of the page
 
+Quote Post

5 страниц V  « < 2 3 4 5 >
Reply to this topicStart new topic
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 20th July 2025 - 04:58
Рейтинг@Mail.ru


Страница сгенерированна за 0.01496 секунд с 7
ELECTRONIX ©2004-2016