Advanced MicroMachine на AT91RM9200

32-битные ARM-совместимые микроконтроллеры (AT91, ARM7, ARM9), а также микропроцессоры вплоть до ARM64

Moderator: Shaos

Romanich
Banned
Posts: 608
Joined: 12 Oct 2006 16:44

Advanced MicroMachine на AT91RM9200

Post by Romanich »

Доборе время суток всем!

ну вот, мой отпуск закончился... :(
а вместе с ним дефицит инета :)

предлагаю вашему вниманию продвинутую версию МикроМашины на ARM920T ядре!!!

Обовсём по-порядку...

Вот такую отладочную плату купил я за 3500 рублей:
Image

Она на базе AT91SAM7S256. Олимексовская... именно с этой платой я стал входить в мир АРМов ;)

Далее разобрался с MP3-декодером VS1003, который ещё мидюки играет. Фотки ниже:
Image
Image

Героически сам сделал ЛУТом платы с толщиной/промежутком 0.25мм
User avatar
Shaos
Admin
Posts: 24080
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Post by Shaos »

Ну ты однако монстр ;)
Я тут за главного - если что шлите мыло на me собака shaos точка net
Romanich
Banned
Posts: 608
Joined: 12 Oct 2006 16:44

Post by Romanich »

Продолжаю дальше:

Освоил YMF721, которые у Романа заказал.
Это MPU401 и OPL3 FM в одном флаконе ;)
Image
Image
Romanich
Banned
Posts: 608
Joined: 12 Oct 2006 16:44

Post by Romanich »

AT91SAM7S256 не имеет шины EBI, чтоб красиво подрубить периферию! Пришлось одним 32-битным PIOA извращаца!
Но это не надолго ;)

Кроме того, пришла мне OLED-матрица с графическим 2Д-ускорителем!!!
OLEDы - это гибрид LCD и CRT:
1) тонкий профиль
2) малый вес
3) мылые габариты
4) свечение как у CRT(каждая точка светится и есть One-frame эффект)
5) дешёвые по сравнению с STN- TFT- LCD
Image
Оцените высокую яркость свечения OLED-дисплея!
Romanich
Banned
Posts: 608
Joined: 12 Oct 2006 16:44

Post by Romanich »

В общем освоил всё нужное в SAM7S256:

1) параллельный порт вв./выв.
2) SPI
3) DMA
4) IRQ
5) Работа с Flash-памятью
6) Загрузчики
7) Разгон до 110 МГц

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

и понял - что этого мне мало!

Перешёл на ЭТО:
Image

Развёл(неделю в поте лица...) в Layout'e:
Image

Да простит меня Shaos (за размер фоток, старался как мог жал без потери подробностей)! Печатная плата с напаянным ARM9200:
http://www.nedopc.org/nedopc/upload/ARM920T.jpg
Shaos заменил большую картинку на линк и вставил маленькую:
Image

Обратная сторона (питание/земля и то что в ТОП не влезло):
Image
Romanich
Banned
Posts: 608
Joined: 12 Oct 2006 16:44

Post by Romanich »

Создаю проекты в Keil uVision v3. Компилю RealView C Compiler'ом
hex2bin делаю бинарник из хекса.
fromelf - сломалась через 2 месяца (выкинул)

сразу предупрежу, что стартап под AT91RM9200 наикривущий!!!
нужно ручками дорабатывать (виснет PLL, неверно инициализирует SDRAM 16bit, недостаточно глубоко производит настройку КЭШей(DCache),которые в десятки раз повышают быстродействие)

в целом Keil - мой размер ;) Есть иде, компилер, ассемблер и даже дебагер...
Different
Doomed
Posts: 408
Joined: 18 Feb 2007 11:40

Post by Different »

Попробуй еще VS1033, у него форматов больше ;)
Romanich
Banned
Posts: 608
Joined: 12 Oct 2006 16:44

Post by Romanich »

Different wrote:Попробуй еще VS1033, у него форматов больше ;)
мне мощей VS1003 хватает - собираюсь юзать MP3 иил MID для фоновой музыки в играх. AAC - излишек

а YMF721 - для спецэффектов - тут и LowLevel MIDI(секвенции MPU401) и OPL3 - многоканальный FM-синтезатор
Romanich
Banned
Posts: 608
Joined: 12 Oct 2006 16:44

Post by Romanich »

Немножко о самодельной девборде:
http://www.nedopc.org/nedopc/upload/Bold.pdf

Фотка сделанной печатной платы, которую два дня делал неимоверными усилиями:
Image
Romanich
Banned
Posts: 608
Joined: 12 Oct 2006 16:44

Post by Romanich »

Написал собственный загрузчик в DataFlash и прошил его самим АРМом.
Загрузчик тоже самодельный.
Image
Позже большУю 28-пиновую AT45DB021 заменил 8-пиновую AT45DB011

Алгоритм загрузки:
1) загрузчик в ROM AT91RM9200 находит на SPI DataFlash и переносит код во внутреннюю SRAM
2) В SRAM'е мой загрузчик, который читает сектора с MMC-карточки и пихает их во внешнюю SRAM (256K x 16). А также настройка контроллеров шин и нужной периферии(внутренняя+внешняя) и инициализация.
3) запуск кода во внешней SRAM

Пашущая МикроМашина целиком:
Image

Небольшая статейка, как мы делаем "игры"(пока демки FPS-метры)
http://www.nedopc.org/nedopc/upload/Game.pdf
Romanich
Banned
Posts: 608
Joined: 12 Oct 2006 16:44

Post by Romanich »

Небольшое видео, демонстрирующее Дисплей и YMF721:
http://www.nedopc.org/nedopc/upload/1.3gp

И работу VS1003:
http://www.nedopc.org/nedopc/upload/2.3gp
Romanich
Banned
Posts: 608
Joined: 12 Oct 2006 16:44

Post by Romanich »

Но не всё так гладко!
SDRAM выше 25мгц не пошла.
Специальными усилиями смог только до 45 мгц
и это не удивительно - большие провода/неправильная разодка(наличие ground bounce,засорённый и несогласованный клок)
- враги SDRAM.

В начале делал шину 32бит("крылья"), потом урезал до 16 бит (убрал одну микросхему). Пришлось подправить стартап(для 16-битной версии SDRAM)
Image
Romanich
Banned
Posts: 608
Joined: 12 Oct 2006 16:44

Post by Romanich »

Немножко про YMF721(MPU)

Оригинал:http://www.nedopc.org/nedopc/upload/Original.mid
Звучание YMF721(при записи использовался линейный вход AC'97):http://www.nedopc.org/nedopc/upload/YMF721.mp3

YMF721 обсуждалось ещё тут:http://zx.pk.ru/showthread.php?t=5413

Нашёл исходник, как играть миди-секвенции. Перелоапатил его под ARM.

P.S. а вообще VS1003 и YMF721 дают разное звучание миди. Считаю, что VS1003 на кучу спецэффектов не годится (нужно софтварный микшер писать). Поэтому решено взять ещё и YMF721 (очень много каналов MIDI и OPL). Оба чипа можно заставить работать по прерываниям. Основной цикл программы - игровая логика и отрисовка графики
Romanich
Banned
Posts: 608
Joined: 12 Oct 2006 16:44

Post by Romanich »

Итак, с превеликим удовольствием продолжу ;)

Настал тот день, когда я реализовал наброски 16-битной графики (5:6:5)! Причем с анимацией!
Image
Фон движется по горизонтали (BackGround с Thunder Force 4 SEGA MD)
Пузыри выдраны с SNES'овского Gradius'а 3
Остальное - из инета


До этого игрался с 8-битной графикой(3:3:2)
Image

4-битная графика не интересует меня ни в какую!
Image

Считаю, что 16-битная графика - самое то - поможет избежать потери цвета, если палитры с разных картинок обобщаются.
Romanich
Banned
Posts: 608
Joined: 12 Oct 2006 16:44

Post by Romanich »

Краткая структурная схема Advanced MicroMachine:
http://www.nedopc.org/nedopc/upload/Structure.gif

Адресное пространство:
Image

И наконец, развёрнутая структурная схема:
http://www.nedopc.org/nedopc/upload/Chip.gif