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

Открытый проект одноплатного компьютера на базе ARM AT91SAM9260

Приветствую всех заинтересованных в открытом проекте одноплатного компьютера на базе ARM процессора. Я хотел бы рассказать вам о том, как продвигается работа и к чему она приведет. Т.к. проект довольно объемный я надеюсь на помощь сообщества в его проектирование, отладке и составление полноценной документации.

Как уже сообщалось в рассылке среди людей сделавших предварительный заказ, я нашел фирму, где готовы помочь с производством всего железа и обеспечить дальнейшее развитие проекта, с одним но: рисунок печатной платы будет распространяться только с готовым изделием и под академической лицензией, все остальное будет открыто. Такое сотрудничество позволит снизить цену запаянного и оттестированного комплекта до цены около 100$ (практически по себестоимости компонентов) не считая доставки.

 

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

 

 

Вкратце об архитектуре:

  • Процессор ARM9 200MIPS, Atmel AT91SAM9260
  • Оперативная память SDRAM 64МБ/128МБ (два чипа 256 Мбит 16х16 или один 512Мбит 32х16), разрядность шины памяти 32 бита.
  • Встроенный NAND Flash на 256, 512 или 1024Мб (наприсмер Samsung K9F2G08U0A-P).
  • Часы реального времени (Integrated RTC/Alarm and 64Kb FRAM) на I2C
  • USB host 1 порт, 12Мбит/с
  • USB device 1 порт, 12Мбит/с
  • RS-232 (отладка) + COM0(Порт модемный)|COM1(RS232) или вместо COM портов 4 RS485 .
  • Ethernet 10/100 (Micrel KS8721BL)
  • IDE порт. 40pin (на шине памяти) или CF в IDE mode (3,3 TTL уровни на выход, совместимы с 5V на вход, на шине двунаправленные буферы с малой емкостью)
  • LPT порт 3.3V TTL (2*13pin линейка, совместимая с выкидышами в обычных PC)
  • CODEC AC97 - 2 входа, 2 выхода (наушники 16Ом).
  • CMOS Image Sensor (порт)
  • Serial Flash (будет просто возможность ее установки, но ставить ее не будем, тк грузиться можно будет и с NAND)
  • SD интерфейс (сам разъем устанавливаться не будет, для экономии места)
  • Video Controller на шине памяти (EBI) (возможно нецелевое использование, например как сопроцессор)
    • ALTERA Cyclone 2
    • 8 MB SDRAM на 32 битной шине в качестве видеопамяти
    • DVI порт с возможностью работы с аналоговым и с цифровым интерфейсом. Интерфейс реализован на отдельных аппаратных микросхемах, цифровой вход – на выходе видео (все будет предусмотрено для монтажа но можно играть на компонентах, устанавливая только требуемый интерфейс)

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

 

Сами задачи:

 

I. По железу:

  1. Для KS8721BL известна особенность, может включаться не одновременно с контроллером. В данной плате линия Reset должна быть выведена на отдельный вывод GPIO-порта. После инициализации работы контроллера, до начала работы с микросхемой физического уровня необходимо выставить на линии MII интерфейса адрес устройства и произвести Reset. Вывод Reset используется также для вывода микросхемы из глубокой спячки. Ввод в состояние анабиоза происходит путем записи в управляющий регистр флага. Она уже полностью разведена, за исключением резета. Я должен быть уверен, что в загрузчике будет возможность эту инициализацию обеспечить с любым пином идущим на резет, и не только в загрузчике, но и в линух сборке.

  2. IC supervisor – нужен ли он при стабильном питание?

  3. В качестве видеоадаптера будет стоять ALTERA Cyclone 2, для его нормально функционирования нужна конфигурирующая козявка, которая стоит денег, и от нее хотелось бы избавиться. Знаю, что существует возможность конфигурирования без нее с помощью JTAG и сторонним процессором. В нашем случае сторонним процессором будет 9260, мне нужны выдержки объясняющие протокол и схемотехнические решения. Можно и желательно в примерах.

  4. Возможное и другое применение ПЛИСа, скажем в качестве сопроцессора. Но для этого нужно обеспечить IRQ к процессору. Какие есть переложения? Достаточно ли одной ноги или использовать дополнительный интерфейс?

  5. На плате будут 2 JTAG – у 9260 и у ПЛИСа. Процессорный скорее всего будет выведен на нижнюю сторону платы в виде падов для пайки шлейфа с шагом 1.27. Это позволит сэкономить ценное место. Второй разъем пока под вопросом, я склоняюсь к тому чтобы его оставить в первозданном виде 5х2 IDC. Еще более продвинутый вариант – совмещение двух в один – принципиально это возможно, есть примеры объединения у некоторых производителей, но только между своей продукции. Может кто уже сталкивался с подобной задачей?

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

 

II. По софту:

  1. Нужно выбрать IDE. Я хотел бы собрать общее мнение, если вы пользуетесь проприетарными средами, можете предложить и их. Все отлично понимают, что в нашей стране можно достать что угодно, даже допускаю, что у кого-то на месте работы установлен крупный и дорогой пакет, но для открытого проекта использование закрытых инструментов возможно (например демо версии KAIL c GCC - ограничений нету), но не обязательно – и это главное условие. А обязательное условие – доступность. (в принципе есть командная строка и GCC, не хватает makefile) Вот требования, которым должен удовлетворять:
    • Кроссплатформенность

    • Открытая лицензия GNU/GPL и их вариации

    • использование сторонних компиляторов

    • Интеграция с SVN(subversion server)

    • Возможность создания по шаблону итоговых проектов, готовых к употреблению (make file, bin loader) , хотя это можно и ручками)

    • Удобство работы
  2. Нужно описать сборку и конфигурацию загрузчика для этого проекта. Сюда же упомянутая задача с инициализацией контроллера Ethernet и конфигурирование ПЛИС. Эту стоит уже сделать сейчас, чтобы можно было отладить первые экземпляры и удостовериться в их работоспособности. (Пример http://heavy-online.ru/arm-linux/ - сборка toоlchain для ARM и запуск linux на AT91RM9200)
  3. На будущее нужны инструменты по созданию капитального обновления сборки как через так и с помощью загружаемого файла. Как прочессора, так и циклона. При этом заточенного именно для этого проекта, ну и оттестированного соответственно со всеми элементами этой платформы.
  4. Теперь о десерте. Нужна помощь в создание видеоадаптера, точнее конфигурации ПЛИС. Вот минимальные функции ускорения, которые уже в проекте:
    • горизонтальная линия (простое заполнение строки)

    • генерация вектора (формируется построчно, в области памяти)

    • наложение на страницу (простое построчное замещение в области памяти)

    • наложение с альфа каналом (смешение, 8 бит)

    • наложение текста, вектора
    Если рассматривать структуру, то в ПЛИСе нужно реализовать:
    • работа с SDRAM (рефреш, адрессное про-во)

    • 4 буфера для видеопамяти

    • 2 входных буфера (массив данных и команды) представляющиеся для ARMа как микросхема памяти

    • целочисленный АЛУ
    Это все прикидки, требующие проработки. В данном вопросе требуется человек способный помочь реализовать все в коде.
Сейчас готово 70% разводки, размер платы будет 100*122, по ширине соответствует среднестатистическому HDD и крепежные отверстия позволяют крепить плату прямо к винчестеру. Подразумевается подключения HDD через небольшой шлейф. Компоновка внешних разъемов еще будет прорабатываться. Все компоненты будет устанавливаться на верхнюю сторону платы, для полной автоматизации монтажа и для того чтобы не было проблем установки платы на тот же винчестер.

 

 

По условию компании, которая согласилась взяться за производство этой платы, разводка будет распространяться только вместе с устройством и по академической лицензии, те для образовательных целей. К сожалению вся плата сейчас разводиться без применения Shematic’а прямо в PCB. Окончательная схема будет уже нарисована после. Сейчас же я готовлю блоксхему, где будет показаны все соединения. Этого будет достаточно для комфортного программирования.

 

Проект практически некоммерческий, наценка отсутствует. По желанию кроме самой платы в коробочке будет БП, и шнурки. Доставка за счет заказывающего, при этом не государственной почтой, дабы избежать проблем с потерей или повреждением.

 

Пока название у проекта arm9eb, но если у кого-то появится более созвучное содержанию, то можно изменить. Буду рад любым предложениям)

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

 

Posted at LJ community ru_embedded, ru_opencomputer, ru_radio_electr,ru_hdl_fpga

 

PS: если кто хочет принять непосредственное участие в проекте, пишите мне на почту b98af5d229f7c8e026c09907791bec73.gif - у каждого будет возможность внести свой вклад =)

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


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

чето молчат все... :07:

 

Я например не обладаю практически никаким опытом в этом деле, поэтому и плату беру для обучения, то есть помочь вряд ли смогу, если честно. Готов помочь сотней баксов :biggrin:

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


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

чето молчат все... :07:

 

Я например не обладаю практически никаким опытом в этом деле, поэтому и плату беру для обучения, то есть помочь вряд ли смогу, если честно. Готов помочь сотней баксов :biggrin:

 

 

Posted at LJ community ru_embedded, ru_opencomputer, ru_radio_electr,ru_hdl_fpga - вот тут отвечают и мне на почту обращаются... тк сам форум немного имеет свою задержку в отдачи, то я уже планирую использовать (да чего уж там - использую) другие информационные инструменты. щас думаю гугл групс использовать для новостей и обсуждения.

А то что готов купить, это радует) думаю я еще уроки подготовлю, мне по любому метоический материал понадобится

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


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

[*] IC supervisor – нужен ли он при стабильном питание?

 

Обязательно нужен. Это связано с проблемами подачи/отключения питания.

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


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

Обязательно нужен. Это связано с проблемами подачи/отключения питания.

 

угу, уже уяснил, объяснили. будет скорее всего ADM811SAR - у него еще и кнопка на него же вешается...

вот еще правда с плисом не понятно до конца....

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


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

вот еще правда с плисом не понятно до конца....
Моё письмо дошло?

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


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

насчет конфигурирования CYCLONE по JTAG:

надо три порта от контроллера к плис и один обратно (ну это понятно JTAGовские сигналы и ничего более)

Дальше просим у квартуса альтеровского выдать файл с конфигурацией плис типа *.jam

У альтеры на сайте есть JamPlayer. On c легкостью собирается под линуксом.

Все что нужно это:

1) задать #define PORT UNIX в файле port.h

2) отредактировать в файле jamstub.c функции:

а) initialize_jtag_hardware

б) write_byteblaster

в) read_byteblaster

г) jam_jtag_io

 

запуск этого плеера в консоли:

jamplayer -v -aCONFIGURE /home/vc/fpgacfg/my_favorite_conf.jam

 

естественно вставлябельно в стартовые скрипты.

 

я так свои поделки конфигурирую из линукса (правда линух под х86, пром пк). Про запайку конфигураторов на плату уже забыли.

Также думаю что лучше JTAG разьем для ПЛИС поиметь параллельно ножкам MCU (ессно MCU должен уметь свои ноги в третье состояние уводить). Хотя бы какой-нить малюсенький нестандартный.

 

Еще у альтеры на сайте есть вариант jamplayer'а для 51-го контроллера (да и думаю общий дистрибут можно перекопать под компиляцию без оси, ибо порт MCU наличиствует). В таком случае можно будет конфигурировать плис прямо из ромбута и иметь этот видеоадаптер изначально в качестве системного (дрова под линукс для видеоадаптеров не писал, так что как там ядро с ним будет работать - вопрос открытый). Вопрос только в скрещении jamplayer & romboot.

 

Кроме того существует вроде вариант с имитацией конфигуратора силами MCU по соответствующим ногам плис (вроде в режиме пассив сериал). Это ни разу не пробовал, может кто выскажется.

 

Ну и напоследок: если таки удастся получить стоимость такой платы в 100 уев (хотя сильные сомнения ). То я тоже куплю. :)

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

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


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

Имхо

at91sam9263 и 4слойка, тогда интересно.

пока в планах, перейти на него после 9260 не составит большого труда, но он существеннее дороже, да и вроде в бга корпусе только.

 

Моё письмо дошло?

дошло, ответил

 

насчет конфигурирования CYCLONE по JTAG:

надо три порта от контроллера к плис и один обратно (ну это понятно JTAGовские сигналы и ничего более)

Дальше просим у квартуса альтеровского выдать файл с конфигурацией плис типа *.jam

У альтеры на сайте есть JamPlayer. On c легкостью собирается под линуксом.

Все что нужно это:

1) задать #define PORT UNIX в файле port.h

2) отредактировать в файле jamstub.c функции:

а) initialize_jtag_hardware

б) write_byteblaster

в) read_byteblaster

г) jam_jtag_io

 

запуск этого плеера в консоли:

jamplayer -v -aCONFIGURE /home/vc/fpgacfg/my_favorite_conf.jam

 

естественно вставлябельно в стартовые скрипты.

 

я так свои поделки конфигурирую из линукса (правда линух под х86, пром пк). Про запайку конфигураторов на плату уже забыли.

Также думаю что лучше JTAG разьем для ПЛИС поиметь параллельно ножкам MCU (ессно MCU должен уметь свои ноги в третье состояние уводить). Хотя бы какой-нить малюсенький нестандартный.

все хорошо но ног у проце не так много свободных и скорее всего будет реализован в пассив моде.

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

Еще у альтеры на сайте есть вариант jamplayer'а для 51-го контроллера (да и думаю общий дистрибут можно перекопать под компиляцию без оси, ибо порт MCU наличиствует). В таком случае можно будет конфигурировать плис прямо из ромбута и иметь этот видеоадаптер изначально в качестве системного (дрова под линукс для видеоадаптеров не писал, так что как там ядро с ним будет работать - вопрос открытый). Вопрос только в скрещении jamplayer & romboot.

 

Кроме того существует вроде вариант с имитацией конфигуратора силами MCU по соответствующим ногам плис (вроде в режиме пассив сериал). Это ни разу не пробовал, может кто выскажется.

вот уже и высказались и его рекомендуют в ru_embedded@lj

Ну и напоследок: если таки удастся получить стоимость такой платы в 100 уев (хотя сильные сомнения ). То я тоже куплю. :)

стараемся влезть в 100 баков, вроде пока получаеться =)

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


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

насчет конфигурирования CYCLONE по JTAG:

надо три порта от контроллера к плис и один обратно (ну это понятно JTAGовские сигналы и ничего более)

Сдался этот JTAG c JAM плеером, если Циклон грузится контроллером по SPI прямо rbf файлом.

 

 

 

[*] На плате будут 2 JTAG – у 9260 и у ПЛИСа.

Два на кой сдались - никакой пользы кроме вреда :( В цепочку их, как и положено.

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


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

Сдался этот JTAG c JAM плеером, если Циклон грузится контроллером по SPI прямо rbf файлом.

Два на кой сдались - никакой пользы кроме вреда :( В цепочку их, как и положено.

ну SPI будет занята, так что будут GPIO, но думаю что это не особо принципиально.

как именно в цепучку, где можно об этом почитать?

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


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

пока в планах, перейти на него после 9260 не составит большого труда, но он существеннее дороже, да и вроде в бга корпусе только.

дошло, ответил

все хорошо но ног у проце не так много свободных и скорее всего будет реализован в пассив моде.

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

 

вот уже и высказались и его рекомендуют в ru_embedded@lj

 

стараемся влезть в 100 баков, вроде пока получаеться =)

1) что по jtag, что в пассиве грузить плис займёт одинаковое кол-во ног

считаем для Jtag

1 Tck

2 TDO

3 TDI

4 TMS

для пассива

1 Dclk

2 Data

3 Nconfig

4 Confdone

но есть одно но в пассиве можно пожертвовать Confdone :biggrin:

проверять загрузку плис на удачность чтением тестового регистра в плис :)

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

 

2) десерт для видео можно взять из альтровских аппнотов, да и сам видео контроллер

3) Jtag лучше не обеденять всё же :( сомнительное дело

 

p.s. реализовать всё в коде для видео много кто может из присутствующих в fpga форуме, только какой ему смысл? время много займёт от основной работы :)

 

ну SPI будет занята, так что будут GPIO, но думаю что это не особо принципиально.

как именно в цепучку, где можно об этом почитать?

Configuration Handbook,

раздел Passive Serial Configuration

 

Сдался этот JTAG c JAM плеером, если Циклон грузится контроллером по SPI прямо rbf файлом.

Два на кой сдались - никакой пользы кроме вреда :( В цепочку их, как и положено.

а как отлаживать одновременно и альтеру и проц?

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


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

для пассива

1 Dclk

2 Data

3 Nconfig

4 Confdone

Ну вообще-то спокойнее без жертв.

5 nStatus

6 Init_Done (совсем для полного счастья)

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

Без вариантов. И сам загружаемый образ тоже.

а как отлаживать одновременно и альтеру и проц?

А что значит отлаживать? Если boundary scan, то цепочка без вариантов. Если заливка Алтеры, то и контролер справится и JAM плееры вещь относительно не редкая.

Если работать с встроенным логическим анализатором и зараз трассировать контроллер, то это уже больше на извращение похоже. Хотя даже в этом случае это ограничения собственно узкоспециализированных JTAG адаптеров. Что касается, например однотипных контроллеров в цепочке, то отладчики на ура работают через один адаптер.

ну SPI будет занята, так что будут GPIO, но думаю что это не особо принципиально.

Абсолютно, только медленнее грузиться будет на ножкомахании.

как именно в цепучку, где можно об этом почитать?

Почитать в любом описании JTAG. Все очень просто - Разъем-первый_TDI - TDO - втрой_чип_TDI - ...

последний_TDO - Разъем.

Все остальное параллельно.

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


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

Ну вообще-то спокойнее без жертв.

5 nStatus

6 Init_Done (совсем для полного счастья)

 

Без вариантов. И сам загружаемый образ тоже.

 

А что значит отлаживать? Если boundary scan, то цепочка без вариантов. Если заливка Алтеры, то и контролер справится и JAM плееры вещь относительно не редкая.

Если работать с встроенным логическим анализатором и зараз трассировать контроллер, то это уже больше на извращение похоже. Хотя даже в этом случае это ограничения собственно узкоспециализированных JTAG адаптеров. Что касается, например однотипных контроллеров в цепочке, то отладчики на ура работают через один адаптер.

1)можно и с жертвами и очень даже спокойно :) , как это следать уже написал, а nStatus и Initdone никогда в реальных проектах не использовал, смысла нет да и отсутствие этих сигналов не критично.

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

и речь то идёт не об однотипхных контроллерах в цепочке, а об связке altera-atmel. совершенно ни к чему обьеденять их в одну jtag цепочку.

а вот как раз юзать встроенный анализатор signal tap и трассировать контроллер будет ОЧЕНЬ полезно при отладки видео, и как раз не понимание этого вызывает удивление. но как грится если очень хочется мучиться, то пжлста обьедените в одну цепочку :biggrin:

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


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

пока в планах, перейти на него после 9260 не составит большого труда, но он существеннее дороже, да и вроде в бга корпусе только.

Думаю на фоне стоимости всего изделия более высокая цена будет не настолько ощутимой. Вот запайкой bga конечно могут быть проблемы. :(

Повторюсь развернуто.

Но если вы хотите повторить чтото вроде 2-слойной rainbow то по моему это не имеет права называтся SBC. Минимум 4-х слойка с нормальной частотой работы внешней памяти и 9263 прежде всего потому что 2 внешних шины - одна на память другая на циклон.

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


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

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

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

Гость
Ответить в этой теме...

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

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

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

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

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

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