Страницы

воскресенье, 31 марта 2013 г.

Заложена страница церкови святых Стива и Билла

Радостная весть сегодня постигла наших прихожан. Долгий путь завершён. Поздравления всем подвижникам, кто выдержал, кто не сломился, кто устоял.
В бесовской сети Интернет открылась страница нашей церкви. Теперь, луч света будет согревать наши надежды на великий перенос и открытие одной фруктовой операционной системы на известную платформу. Очистительный мировой кризис лишь ускорит приход этого долгожданного события. Так возликуем же, восславим же скромных труженников -политиков и экономистов, способствующих приближению сего.

Пресс-служба церкви святых Стива и Билла

 

Миландр MDR32F9Q2I. ARM GNU AS Example. Пример ассемблерного файла

В данной заметке, представлю ранее уже опубликованный, простейший пример ассемблерного кода для Cortex-M3 микроконтроллера Миландр MDR32F9Q2I, переписанный на ассемблере GNU AS.

Ассемблер GNU AS - открытый проект ассемблера, входящего в набор инструментов GNU.
Пришёл на платформу Windows из прекрасного мира свободного программного обеспечения.
Позволяет снять ограничение на размер "прошивки", которое накладывают коммерческие ассемблеры, такие как Keil ARM ASM и пр. Это даёт шанс использовать всю мощь микроконтроллера, мощь открытых средств разработки, мощь многоплатформенности и пр.
Однако, пример то простейший, но "продраться" сквозь лес настроек - задача не из легких. Попробую.

Что понадобиться, для платформы Windows?


1. Сам ассемблер.
Ассемблер GNU AS проще всего получить в составе инструментов Sourcery CodeBench Lite Edition for ARM EABI. Исполняемый файл ассемблер arm-none-eabi-as.exe.
После установки этого набора, можно приступать к разработке.

2. Редактор исходного кода
Подойдет любой. Приветствуется - с подсветкой синтаксиса. Для начала я взял Eclipse JUNO SR1. Там можно просто открыть ассемблерный файл и отредактировать, не создавая проектов и пр., не вникая в бесконечные настройки среды (правда, в дальнейшем, вникнуть придётся).

3. Linker - компоновщик, редактор связей
Входит в пакет программ GNU ARM Toolchain. В моём случае, он есть в составе Sourcery CodeBench Lite Edition for ARM EABI. Там есть всё что нужно. Будет использоваться для
компоновки прошивок для ОЗУ и ПЗУ.

4. Objcopy
Для преобразования elf-файлов в конечные файлы прошивок, в формате intel hex или binary,
пригодные для загрузки в ПЗУ микроконтроллера сторонними средствами.

5. Make - утилита сборки
Понадобиться, что воспользоваться подготовленным файлом сборки (Makefile) для примера, чтобы не собирать проект отдельными командами. Прежде чем написать Makefile, я так и делал, чтобы получше осознать цепочку инструментов.
В наборе инструментов Sourcery CodeBench Lite Edition for ARM EABI, она зовётся cs-make.


6. Утилита загрузки в микроконтроллер
Это может быть, на данный момент, milprog, uart-bootloader (с форума Миландра), связка gdb отладчик + gdb-сервер от J-Link, либо от OpenOCD, либо что-то своё.

Проект примера

Пример можно собрать как в командной строке Windows, так и в среде Eclipse.
Проще в командной строке, т.к. надо выполнить только команду cs-make, в папке проекта.

Набор файлов проекта можно загрузить по ссылке: http://yadi.sk/d/VNTjnqXQ3fOpa

В Eclipse надо пройти цепочку действий - создать проект, импортировать туда пример, потом собирать. Eclipse перед этим надо настроить, для поддержки разработки ARM - установить GNU ARM Plugin, GDB Hardware debugging. С первого раза, сложновато.

Да, Makefile проекта простейший, не многоплатформенный. Например, цель "очистка проекта" работает под Windows.


Настройка среды под Linux будет позже, как только обновиться компьютер, но в принципе всё тоже самое, в некоторых местах даже проще.







вторник, 26 марта 2013 г.

О поддержке видеокарт Intel/AMD/NVidia в Linux. Часть I

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

Intel/AMD/NVidia - три крупнейших производителя видеокарт для персональных компьютеров. Все трое, мало уделяют внимания поддержке своего оборудования в Linux. Последнее время, движение в правильном направлении наметилось, но ещё не достаточно. Правильное направление - это качественные открытые графические драйверы, с поддержкой 2D-3D ускорения и всего того спектра возможностей, о которых я читаю в рекламных проспектах. Пусть это будет один производитель, но чтобы качественно.


Столкнувшись с практической неработоспособностью видеодрайвера для графического процессора Intel GMA3650, я решил внимательнее посмотреть на текущую ситуацию, с обеспеченностью графических процессоров работоспособными драйверами.

Март 2013 года.
Версии приведены по состоянию на март 2013 года. Дополнения вносятся в Августе 2013 года.
Оборудование, для настольных персональных компьютеров, доступное в розницу в России, г. Воронеж, на момент написания заметки.


AMD - Advanced micro devices

Сайт компании: http://www.amd.com/

Фирменный драйвер (closed-source) компании AMD, для её видеокарт, носит название Catalyst
Общая страница технологии Catalist на сайте компании: http://www.amd.com/us/products/technologies/amd-catalyst/Pages/catalyst.aspx


Процессор APU: AMD Trinity A10-5800K, встроенный граф.ускоритель Radeon 7660D.

Последний отдельный графический ускоритель: AMD Radeon HD 7950
Последняя, наиболее производительная серия: AMD Radeon HD 7000 Series (codename Southern Islands)
Последний наиболее производительный ускоритель: AMD Radeon HD 7970 GHZ Edition
7000 серия обеспечивает аппаратную поддержку спецификации OpenGL 4.2, OpenCL 1.2

Привходящее оборудование для настольных персональных компьютеров

Привходящий APU: AMD Richland A10-6800K, встроенный графический ускоритель Radeon HD 8670D. лето 2013 года
Привходящая серия: AMD Radeon HD 8000 Series, 4 квартал 2013 года
Привходящий, наиболее производительный ускоритель: AMD Radeon HD 8970 GHZ Edition

Особенности текущей политики AMD - ежегодное обновление линейки процессоров APU.


Последняя версия фирменного драйвера Catalyst для Linux:
13.4 от 29 мая 2013 года.
13.1 от 17 января 2013 года.
Драйвер ранее, в эпоху ATI, назывался fglrx.

Привходящая версия драйвера Catalyst для Linux: 13.8 beta
Ссылка на страницу последнего драйвера для Linux: http://support.amd.com/us/gpudownload/linux/Pages/radeon_linux.aspx


Общая ссылка на страницу выбора драйвера: http://support.amd.com/us/gpudownload/Pages/index.aspx


Ссылка на страницу предыдущих версий драйвера для Linux:
http://support.amd.com/us/gpudownload/embedded/previous/Pages/embedded_linux.aspx

Основной способ установки: распаковка и запуск скрипта инсталляции, из-под суперпользователя.


Открытый драйвер (open-source), для видеокарт AMD и процессоров AMD APU



Поддержка графических ускорителей AMD Radeon, в оконной системе X Window, в основном обеспечивается драйвером с названием Radeon (x86-video-ati)
Страница с описанием драйвера Radeon: http://www.x.org/wiki/radeon
Последние изменения драйвера: Версия 7.1.0 от 30 января 2013 года, добавлена полная поддержка ускорения двумерной графики (2D acceleration) S.Islands, т.е. серии AMD Radeon HD 7000 Series.
Из интересного: Поддержка AMD APU Trinity добавлена 28 марта 2012 года

Страница со сводной таблицей возможностей, реализованных в открытом драйвере Radeon: http://www.x.org/wiki/RadeonFeature

Для 3d-ускорения видеокарт 7000 и 8000 серии используются т.н. Gallium-драйвер - RadeonSI (сокр. Radeon Southern Islands). Очень базовая поддержка.
Открытый драйвер для встроенной графики процессора AMD APU Trinity (Radeon HD 7660D) в настоящее время разрабатывается.



Intel - Integrated Electronics

Сайт компании: http://www.intel.com/

Последнее кодовое наименование процессоров: ivybridge
Последнее семейство настольных процессоров: Intel Core i7 3-d generation
Последняя серия встраиваемых графических ускорителей Intel: Intel HD Graphics 4000

Привходящее кодовое наименование: haswell
Привходящее кодовое наименование настольных процессоров: haswell-dt
Привходящее семейство настольных процессоров: Intel Core i7,i5,i3 4-d generation
Привходящая серия встраиваемых графических ускорителей Intel: Intel HD Graphics 4600 ( GT2), Intel HD Graphics 5200

Открытый драйвер для оконной системы X Window: x86-video-intel
Последняя версия: 2.21.5 от 20 марта 2013 года

Страница со сводной таблицей возможностей драйвера x86-video-intel: http://www.x.org/wiki/IntelGraphicsDriver

Открытый драйвер x86-video-intel поддерживает SNA/UXA ускорение двумерной графики.



Список наборов микросхем графических ускорителей, поддерживаемых
открытым драйвером Intel: https://01.org/linuxgraphics/about/supported-hardware

Увы, в этом списке, не указана поддержка Intel GMA3650, которая входит в процессор Intel Atom N2800, установленный на материнской плате Intel DN2800MT, на которой эта заметка написана.


NVidia

Сайт: http://www.nvidia.com/

Страница загрузки фирменных драйверов для видеокарт NVidia:
 http://www.nvidia.com/object/unix.html

Последняя версия фирменного драйвера nv: 310.40 от 8 марта 2013 года

Последний отдельный графический ускоритель для настольных компьютеров: Geforce GTX Titan
Аппаратно поддерживает Open GL 4.3, OpenCL, CUDA


Открытый драйвер x86-video-nouveau

Страница с описанием драйвера Nouveau: http://nouveau.freedesktop.org/wiki/
Последние изменения драйвера: 1.0.6
Поддерживается ускорение двумерной графики (2D EXA).
Технология Nvidia Optimus не поддерживается в настоящее время свободным драйвером neuveau.

nouveaufb - драйвер для виртуальной консоли.



Технологии, графические подсистемы, прикладные интерфейсы

X.Org

X.Org - свободная реализация оконной системы X Window system.
Сайт: http://www.x.org/wiki/


Чтобы узнать версию установленного X сервера:
$ X -version

X.Org X Server 1.13.3
Release Date: 2013-03-07
X Protocol Version 11, Revision 0

Журнал загрузки X сервера: /var/log/Xorg.0.log

Mesa

Mesa - открытая реализация интерфейса прикладного программирования трехмерной графики (API OpenGL), в виде библиотеки.

Сайт разработчика спецификации OpenGL: http://www.khronos.org/opengl

Последняя версия спецификации: OpenGL 4.3, OpenGL Shading Language 4.30, от 6 августа 2012 года


Сайт библиотеки Mesa: http://www.mesa3d.org/
Последняя версия: 9.2 от 27 августа 2013 года

Уровень поддержки спецификации OpenGL
Для достижения полной поддержки спецификации OpenGL 3.2 осталось реализовать язык "shader language 1.5" - GLSL 1.5.


Проверка версии Mesa в системе Ubuntu 13.04 установленной на плате Intel DN2800MT - команда glxinfo

gimmor@oko$ glxinfo | grep "OpenGL"
OpenGL vendor string: VMware, Inc.
OpenGL renderer string: Gallium 0.4 on llvmpipe (LLVM 0x301)
OpenGL version string: 2.1 Mesa 9.0.3
OpenGL shading language version string: 1.20
OpenGL extensions:

Откуда сразу становиться понятно, что версия в пакетах Ubuntu - не самая последняя, но устаревающая. Используется программный отрисовщик трехмерной графики. Поддерживается спецификация OpenGL версии 2.1, shading language 1.2.

Помимо OpenGL, библиотека Mesa поддерживает API OpenGL ES 1 и ES 2, OpenVG и EGL.

Gallium3D

Gallium3D - унифицирующий слой API. В настоящее время - часть исходных кодов библиотеки Mesa.
Унификация прикладного интерфейса породила термин Gallium-драйвер, это та часть, которая отличается, - своя для каждого графического ускорителя.

EXA 2D acceleration

Стандартный способ ускорения двумерной графики графическим ускорителем,  используемый в X сервере.
В настоящее время, большинство графических драйверов X Windows реализуют EXA ускорение.

XAA XFree86 Acceleration Architecure 

Устаревший способ ускорения двумерной графики - XAA, удалён из базы исходных кодов, начиная с версии X.Org 1.13.



SNA/UXA 2D acceleration

Способы ускорения двумерной графики используемые в открытом драйвере Intel для X Window.
UXA - первый реализованный способ, SNA - его дальнейшее развитие.
SNA - Sandy Bridge New Acceleration

Отличительная черта UXA - использование GEM (Graphics Execution Manager). GEM включен в состав ядра Linux и используется для поддержки работы драйвера intel.
Отличие SNA от UXA в переработанной внутренней структуре.


CLAMOR 2D acceleration - 2D over OpenGL

Ускорение отрисовки двумерной графики (2d), посредством 3d-драйвера.
Впервые введён в кодовой базе открытого драйвера x86-video-intel.

Новейший RadeonSI также поддерживает такую возможность.
Опция «AccelMethod» «glamor» в секции Device конфигурационного файла xorg.conf


OpenCL - Open Computing Language

OpenCL - каркас - полузабытое слово, способ организации программирования графических ускорителей (GPU), для использования
в обычных вычислениях. Содержит язык C99 и прикладной интерфейс
программирования.
Последняя версия спецификации: OpenCL

OpenVG
Ускорение векторной графики.
Сайт: http://www.khronos.org/openvg/


LLVM Low lever virtual machine

Унифицирующая технология компиляторов.
В Mesa используется программным ускорителем llvmpipe.


LLVMPipe

LLVMPipe - "пипе - ага, вот откуда пошла пипетка" - программный3d-растеризатор, как замена аппаратному ускорителю в графическом процессоре. Используется в т.н. "fallback" - безопасном режиме, при неработоспособности аппаратуры.

http://www.mesa3d.org/llvmpipe.html



VA-API Video acceleration application program interface

VA-API (Video acceleration application program interface) - открытый прикладной интерфейс, библиотека, обеспечивающая аппаратное ускорение декодирования видеоформатов.

http://www.freedesktop.org/wiki/Software/vaapi

Предложен фирмой Intel, в её свободных драйверах для своей встроенной графики.


VDPAU Video Decode and Presentation API

Наиболее поддерживаемый прикладной API для ускорения декодирования видеоформатов.
Предложен NVidia. Выступает как альтернатива иным прикладным интерфейсам ускорения декодирования видеоформатов (см. выше. VA-API).

XvBA X-Video Bitstream Acceleration

Открытый (open-source) прикладной API для ускорения декодирования видеоформатов, но работающий на закрытом драйвере AMD/ATI (Catalyst, быв. fglrx), предложенный фирмой AMD.
Может выступать как исполняющаяся часть VA-API.


VESA

VESA - стандартный графический драйвер, без ускорения.

FB Framebuffer
FB графический драйвер виртуальной консоли


AIGLX

$ cat /var/log/Xorg.0.log | grep AIGLX
[    19.390] (==) AIGLX enabled
[    19.826] (II) AIGLX: Screen 0 is not DRI2 capable
[    19.826] (II) AIGLX: Screen 0 is not DRI capable
[    19.863] (II) AIGLX: Loaded and initialized swrast

Direct rendering - способ прямого доступа к аппаратуре графического ускорителя

Изначально, ядро Linux, не разрешало прямого доступа к аппаратуре, в силу архитектуры своих корней Unix. Задумывалось скрыть оборудование от пользователя слоем абстрации. Однако, позже это вызвало трудности использования графических ускорителей в пользовательском пространстве, что и привело к созданию интерфейса DRI.

DDX

Драйвер внутри X Window



DRI - Direct Rendering Infrastructure

Страница проекта DRI: http://dri.sourceforge.net/

DRI2 - Direct Rendering Infrastructure  2

Страница проекта DRI2: http://www.x.org/wiki/DRI2/
Новая архитектура DRI.

DRM - Direct Rendering Manager
DRM - часть инфраструктуры DRI, находится в ядре.


LibDRM

Часть системы X Window, ответственная за прямой доступ к аппаратному ускорению.


KMS - Kernel Mode Settings

Mode settings - установка режима работы видеокарты - резрешения и числа цветов (битность, глубина цвета), выходов (outputs).

KMS в настоящее время поддерживают графические драйверы radeon, intel, nouveau

Используется для установки консоли высокого разрешения. Стандартная консоль имеет размер 80 символов на 25 строк.


GRUB2 - загрузчик (bootloader)

Опции, передаваемые ядру при загрузке (через GRUB):
text - загрузка в текстовом режиме
xforcevesa - принудительная (силой) загрузка драйвера стандарта VESA. Использовать когда невозможно загрузить обычный видеодрайвер. Т.е. это похоже на безопасный режим. Любая видеокарта поддерживает VESA режимы. Однако не будет 2D-ускорения.
nomodeset - отключение установки режимов, посредством KMS
video - установки режимов

Утилита xrandr

Управление выводами видеокарты, режимами, цветом,  компоновкой многомониторных конфигураций. Часть системы X Window.

Последняя версия: 1.2
Привходящая версия: 1.4


Wayland

Новый графический сервер. Запущен в разработку компаниями Intel и Reg hat. (синий волк и красная шапочка).

Страница http://wayland.freedesktop.org/
Последняя версия: 1.2


XWayland

Слой интеграции между X.Org и Wayland.

Mir

Новый собственный графический сервер (стэк) от Canonical.
Основное преимущество - работа на разнообразных платформах, от ПК до телефонов.
Ожидается и уже работает в Ubuntu 13.10.


XMir

Прослойка, позволяющая запускать приложения оконного сервера X, на сервере Mir.


NVidia Optimus

Технология переключения видеокарт "на лету".


bumblebee-nvidia

Поддержка технологии NVIDIA Optimus с использованием несвободного драйвера NVIDIA.


Unified Video Decoder UVD

В графических процессорах AMD - блок аппаратного декодирования битовых потоков, закодированных в стандартах H.264, AVC, VM-1 и пр.

В открытых драйверах Radeon появляется поддержка UVD.


VCE Video Codec Engine

В новейших графических процессорах AMD (AMD Radeon HD 7970) - блок аппаратного кодирования видеопотоков (VCE).
Данный аппаратный модуль присутствует и в гибридных процессорах AMD APU.


DPM Dynamic Power Management 

Технология управления потреблением питания, а значит и скоростью графической части в процессорах AMD APU.
Поддержка недавно введена в ядро Linux 3.11.
Обеспечивает существенное увеличение графической производительности встроенного в APU графического ядра, по сравнению с предыдущими.

Опция ядра: radeon.dpm=1

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



libglvnd

Библиотека-диспетчер (Vendor-Neutral GL Dispatch Library). Прослойка позволяющая иметь одновременно в системе различные реализации OpenGL, от различных поставщиков. По идее, если я правильно понял, можно будет иметь видеокарты от AMD и NVidia в одной системе.

Linux OpenGL ABI

Исходные коды и более развернутое описание libglvnd: https://github.com/NVIDIA/libglvnd


Intel QuickSync

Аппаратная технология Intel для ускорения кодирования/декодирования видеоформатов.
Официально, в операционной системе Linux поддержка Intel QuickSync не осуществляется. 
Существуюет свободный декодер видеоформатов поддерживающий Intel QuickSync decoder.


Выводы. Intel vs AMD

Для нормальной рабочей конфигурации рассчитанной на использование двумерной графики(разработка программ, почта, интернет и пр.) - выбор прост - Intel HD4000 и соответственно платформа Intel, т.к. существуют открытые драйверы.

Для экспериментов с поддержкой графики AMD - выбор APU AMD. Жаль, AMD выпускает процессоры дешевле Intel, с хорошей встроенной графикой, но не ориентируется на аудиторию Linux - это маркетинговый просчёт, либо специальные соглашения с "оффтопик". А потребность существует, огромна и нормальный открытый драйвер для APU позволит очистить склады моментально. Увы, - "денег не надо" ©Д.Е.Г.

Высокая частота обновления графических процессоров не оставляет шансов устаревшим версиям на полноценную поддержку, в результате получается - новые процессоры ещё не поддерживаются, а старые уже не поддерживаются. ИМХО.

Для моих целей (разработка) выбор может быть любым. И только открытый драйвер.


Ресурсы

. http://en.wikipedia.org/wiki/Radeon_HD_7000_Series
. Запуск поддержки Glamor: http://phoronix.com/forums/showthread.php?78512-Running-radeonsi-on-Ubuntu-13-04
. О текущей поддержке спецификации OpenGL в свободной библиотеке Mesa/Gallium3D. http://www.phoronix.com/scan.php?page=news_item&px=MTMzMzI
. Форум Ixbt - i3 vs A10, http://forum.ixbt.com/topic.cgi?id=8:24062
- Компания AMD открыла код для ускорения декодирования видео силами UVD-декодеров GPU. http://www.opennet.ru/opennews/art.shtml?num=36571
- О технологии Intel QuickSync. http://ru.wikipedia.org/wiki/Intel_Quick_Sync_Video
- Свободный декодер на основе Intel QuickSync. http://sourceforge.net/projects/qsdecoder/
- AMD Fusion Linux Gallium3D Performance Has Improved A Lot. http://www.phoronix.com/vr.php?view=19007
- http://en.wikipedia.org/wiki/X-Video_Bitstream_Acceleration
- NVIDIA Publishes Vendor-Neutral GL Dispatch Library. http://www.phoronix.com/scan.php?page=news_item&px=MTQ0NzU

суббота, 23 марта 2013 г.

Обзор возможностей Intel NUC в Linux Ubuntu 13.04

Предварительный анализ платформы Intel NUC модели DC3217BY для использования с операционной системой Linux Ubuntu



Оборудование в комплекте Intel NUC (DC3217BY)

1. Процессор Intel® Core i3-3217U. Рейтинг производительности, по данным сайта cpubenchmark.net - 2270.
2. Чипсет Intel® QS77 Express. Не важен, в силу ограниченных возможностей воспользоваться им.

3. Корпус UCFF с размерами 117  39  113 мм.
4. Внешний блок питания, 19В постоянного тока, мощностью 65 Вт.
5.  Графическая подсистема Intel® HD Graphics 4000 , встроенная в процессор.
6. Intel HD Audio 7.1 через HDMI и Thunderbolt( DisplayPort 1.1a).
7. Встроенные антенны Wi-Fi и Bluetooth
8. Воздушный вентилятор процессора и радиатор
9. Микросхема мониторинга напряжений и температуры - Nuvoton NPCE791C.

Возможности подключения периферии

2 разъёма USB2.0 с задней панели. Мышь и клавиатура. Всё остальное - через USB-разветвитель.

1 разъём на лицевой панели - подключение накопителей USB-Flash.
1 HDMI 1.4a - подключение монитора. Для старых систем нужен переходник HDMI-DVI.
1 Thunderbolt - основной источник расширения возможностей NUC. В данный момент - ограниченный.
1 miniPCI-e mSATA порт, для подключения накопителя
1 half-size miniPCIe порт с выведенными на него USB 2.0 портами
2 So-DIMM разъёма для подключения памяти объёмом до 16 GB
2 USB2.0 порта на колодке, на плате

Обязательное дополнительное оборудование

1. Переходник HDMI-F - DVD-D M. Например: http://www.ulmart.ru/goods/320307
2. Кабель HDMI 0.5 м
3. Память 8 GB DDR3
4. Накопитель mSATA - 128 GB
5. Кабель питания
6. USB-Ethernet адаптер, либо Thunderbolt-Ethernet адаптер
7. USB-разветвитель, активный - с собственным питанием (active USB-hub)


Необязательное дополнительное оборудование

1. Модуль беспроводной связи, в формате half-size (половинка) MiniPCI-e
2. Станция расширения интерфейса Thunderbolt

Идеи воспринятые от Intel

1. Ориентация на имеющееся оборудование и инфраструктуру. Мышь, клавиатура, монитор, накопители usb.
2. Взгляд в будущее. Прошло 5 лет. Купленный в 2013 году модуль Intel NUC уже не является диковинкой. Распространённые Thunderbolt накопители, RAID-массивы, внешние видеокарты и модули ускорения вычислений, позволяют 5-летнему модулю сохраняться в эксплуатации, однако сказывается недостаток производительности встроенного процессора и графической подсистемы - программную систему приходится оптимизировать. Бесшумность и компактность, продолжают радовать и позволяют рассчитывать на небольшое перепрофилирование модуля. Начинает сказываться качество комплектного блока питания. Закрытый код BIOS и отсутствие обновлений не позволяют реализовать полное перепрофилирование.


Исследование поддержки в Linux

Критические места, с которыми возникают проблемы поддержки - это чипсет и видеокарта, беспроводные модули, микросхемы мониторинга. Всё то, что содержит закрытые спецификации.

На март 2013 года, существуют проблемы с поддержкой Thunderbolt в Linux, особенно с драйверами сторонних устройств.  Однако, этот привходящий интерфейс пришел лет на 10 минимум и поддержка его в ядре Linux будет, и тестироваться она будет, в том числе и на NUC. Т.о. - этот недостаток, через 2 года будет исправлен. На текущее время, поддержка интерфейса Thunderbolt не требуется.

Графическая подсистема Intel HD Graphics 4000 выглядит как наиболее поддерживаемая открытыми драйверами в Linux. Т.е. такой ситуации как с Intel DN2800MT не получиться, на это надеюсь я, Люк.

Совместимость выбранного модуля WiFi-Bluetooth - проверяется отдельно. Список совместимого беспроводного оборудования представлен картами Intel.
Поддержку микросхемы мониторинга Nuvoton NPCE791С ожидать сразу не приходится - микросхема новая, встречается только в NUC.

С выходом в сеть, в версии DC3217BY, проблемы возникнут сразу. Их можно обойти применяя USB-Ethernet адаптер, либо WiFi.

Плюсы

1. Компактность и относительная тишина на рабочем месте
2. Возможность использования имеющегося устаревшего USB оборудования, до выхода его из строя
3. Thunderbolt
4. Концептуально-сильно

Минусы

1. Цена системы в сборе
2. Необходимость приобретения дополнительного оборудования по списку
3. Отсутствие Ethernet разъёма - необходим адаптер
4. USB2.0 - устаревающий интерфейс.
5. Маломощная для современных игр 3D-видеокарта. Исправить можно только внешней Thunderbolt-видеокартой.
6. Может статься, что это очередной эксперимент компании. Т.к. выпускать NUC они собираются с Q4/12 до Q1/13. Далее будет что-то другое. Возможно стоит подождать лета-осени, когда случится выход новых процессоров. Хотелось бы ясности, о дальнейшей судьбе и о поддержке.
7. В силу предыдущего пункта. Первый NUC - первый подход к снаряду. Вторая версия должна быть поинтереснее, с пережитыми "детскими" болезнями. А поддержка первого NUC - будет ограниченной, сужу по предыдущему опыту, притом, что у Intel - достаточно качественная поддержка и документация. Вот драйверы для Windows 9, они как, - будут?
8. Чипсет не соответствует концепции - использовалось то что было. Нужен чипсет с уже интегрированной поддержкой интерфейсов Thunderbolt, с отсутствием устаревших интерфейсов и пр. Выходящие процессоры Haswell уже содержат контроллер Thunderbolt на кристалле.



Плюсы для меня

1. Приобретение такой штуки как Intel NUC, позволяет окончательно решить вопрос со старыми и шумными компьютерами, малопроизводительным атомом и семпроном, селероном и вентилятором.
2. Стандартное крепление Vesa позволяет используя стандартные крепления Vesa укрепить модуль NUC хоть под столом, хоть на стене.
3. Тишина и низкое потребление даёт возможность редко перезагружать компьютер и экономить 10 минут каждый день. Наконец таки получить постоянно готовый и настроенный компьютер.
4. Производительность 2D графики Intel HD Graphics 4000 и её поддержка в Linux.
5. Завершиться окончательный переход на клиент-серверную архитектуру.
6. Производительность процессора NUC в 4-5 раз выше производительности имеющихся процессоров. Так что обновление имеет смысл.
7. Можно использовать в качестве роутера.

Минусы для меня

1. Цена системы в сборе конкурирует с обычным комплектом Intel Core i3 3225 + Intel DQ77KB mini-ITX + память + имеющиеся SSD и корпус с блоком питания.
2. Необходимость списания, через 5 лет, по причине принудительного прекращения жизненного цикла и появления новых технологий. Всё таки электрический Thunderbolt - переходный этап к оптике.
3. USB2.0 не позволяет использовать USB3.0-винчестеры для быстрой загрузки произвольной системы
4. Могу ошибаться, но нет загрузки по сети Thunderbolt, а это будет важно через 5 лет.
5. Закрытый BIOS
6. Отсутствие загрузки через Thunderbolt


Пожелания к следующему NUC

1. Всего по 2.  2 Thunderbolt - порта, 2 mini-PCIe.  и т.п.
2. Пассивное охлаждение
3. Дизайн корпуса
4. Проработка модели использования


Ожидается следующие варианты NUC в апреле 2013 года и в конце 2013 года

1. 3 видеовыхода
2. USB 3.0 порты
3. Intel Core i5 процессор




Выводы

1. Дайте 2, но по 5 Крублей. Идеальный компьютер разработчика для Ubuntu, с перспективой. Существующее модульное оборудование идеально впишется в новый вычислительный модуль, продлив свое существование ещё на 5 лет минимум. Ну хоть какая-то польза от "инвестиций" будет.
2. Программное обеспечение и концептуальная проработка продукта отстают от требований времени. Буду думать.
3. Если очень хочется тишины то можно и купить, но лучше подождать, либо собрать пассивный охладитель для i5.
4. Однако размер. Может купить? Нет. Не надо поддерживать сырые продукты.
5.Макет концепции. Назначение - демонстрация нового тренда. Может купить? Нет. Не люблю урезанные продукты.
6. Куда смотрит общество защиты потребителей? Пора, пора перевести "электронные продукты" в категорию несложных и возвращаемых товаров.
А то придумали - продуктовые линейки, урезанные продукты, таргетинг и пр. А купить то и нечего.
7. Можно установить Mac OS X. Уже нравиться. Может купить?

Ресурсы

1. Описание продукта на сайте производителя: http://ark.intel.com/ru/products/series/70407
2. Установка Hackintosh на NUC (en). http://www.tonymacx86.com/user-builds/86370-success-syngatesfan200s-intel-nuc-dc3217by-thunderbolt-edition-non-thunderbolt-edition.html
3. Форум по установе Hackintosh на NUC (en). http://www.tonymacx86.com/network/81449-intel-nuc-dc3217iye-os-x-10-8-2-success.html
4. Заметка о привходящих Intel NUC. http://techreport.com/news/24178/new-cheaper-intel-nuc-coming-next-month

суббота, 9 марта 2013 г.

MDR32F9Q2I. ARM ASM Keil example. Пример простейшего ассемблерного файла

В заметке приведён пример простого ассемблерного файла для микроконтроллера Миландр MDR32F9Q3I. Языком ассемблера является UAL ARM ASM, ассемблер которого включён
в поставку известной среды Keil uVusion.

Для сборки "прошивки" использовалась доступная в тот момент версия 4.60.
Тестирование велось на отладочной плате MDR32-Solo, собственной разработки.
Прошивка памяти микроконтроллера выполнялась из среды Keil, с помощью отладчика J-Link v.8.


Проект, с исходным кодом, с собранной прошивкой: http://yadi.sk/d/tJSom1FK39NW3

P.S. Позже, будет добавлена ещё одна заметка, с этим же файлом, но на ассемблере GNU AS.
P.P.S. Сейчас уже есть заметка: http://gimmor.blogspot.com/2013/03/mdr32f9q2i-arm-gnu-as-example.html
 

вторник, 5 марта 2013 г.

Milandr - MDR32F9Q2I - cheetsheet. Схемы, памятки

Схемы, памятки по Cortex-M3 микроконтроллеру Миландр MDR32F9Q2I


Выложу парочку схем-памяток, по микроконтроллеру MDR32F9Q2I. Делал на основе спецификации. Могут быть ошибки и разночтения. Комментарии приветствуются.

Файлы большие, пригодные к печати на A4 (600 dpi), их ссылки даны под картинками для просмотра.
Скачивать последние версии.
Последняя версия 0.8 от 10 апреля 2015 года.
Порты вводв-вывода и отладочные порты микроконтроллера Миландр K1986F9BQ2I (MDR32F9Q2I). Версия 0.8
В версии 0.8, на схеме исправлены надписи TX/RX для выводов в BOOT режиме. Добавлен 20-pin JTAG-разъём.
Полноценный файл для печати на A4 (клик по изображению).






Порты ввода-вывода и отладочные порты микроконтроллера Миландр MDR32F9Q2I. Версия 0.6
В версии 0.6, на схему добавлено подключение интерфейса SWD.
Версия 0.6 от 8 марта 2013 года. Устарела. Полноценный файл для печати на A4 5Мб.
(mdr32f0q2i-ports-порты-ввода-вывода-0.6)



Порты ввода-вывода и отладочные порты микроконтроллера Миландр MDR32F9Q2I. Версия 0.5
Версия 0.5 от 5 марта 2013 г. Устарела. Полноценный файл для печати на A4 4,7Мб.
(mdr32f9q2i-ports-порты-ввода-вывода-0.5).




Дополнительные функции портов ввода-вывода микроконтроллера Миландр MDR32F9Q2I. Версия 0.5
Версия 0.5 от 5 марта 2013 года. Полноценный файл для печати на A4 4,7Мб. (mdr32f9q2i-ports-дополнительные-функции)



UART - УАПП

Текущая версия 0.6 от 9 марта 2013 года

Памятка по быстрой настройке микроконтроллера MDR32F9Q2I, для простой передачи по протоколу UART. Версия 0.6

Версия 0.6 от 9 марта 2013 года. Полноценный файл для печати на A4 5,9Мб. (mdr32f9q2i-uart-памятка-0.6)


Памятка по быстрой настройке UART-УАПП на микроконтроллере MDR32F9Q2I. Версия 0.5
Версия 0.5 от 7 марта 2013 года. Устарела.

USB - Универсальная последовательная шина

Текущая версия памятки по USB: 0.5 от 6 декабря 2014 года.

Пока только для режима USB Device - подчинённое устройство.

Памятка по быстрой настройке USB DEVICE микроконтроллера Миландр К1986ВЕ92QI/К1986ВЕ92QC, Версия 0.5



понедельник, 4 марта 2013 г.

Миландр MDR32F9Q2I. Keil uVision + J-Link + JTAG

Несколько снимков экрана на память о настройках среды Keil uVision, для программирования микроконтроллера Миландр MDR32F9Q2I (гражданский аналог К1986ВЕ92У), с помощью отладчика J-Link Segger.
Keil uVision. Выбор устройства = микроконтроллер Миландр MDR32F9Q2I
 
 
Keil. О программе
Keil. Настройка JTAG-отладчика J-Link Segger

Keil. Настройка JTAG-отладчика J-Link Segger. Вкладка Debug


 При таких настройках, в среде Keil uVision (32 кб-ограничение), я могу писать программы для своей отладочной платы MDR32-Solo (http://gimmor.blogspot.com/2013/03/mdr32-solo-mdr32f9q2i.html) на языке ассемблера armasm. И их отлаживать во встроенном отладчике, в пошаговом режиме, с просмотром состояния регистров процессора.

Стоит заметить, что возможность загрузки прошивки в энергонезависимую память микроконтроллера, скорее относиться к поддержке такой возможности в среде Keil.

Эмулятор Segger J-Link, не предоставляет такой возможности отдельно, т.к. Миландр MDR32F9Q2I, пока не входит в список поддерживаемых устройств.
Среда Keil использует свой способ загрузки прошивки.




 

воскресенье, 3 марта 2013 г.

MDR32-Solo. Отладочная плата для процессора Миландр MDR32F9Q2I

Описание скромных возможностей платы MDR32-Solo (MDR32F9Q2I Development board)
Новый 13 год для меня начался с интересом. В 30-х числах января, прошлого года, я приобрёл несколько микроконтроллеров MDR32F9Q2I фирмы Миландр и сразу засел за изучение и разработку макета будущей платы.

Т.к. пришли голые микроконтроллеры, то вариантов 2. Использовать готовую макетную плату под LQFP-64. Питание подать с модуля для контактной макетной платы, а обвязку сделать из дискретных компонентов. В простейшем варианте понадобиться схема сброса, выбора режима загрузчика, а также пара светодиодов и кнопок. Второй вариант, разработать схему в Eagle CAD.

Выбрал оба варианта.

В процесс изготовил библиотеку Eagle для символа микроконтроллера MDR32F9Q2I, но пока не выкладываю, т.к. выявившиеся мелкие недочёты с маской, надо исправить. Разработку платы в CAD Eagle, я осилил за полторы недели. Потом, был период отлёживания, с вялотекущим процессом подгонки под нормы производителя. После чего, заказал изготовление на фабрике в Китае. Казалось что будет быстро, а оказалось, 1 месяц и неделя.

Платы получены и начался процесс их запаивания деталями. Разумеется, первое включение не принесло ничего хорошего. Светодиод питания оказался запаян наоборот, перемычки загрузочного режима установлены неверно и как результат микроконтроллер не определялся ни через UART, ни через JTAG. Пришлось запаять вторую плату и ситуация повторилась. После чего, я стал более тщательно проходить по возможным местам ошибок и в процессе этого понял свою ошибку - переставил перемычки и микроконтроллер стал определяться и дело пошло. Также нашёл одну серьезную ошибку, но её удалось легко исправить перемычкой. Мелких недочётов оказалось больше, но они все не критичны для меня, не влияют на работоспособность.


Общее описание


MDR32-Solo - MDR32F9Q2I отладочная плата. Общий вид + USB-UART TTL адаптер


MDR32-Solo. Запаянный чип микроконтроллера MDR32F9Q2I
MDR32-Solo. Вид лицевой стороны


MDR32-Solo. Вид со стороны USB разъёма

Что удалось сделать, в этом прототипе? Что не удалось?
Первое и главное - работает. Микроконтроллер MDR32F9Q2I Cortex-M3 доступен для программирования.
Второе, получен первоначальный опыт по собиранию цепочки от идеи до реализации. Получено представление о подводных камнях, на всех этапах - веду список косяков, а их вылезло много и это хорошо.

Итак, плата вышла компактной - 49.5 мм х 80 мм. Все детали, за исключением разъемов и гребешков - SMD т.е. поверхностного монтажа, в том числе кварцы и кнопки.


Сканированное изображение платы MDR32-Solo

Схему выложил на диск yandex. т.к. blogger стал урезать размеры файлов. MDR32-Solo-схема

Номиналы многих деталей я не указывал, мне было так проще, да и схема пока непричёсанная.
Да и в принципе, в спецификации говориться о номиналах.

В принципе, всё минимально нужное есть, а чего нет, то это пойдет в следующую версию, по
результатам тестирования использования.

Однако, для работы с платой, нужны инструменты. Из минимума - USB-UART TTL адаптер, чтобы программировать через порт UART. Либо, что более предпочтительно - рекомендуемый JTAG адаптер. У меня в наличии - не совсем рекомендуемый и полурабочий адаптер J-Link фирмы Segger, который в среде Keil работает и отлаживает, а вот отдельно прошить контроллер не получается. Также есть Busblaster, который я подключил к известному программатору milprog, но там только стирание памяти, а прошивка не работает. Куча полурабочего хлама.

Порты ввода-вывода

Все порты (A..F) микроконтроллера выведены на гребёнку. Гребешки подписаны альтернативными функциями. Дополнительно выделены гребешки-порты UART2, SSP1. На контактные площадки выведены UART1, CAN1.

Порт I2С содержит отключаемые (через запаиваемый разрыв) резисторы подтяжки к питанию.

USB подключен к разъёму USB B-mini.

Отладка

Т.к. плата, по моему разумению, отладочная, то на ней присутствует отладочный интерфейс.
Основным интерфейсом отладки выбран JTAG_A, который выведен на стандартный 20-pin колодку. Выбор не очень удачный. Однако присутствуют подтягивающие резисторы.
Дополнительным интерфейсом является JTAG_B, контакты которого просто выведены на площадки, без подтягивающих резисторов, а также доступны на гребёнке.

SWD-интерфейсы не выделены, т.к. интерфейс неизвестен мне.
На 3-штыревую колодку выведен UART2 для подключения к переходнику USB-UART TTL, чтобы использовать Uart-загрузчик.

Всё работает.

Питание платы
Основной источник питания - линейный регулятор, IC1, напряжением 3.3В, преобразующий питание шины USB 5В в требуемые микроконтроллером 3.3В.

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

Дополнительный вариант, на случай отсутствия деталей в корпусе SOT223, на задней стороне есть площадка для регулятора на 5В IC2 в корпусе TO252, также его можно использовать и как 3.3В. Однако, в любом случае, питание с USB, должно быть отрезано от схемы - для этого используется предохранитель F1, его надо выпаять из схемы и впаять в предусмотренное место альтернативного источника.

В правом верхнем углу присутствует штыревой выход основного питания и земля.

На обратной стороне присутствует площадка для светодиодного индикатора наличия питания. Тут у меня, спустя полтора месяца возникает вопрос, а почему не на лицевой стороне и он остаётся без ответа.

Доп. оборудование
Присутствует штыри для выбора режима загрузки. Режим загрузки задаётся комбинацией Boot 0 1 2. В спецификации это называется Mode[2:1:0].

Присутствуют тактовые кнопки RESET, WAKE, SLEEP.

Присутствует площадка под microSD адаптер, позволяет запаять адаптер и использовать microSD карты в режиме SPI.

Присутствует площадка уровня согласования. Позволяет согласовать напряжения микроконтроллера и 5В периферии. Расположена в области выводов I2C.

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

Присутствует площадка для LED индикатора, подключённого через разрыв к порту A.1 и площадка LED индикатора подключённого к порту С.3.

С помощью контактных площадок, я решил проверить идею, о том, что иногда проще подпаять проводки, чем искать разъёмы.

Заключение

В следующих постах, опишу как первоначально запрограммировать микроконтроллер MDR32F92I на ассемблерах armasm и gnu assembler.
Оказывается, 0805 - это "огромные резисторы".
Микроконтроллеру Миландр MDR32F9Q2I для любительских нужд - быть. Очень неплохо для старта. Обвязка практически не нужна, ну разве что конденсаторы по питанию, да кнопка ресет, да выбор boot. Программируется стандартными средствами.

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

Жалею только, что не вывел JTAG_B на 20 контактный разъём.

P.S. Фото сделаны вебкамерой.