nedoPC.org

Electronics hobbyists community established in 2002
Atom Feed | View unanswered posts | View active topics It is currently 28 Apr 2024 09:04



Reply to topic  [ 110 posts ]  Go to page Previous  1, 2, 3, 4, 5 ... 8  Next
Advanced MicroMachine на AT91RM9200 
Author Message
Banned

Joined: 12 Oct 2006 16:44
Posts: 608
Reply with quote
Post 
Тут тоже есть кое-что интересное:
http://www.nedopc.org/nedopc/upload/OpenLetter.rar

И наконец, история создания(по сей день):
    03.02.07 Запуск AT91SAM7S256. Тестовая программа исполнялась во Flash. Пришли VS1003 и OLED
    04.02.07 Создание своего тестового проекта и его запуск в SRAM с разгоном ARM'а свыше 100МГц
    17.02.07 Создание отладочной платы для OLED
    18.02.07 Запуск OLED'а. Освоение контроллера(графического ускорителя) OLED
    22.02.07 Построение повышающего преобразователя напряжения 12V на MAX761
    24.02.07 Подключение внешней SRAM K6R4008C1C-JC15 на 512kB (ВидеоБуфер)
    26.02.07 Проверка быстродействия с использованием внутренней SRAM вместо внешней
    04.03.07 Создание отладочной платы на базе YMF721. Успешный запуск FM и MPU
    05.03.07 Освоение MPU, написание прототипов плееров для FM
    06.03.07 Составление принципиальной схемы MIDI OPL
    07.03.07 Работа с Flash-памятью AT91SAM7S256. Написание на ARM Flat Assembler'е простейшего загрузчика
    09.03.07 Найдена причина некорректной работы прерываний контроллера, когда программа загружена в SRAM
    11.03.07 Сделан вывод о неэффективности использования одного программного порта ввода/вывода для нескольких устройств
    21.03.07 Началось изготовление отладочной платы для VS1003B
    23.03.07 Наконец-то пришли AT91RM9200, SDRAM, SRAM и кварцы для ARM'а и MP3-декодера
    24.03.07 Успешный запуск VS1003. Проверка в режимах WAV, WMA, MP3, MID
    25.03.07 Запуск VS1003 через аппаратный SPI. Составление принципиальной схемы VLSI
    27.03.07 Освоение работы с SPI по прерываниям
    28.03.07 Найдена причина некорректной работы SPI с выводом NPCS0/NSS
    30.03.07 Освоен DMA контроллер на передачу данных из SRAM в SPI. Написание комплексной программы, работающей с SPI, IRQ, DMA
    31.03.07 Освоена MMC+ карточка в режиме SPI. Написание программы, работающей с MMC+ и VS1003B. Освоен DMA на приём данных
    01.04.07 Освоена запись на MMC+ карточку программно и с помощью DMA
    07.04.07 Сделаны фотографии печатных плат
    10.04.07 Проверена совместимость стандартной MMC карточки (чтение/запись)
    14.04.07 Сборка преобразователя RS232<=>TTL/CMOS на MAX232. Успешное программирование через DBGU. Освоение UART
    15.04.07 Написание собственного загрузчика программы по UART и своего бут-ассистента
    16.04.07 Найдена причина некорректной инициализации UART
    22.04.07 Освоена Compact Flash на чтение и запись в True IDE Mode
    25.04.07 Пришли SX48BD и SX-Blitz
    05.05.07 Борьба в мозгах между SX и ARM закончилась в пользу ARM'а
    06.05.07 Начато составление принципиальной схемы отладочной платы на AT91RM9200
    10.05.07 Закончено составление отладочной платы
    27.05.07 Написаны наброски OPL граббера и логгера
    01.06.07 Оптимизация и портирование декодера MIDI SMF0 с IBM PC на YMF721
    05.06.07 Написаны наброски 16-битного 2D-движка, оценена скорость видеовывода
    12.06.07 Закончено составление разводки отладочной платы
    17.06.07 Успешный запуск AT91RM9200 в минимальной конфигурации
    18.06.07 Разогнал AT91RM9200 до 220MHz. Разобрался как шить по COM-порту.
    23.06.07 Задействовал EBI на 100MHz. Успешно подключил OLED, YMF721 (OPL и MPU)
    24.06.07 Закончена разводка платы 256K x 16 SRAM K6R4016V1D-UI10
    27.06.07 Успешно подключена 256K x 16 SRAM
    28.06.07 Успешное исполнение программы во внешней SRAM
    01.07.07 Найдена ошибка подключения OLED к EBI. Проверка совместной работы ARM,OLED,SRAM,MPU,OPL.
    Освоено прерывание системного таймера 32768 Hz
    05.07.07 Найдены и устранены плохие контакты с шиной EBI, которые вели к ошибкам
    чтения/записи из/в памяти и регистров периферии
    06.07.07 Оптимально настроены (быстродействие+надёжность) OLED,MPU,OPL,SRAM с шиной EBI на @100 MHz
    07.07.07 Освоена работа с DataFlash AT45DBDB021B. Самостоятельная загрузка ARM'а из DataFlash
    08.07.07 Закончена разводка платы 1M x 32 x 4 на двух SDRAM MT48LC4M16A2TG-75. Написание собственного прошивальщика DataFlash
    12.07.07 Поставил MAX3232 вместо MAX232, тем самым все линии ввода/вывода стали на 3.3V
    15.07.07 Провален тест SDRAM. Исключение SDRAM из схемы. Успешное подключение CF к шине EBI
    16.07.07 Найдена ошибка чтения CF. Успешное подключение VS1003 к AT91RM9200
    17.07.07 Пришли комплектующие от ТерраЭлектроники. Заменил AT45DB021B (28pin) на AT45DB011B (8pin)
    Заменил диповский LM358 на планарный. Объединил аудиовыходы VS1003 и YMF721
    18.07.07 Расширил динамический диапазон усилителя LM358 повышением напряжения питания до 5V
    Поставил супервизор MAX6390, схема при этом стала стабильно запускаться с первого раза
    Заменил диповский MAX761 на планарный и подал на него 5V
    Реализована следующая схема загрузки:
    1) С DataFlash'а ARM'ом считывается загрузчик во внутреннюю RAM. Затем на него передаётся управление
    2) Загрузчик считывает с CompactFlash бинарник во внешнюю SRAM. Затем передаётся управление на бинарник
    3) Бинарник выполняется во внешней SRAM (код+данные)
    Написаны: прошивальщик для CompactFlash и загрузчик из CompactFlash (прошивается в DataFlash)
    20.07.07 Исключил CF и VS1003 из-за их нестабильной работы до выяснения обстоятельств.
    Реализована автономная загрузка программ из MMC(SD)
    22.07.07 Приехал домой. Освоил чтение/запись на AT45DB011B аппаратным SPI
    24.07.07 Поставил буфер 74HC244 на VS1003 и MMC. Успешно запустил VS1003+MMC и DataFlash
    25.07.07 Раскопал истинную причину подглючивания SPI-устройств при их динамичном использовании.
    Были высокочастотные наводки на портах ввода/вывода, отвечающие за выбор чипа на шине SPI.
    Конденсаторы-глюкодавы прочно спасли положение! Теперь MMC+VS1003 и DataFlash работают нормально
    26.07.07 Провозился с CF. Исключил её из схемы по следующим причинам:
    1) Альтернативный источник хранения информации по отношению к MMC
    2) Восприимчивость к наводкам (глючные чтение/запись)
    3) Уменьшение нагрузки на шину EBI
    4) Упрощение разводки печатной платы в дальнейшем
    5) Уменьшение габаритов платы
    27.07.07 Задействовал FIQ в AT91RM9200. Завёл туда IRQ от YMF721 (прерывание по переполнению таймеров YMF721)
    Задействовал IRQ6. Завёл туда DREQ от VS1003 (прерывание по занятости VS1003)
    28.07.07 Провозился с NPCS0. Обнаружил, что SPI парализуется, если NPCS=0 или pull-down
    29.07.07 Задействовал NPCSx вместо PIO для SPI-устройств
    01.08.07 Разогнал ядро ARM до 200 МГц. Тоесть PCK=200 MHz, MCK=PCK/2=100MHz
    03.08.07 Успешно испытал клавиатуру 3x4.
    Обнаружил глюк PIO (нужна небольшая задержка, чтоб значение после записи в порт, стало актуальным)
    04.08.07 Шлифовал схему:
    1) Устранил дыры в адресном пространстве
    2) Убедился, что ~WAIT для YMF721 необходим
    3) Сделал программное включение/выключение DC/DC-преобразователя напряжения для OLED дисплея
    4) Запитал стабилизаторы питания параллельно (для равномерного распределения нагрузки)
    Сграбил Font8x8 с IBM PC
    05.08.07 Обнаружил ляп, замыкающий 8-й бит OLED и выхода DC/DC преобразователя.
    Расширил шину данных для OLED с 8 до 9 бит (что позволит задействовать режим 262 тыс. цветов)
    06.08.07 Обнаружил отсутствие контакта в цепи сброса OLED, что делало нестабильным его включение
    Обнаружил, что pull-up резистор на ножке ~WAIT у YMF721 выбран некорректно (OPL3 работал неустойчиво)
    Из-за этого схема работала нестабильно при PCK=200 MHz и MCK=100 MHz. Заменил его на 1кОм
    07.08.07 Провозился отдельно с SDRAM (одна MT48LC4M16A2TG-75). Успешно запускается только на 25МГц
    10.08.07 Всё-таки вопреки своим убеждениям, пытался выжать с SDRAM максимум.
    Применил RC-цепочки на SDCKE и SDCK (220 Ом, 50пФ), что дало запустить SDRAM на 45МГц.
    Тестировал SDRAM на чтение/запись по байтам/словам/двойным словам.
    Исполнил код в SDRAM. Присутствие SDRAM говнячит все шины ARM'а.
    Работа SDRAM создаёт наводки на остальные периферийные устройства.
    Графика с SDRAM работает в 3 раза медленнее, чем с SRAM (код+данные+видеобуфер в SDRAM).
    В AT91RM9200 невозможно тактировать SRAM и SDRAM от разных MCK.
    Учитывая вышесказанное, исключил SDRAM из схемы окончательно.
    Произошло ужасное: короткое замыкание в цепи 3.3V (оловянный ляп упал в процессе демонтажа SDRAM)
    После устранения аварии проверил: ARM,MMC,VS1003 пашут. Остальное нет.
    Принял решение сделать ремонтаж всей периферии. Перепаял SRAM. К великому счастью заработала!
    11.08.07 Окончательно перепаял всю периферию. Восстановил всю Advanced Micro Machine.
    Нашёл ещё оди оловянный ляп на шине данных, что и делало неработоспособными устройства на EBI шине.
    Задействовал интервальный таймер и его прерывание для отсчитывания секундного интервала (для измерения FPS)
    Пробовал ARM/Thumb Mode. Режимы равнозначны с позиции быстродействия (код в 16-битной SRAM), так как
    ARM-инструкция 4 байта(2 обращения к 16bit SRAM), а
    Thumb-инструкция 2 байта(одно обращение к 16-bit SRAM, но время уходит на декомпрессирование Thumb->ARM).
    В Real View C Complier использовал Cross Module Optimization и Optimization Level 3 - производительность
    графики выросла на 30%. Использовал ARM Mode с ARM/Thumb Interworking. В итоге выжал максимум 95 FPS!
    И это не единой строчки на Assembler'е! Поигрался с контрол-регистром кэша. Включение кэша данных без MMU
    ничё не даёт. Лучше всего Syncronous Mode. С его помощью достиг 102 FPS! Режим Fust Bus наоборот тормозит (82 FPS)
    12.08.07 Освоил MMU. Задействовал кэш данных. Достиг 154 FPS! Подправил регистры PLL.
    В итоге при PCK=200MHz,MCK=100MHz,ICache,DCache,MMU получил 185 FPS! Кэш данных дал прирост на 50%
    13.08.07 Ради эксперимента перенёс код во внутреннюю SRAM. Данные оставил во внешней SRAM. Быстродействие не изменилось.
    Протестировал быстродействие во всех комбинациях (M=MMU,D=DataCache,I=InstructionCache):
    038 FPS
    M 038 FPS
    D 038 FPS
    DM 040 FPS
    I 126 FPS
    I M 140 FPS
    ID 126 FPS
    IDM 186 FPS
    14.08.07 Заставил работать ОДНОВРЕМЕННО VS1003(MP3-композиция), YMF721(OPL-композиция), OLED(16bit-графика с буфером)
    MP3 - 128kbps, 44100Hz, 16bit, Stereo (данные подкачиваются с MMC)
    OPL - BIN(RAW) Stream, 157Hz (данные в SRAM)
    Graphix 16bit - 160 FPS!!! Кэши и MMU включены


23 Aug 2007 16:34
Profile
Banned

Joined: 12 Oct 2006 16:44
Posts: 608
Reply with quote
Post 
Конец всему делу венец:
Image


23 Aug 2007 16:35
Profile
Banned

Joined: 12 Oct 2006 16:44
Posts: 608
Reply with quote
Post 
Только сразу предупрежу, что линукс тут не прыгает!
Пишется исключительно под камень

Никто не хочет что-нить под данную железку написать? ;)


23 Aug 2007 16:42
Profile
Banned

Joined: 12 Oct 2006 16:44
Posts: 608
Reply with quote
Post 
Сейчас настало время объяснить уважаемым, почему выбор пал именно на AT91RM9200:

1) доставаемость - заказ по почте или в местных магазинах
2) относительно низкая цена - 447 руб (с налогом 527 руб)
3) мега-высокая производительность
4) низкое энергопотребление(не греется)
5) куча встроенной периферии
6) встроенный контроллер памяти / внутренняя логика
7) поддержка внешней памяти
8) Фон-Неймановская архитектура (код+данные в одной памяти)
9) паябельный корпус

Ниже даны характеристики процессоров,
претендовавших стоять в Mega~, Advanced~ Машине:

Z80 "простенько и со вкусом"
Производительность <1 MIPS
Максимальная тактовая частота 20 MHz
Кэш инструкций 0 Байт
Кэш данных 0 Байт

Недостатки:
1) чудовищно малая производительность
2) ограниченное линейное адресное пространство
3) низкая пропускная способность шины данных
4) отсутствие кэшей
5) не производится
6) высокое энергопотребление
---------------------------------------------------------------------
MC68000 "сеговский ЦПУ"
Производительность 1.6 MIPS
Максимальная тактовая частота 16 MHz
Кэш инструкций 0 Байт
Кэш данных 0 Байт

Недостатки:
1) очень малая производительность
2) отсутствие кэшей
3) внешняя логика для подключения памяти/периферии
4) не производится и недоставаем
--------------------------------------------------------------------
MC68030 "имеющийся в наличии"
Производительность 12 MIPS
Максимальная тактовая частота 50 MHz
Кэш инструкций 256 Байт
Кэш данных 256 Байт

Недостатки:
1) малая производительность
2) мелкие кэши
3) куча логики для подключения памяти/периферии
4) недоставаем
5) непаябельный корпус
---------------------------------------------------------------------
MC68060 "мотороловский король"
Производительность 100 MIPS
Максимальная тактовая частота 66 MHz
Кэш инструкций 8192 Байт
Кэш данных 8192 Байт

Недостатки:
1) куча логики для подключения памяти/периферии
2) недоставаем
3) непаябельный корпус
--------------------------------------------------------------------
AT91RM9200 "само совершенство"
Производительность 200 MIPS
Максимальная тактовая частота 180 MHz
Кэш инструкций 16384 Байт
Кэш данных 16384 Байт


26 Aug 2007 20:13
Profile
Banned

Joined: 12 Oct 2006 16:44
Posts: 608
Reply with quote
Post 
Расскажу, почему же не захотел использовать V9990.

1) Схемотехнические причины:

1.1) Неудобный геморой с опорными частотами из-за отсутствия "специфичных" кварцев
1.2) Как следствие - разрастание схемы (применение PLL)
1.3) Ненадёжность работы из-за "специфичной" Video DRAM (которая сильно "шумит")
1.4) Отсутствие встроенных вещей - PAL-поднесущая/Coder/Internal VRAM

2) Программистские причины:

2.1) Tile- режимы:

2.1.1) Крайне дурацкая организация управления видеоресурсами, порождающая неудобства
2.1.2) Куча ограничений (размер спрайтов, их количество)
2.1.3) Куча глюков (снег во время изменения палитры, расщипление спрайтов на тайлы при их наложении)
2.1.4) Чудовищно мало цветов

2.2) Bitmap- режимы:

2.2.1) Медленный скрол (не годящийся для флипания страничек)
2.2.2) Крайне малая производительность Блиттера (с буферизацией и 10 FPS небыло)

3) Прочие причины:

3.1) Для портативных вариантов не годится
3.2) Как следствие - громоздкая и ненадежная схема

Если равняться на телевизор, то лучше сразу ориентироваться на видеоконтроллеры со встроенным
движком и желательно со вcтроенной VRAM (ибо проблем у самодельщиков будет по самые грабли).

Этим требованиям отвечают(что я нашёл):

1) Чипы от Epson(наподобие в АРМовских девбордах) - пара представителей имеют 2Д-ускоритель
2) Чипы от Fujitsu - более интересны - кроме 2Д есть и 3Д-ускоритель

Может быть у них будет высокая производительность в Bitmap Mode?


26 Aug 2007 20:16
Profile
Banned

Joined: 12 Oct 2006 16:44
Posts: 608
Reply with quote
Post 
А теперь поговорим, почему же SX48 остался без применения.

Когда я небыл знаком с АРМами, то архитектура МикроМашины вырисовывалась примерно следующая:

1) CPU Z80 @20MHz
2) External SRAM 512K x 8
3) Периферия (уж не помню какая - куча всего надумывал)
4) Видео ускоритель - PPU (Picrure Processing Unit) на базе SX48 @80MHz и OLED-дисплея

Видеосистема должна была работать в двух режимах:

1) Bypass Mode - все команды CPU идут в OLED-матрицу, обходя SX48
2) PPU Mode - команды идут в SX48, который содержал прошивку графического ускорителя

Задачи, которые в то время возлагались на PPU:

1) Блитинг (с цветом прозрачности)
2) Загрузка спрайтов в VRAM
3) Установка видеорежимов
4) Управление атрибутами блитинга
5) Сролинг
6) Чистка экрана
7) и многое другое...

В процессе освоения AT91RM9200 я понял, что ДАЖЕ ПОЛУ-СОФТВАРНЫЙ(см. P.S.)
ВЫВОД ГРАФИКИ перекроет по возможностям MIDDLE-WARE SX48. Есть несколько причин:

1) Шина данных(SRAM) у AT91RM9200 - 16bit, у SX48 - 8 bit
2) Частота 180 MHz против 80 MHz
3) Аппаратное обращение к периферии(VRAM, OLED) вместо софтварного(дёргание лапок вв./выв.)
4) Наличие кэшей (повышение производительности в десятки раз)
5) Более гибкая система и отсутствие согласования между CPU и SX48
6) AT91RM9200 - high perfomancse MCU и доказывать что он быстрее Z80, думаю, не стоит

Вывод - бесперспективно (тем более речи о 16-битной графике на SX48 не может и быть!)

P.S. Контроллер OLED-матрицы имеет 2Д-ускоритель первичной(отображаемой) поверхности,
что упрощает отрисовку графики. Поэтому полностью софтварной графику назвать нельзя.

P.P.S. Очень рад, что себя превозмог и занесло на АРМы :)


26 Aug 2007 20:17
Profile
Doomed

Joined: 18 Feb 2007 11:40
Posts: 408
Reply with quote
Post 
EP9315 лучше, но корпус BGA... :-(


27 Aug 2007 05:08
Profile
God
User avatar

Joined: 29 Dec 2003 01:00
Posts: 1101
Location: Москва
Reply with quote
Post 
Different wrote:
EP9315 лучше, но корпус BGA... :-(

Угу на Циррозы еще два года назад глаз положил, но пока с БГА не научусь работать - это все бесполезно.
А брать борд слишком кучеряво уж больно он некислый по цене!

_________________
Московский филиал NedoPC http://www.nedopc.com


27 Aug 2007 05:39
Profile ICQ WWW
Banned

Joined: 12 Oct 2006 16:44
Posts: 608
Reply with quote
Post 
CHRV wrote:
А брать борд слишком кучеряво уж больно он некислый по цене!


вот именно! поэтому дешевле самому сделать и сразу с нужной периферией!

Advanced MicroMachine(и не только) обсуждается ещё тут:
http://zx.clan.su/forum/16-29-1


27 Aug 2007 15:33
Profile
Banned

Joined: 12 Oct 2006 16:44
Posts: 608
Reply with quote
Post 
Different wrote:
EP9315 лучше, но корпус BGA... :-(


Уж так сложилось, что цырроз делал самые отстойные чипы...
что счас - не знаю!

EP9315 по описанию вкусен, НО: не моя там периферия!
Единствено - прельщает FPU

P.S. думаю может MC68882 к ARM9200 прикрутить?


27 Aug 2007 16:29
Profile
Doomed

Joined: 18 Feb 2007 11:40
Posts: 408
Reply with quote
Post 
У Cirrus Logic и NXP отличные контроллеры сейчас в плане ARM.
Младшие модели EP9301 и EP9302 имеют отличные корпуса LQFP-208, но периферия урезанная.


27 Aug 2007 22:12
Profile
Banned

Joined: 12 Oct 2006 16:44
Posts: 608
Reply with quote
Post 
мне счас нет смысла переходить на другое
дай бог, чтоб и это до конца доделать(печатка/софт)

а то так всю жизнь в поисках лучшего проведёшь.
тем более меня всё устраивает!


28 Aug 2007 17:30
Profile
Banned

Joined: 12 Oct 2006 16:44
Posts: 608
Reply with quote
Post 
Ну чё-то вообще тихо!
Чего не скажешь о http://electronix.ru/forum/index.php?showtopic=35846&view=getnewpost


31 Aug 2007 04:26
Profile
Banned

Joined: 12 Oct 2006 16:44
Posts: 608
Reply with quote
Post 
По многочисленным просьбам сообщаю всё о чудо-дисплее:

Дисплей UG-2828GFECF01
Встроенный видеоконтроллер SSD1339
Поставщик Терраэлектроника

Тут я собрал некую инфу об аналогичных дисплеях:
http://www.nedopc.org/nedopc/upload/OLEDs.rar


04 Sep 2007 19:03
Profile
Junior
User avatar

Joined: 14 Oct 2007 19:46
Posts: 7
Location: Russia
Reply with quote
Post 
Довольно интересный проект!
Автору - почтение!

как можно заставить VS1003 работать по прерываниям?
там ведь только ножка DREQ, которая 0, если занято.

собираюсь сделать на BlackFin комп своей мечты :)


14 Oct 2007 20:33
Profile
Display posts from previous:  Sort by  
Reply to topic   [ 110 posts ]  Go to page Previous  1, 2, 3, 4, 5 ... 8  Next

Who is online

Users browsing this forum: No registered users and 22 guests


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot post attachments in this forum

Search for:
Jump to:  
Powered by phpBB® Forum Software © phpBB Group
Designed by ST Software.