Какие память используются в микрокомпьютерах
Первые компьютеры весили тонны и занимали целые комнаты, а над их обслуживанием трудилась огромная команда специалистов. Современные компьютеры по размерам сравнимы с обычным USB-брелоком. Выбираем между Raspberry Pi, Cotton Candy, CuBox, Panda Board, Trim-Slice и AllWinner A10.
Заключение
В сегодняшней статье я попробовал показать, как изученная ранее теория и тонкости организации памяти в конкретных микроконтроллерах оказывают влияние на практическую, прикладную, сторону их применения.
Не смотря на кажущееся принципиальное различие между разными микроконтроллерами гораздо больше общего, чем может показаться с первого взгляда. Почти все, о чем я сегодня говорил, находит свое отражение во всех рассматриваемых микроконтроллерах.
Почему этого не было заметно раньше? Просто сегодня я рассматривал вопрос немного на более высоком уровне, скорее на логическом, чем на аппаратном.
Nitrogen8M_Mini
Новый продукт по сравнению с Nitrogen8 будет более дешевым с энергоэффективной платформой, который подходит для 1080p медиа и HDMI применений. Модель Nitrogen8M_Mini будет иметь гарантированный срок службы 10 лет.
Технические характеристики :
- SoC – процессор NXP i.MX 8M Mini с 4x ядрами Cortex A53, 1x ядром реального времени Cortex-M4F, 3D графическим процессором Vivante GCNanoUltra и 2D графическим процессором Vivante GC320
- Оперативная память – 2 Гб LPDDR4 (Опционально 4 Гб )
- Хранилище – 8 Гб eMMC флэш-памяти, с возможностью расширения до 128 Гб, слот для UHS SD-карты
- Дисплей – 4-полосный интерфейс MIPI DSI до 1080p
- Кодирование / декодирование видео – 1080p H.264, VP8 / 1080p60 H.265, H.264, VP8, VP9
- Аудио – 3.5 мм аудио разъем для наушников, аналоговый разъем для микрофона, усилитель звука 2 Вт, разъемы для L&R колонок
- Интерфейс камеры – 1x 4-полосный интерфейс MIPI-CSI
- Сеть
- Гигабитный Ethernet (RJ-45)
- Опционально QCA9377 BD-SDMAC 802.11 ac + Bluetooth 4.1
- Расширение
- Разъемы ввода / вывода с 3x I2C, 1x SPI, GPIO
- 1x слот PCIe + слот для SIM карты; дополнительный слот PCIe через дочернюю плату
- USB – 1x USB 2.0 хост, 1x USB 2.0 OTG
- Разное – RTC + слот для батарейки
- Питание – через разъем типа баррель или опционально PoE; PF8121 PMIC
- Размеры – 114.3 x 88.9 мм
- Диапазон температур – коммерческий: от 0 до 70 ° C; промышленный: от -40 ° C до + 85 ° C
Платформа Robotics RB3 Platform (DragonBoard 845c)
Qualcomm и Thundercomm запустили «Robotics RB3 Platform», которая работает под управлением Linux и ROS на восьмиъядерном Snapdragon 845 через новую «DragonBoard 845c» 96Boards SBC.
Комплект за 449 $ включает 4K и камеры слежения.
Платформа предназначена для разработки «умных, энергоэффективных и экономически эффективных роботов, от крупных промышленных и корпоративных роботов до небольших батарей с питанием от батареи с высокими требованиями к мощности и рассеиванию тепла
Технические характеристики :
- Процессор - Qualcomm Snapdragon 845 (SDA / SDM845):
- 8x 10-нм ядер Kryo 835 (4x при 2,8 ГГц, 4x при 1,8 ГГц)
- Графический процессор Adreno 630 с VPU (Open GL ES 3.2 и Open CL 2.0)
- Hexagon 685 DSP DSP с шестигранными векторными расширениями (HVX)
- 2x 14-битных интернет-провайдера Spectra 280
- Qualcomm AI Engine (CPU, GPU, DSP) для 3-TOPS
- Безопасный процессор Qualcomm (SPU) с безопасной загрузкой, криптоускорителями, средой надежного выполнения Qualcomm (QTEE) и системой безопасности камеры
- Память / хранение:
- 4 ГБ LPDDR4x SDRAM при 1866 МГц
- 64 ГБ флэш-памяти UFS 2.1
- MicroSD слот
- Беспроводная сеть:
- 802.11ac 2 × 2 с трехдиапазонным WiFi MU-MIMO (2,4 ГГц / 5 ГГц с двухдиапазонным одновременным подключением).
- Bluetooth 5.0 (Qualcomm TrueWireless)
- GNSS (GPS, Глонасс, Бейдоу, Галилео, QZSS, SBAS)
- Дополнительный сотовый мезонин Qualcomm Robotics для 4G / LTE, включая поддержку CBRS-band-48
- Сеть - Порт Gigabit Ethernet
- Медиа I / O:
- Порт HDMI 1.4 для HDR до 4K при 60 к / с
- 2x 4-полосная MIPI-DSI
- Аудио вход / выход с MP3, aacPlus, eAAC, WMA 9 / Pro (возможно, через разъемы расширения)
- Мульти-микрофонный интерфейс (комплект RB3, возможно, дополнительно)
- Как минимум 2x MIPI-CSI для 16-мегапиксельной HFR при 60 к / с, 2x 16-мегапиксельной ZSL при 30 к / с или 32-мегапиксельной ZSL при 30 к / с
- Камеры RB3: основная и трекинговая (базовый комплект);
ToF и стерео SLM (полный комплект) - Другой ввод / вывод:
- USB 3.0 Type-C OTG порт
- 2 хост-порта USB 3.0
- Micro-USB 2.0 отладочный порт
- Расширение ввода / вывода (совместимо с 96Boards):
- 2x 60-контактный высокоскоростной
- 2x 40-контактный тихоходный
- 20-контактный низкоскоростной
- Другие особенности - акселерометр / гироскоп IMU (RB3);
датчик приближения (RB3);
7x светодиодов;
кнопки включения, увеличения / уменьшения громкости, принудительной загрузки через USB, DIP-переключатель - Питание - 12В @ 2,5А постоянного тока;
адаптер в базовом комплекте RB3 - Размеры - 85 х 54 мм (96 плат)
- Операционная система - Linux с ROS
AllWinner A10 и ZERO Devices Z802
Цена: 74$ Китайские онлайн-магазины
Железо
Компьютер AllWinner A10 быстрее, чем Raspberry Pi: он основан на одноядерном процессоре ARM Cortex-A8 с частотой 1,5 ГГц. На борту — 512 Мб оперативки, графический чип Mali-400, HDMI-выход, порты USB и microUSB, слот для чтения SD-карт (поддерживаются SD карты до 32 Гб), модуль Wi-Fi 802.11 b/g.
Производительности AllWinner вполне достаточно, чтобы воспроизводить видео с разрешением Full HD. А большего от него и не требуется.
Китайский мини-компьютер работает под управлением ОС Android Ice Cream Sandwich. Можно установить и любую другую ARM-совместимую систему, например Linux.
Raspberry Pi
Альфа-версия
Позволю себе сделать небольшой экскурс в историю разработки этого чуда техники. Впервые компьютер Raspberry Pi, точнее, его концепт размером с USB-брелок был представлен Дэвидом Брэбеном в мае 2011 года. Уже летом того же года была отправлена в производство альфа-версия платы, а 12 августа была произведена первая партия устройств.
Стало известно, что альфа-версия платы, помимо тестовых функций, содержит более дорогие детали, которых не будет в «релизе». Это делается для того, чтобы сделать комп дешевле, но есть ли в этом смысл? Себестоимость «релиза» — на 20% меньше, а сама плата состоит не из шести слоев, а из четырех.
Ранее компьютер распространятся только как плата, сейчас — в пластиковом корпусе: уже не нужно ломать голову над тем, куда воткнуть плату.
Железо и размеры
Существует две комплектации Raspberry Pi — модель «А» и модель «B». Процессор у них одинаковый — Broadcom BCM2835 (архитектура ARM11) с частотой всего 700 МГц и модулями оперативки по 256 Мб, которые размещены непосредственно на самом процессоре (технология «package-on-package»). Процессор BCM2835 также содержит в себе графическое ядро с поддержкой OpenGL ES 2.0, аппаратного ускорения и FullHD-видео. Особенностью этого компьютера является полное отсутствие часов реального времени.
Разница между моделями заключается в количестве USB-портов (у модели «А» один порт, у модели «B» — два) и в наличии Ethernet-порта у модели «B».
Вывод видеосигнала возможен или через композитный разъем RCA или через HDMI. Файловая система размещается на карте памяти SD, MMC или SDIO. Но обычно используются SD-карты.
После добавления на борт всего необходимого размеры компьютера увеличились до размеров кредитной карты, но и это, согласись, немного. Конечно, не стоит ожидать от него особой расторопности, но для простых задач его производительности будет вполне достаточно.
А как же с программным обеспечением? А здесь все стандартно: мини-комп работает под управлением Debian или Fedora. Вполне привычные для Linux-пользователей дистрибутивы. Так, Raspberry Pi, выпущенный 19 февраля этого года, работал под управлением Debian 6.0, оболочка LXDE, браузер Midori. Впрочем, этот мини-компьютер может работать под управлением любой ОС, которая поддерживает архитектуру процессоров ARM.
Простое обновление прошивки Raspberry Pi
Первые экземпляры Raspberry Pi давно поступили в продажу. Понятно, что первым делом они попали в руки разработчиков, а потом уже рядовых пользователей. Один из разработчиков, Hexxeh, создал инструмент для простого обновления прошивки. Правда, он сразу предупреждает, что использовать данный инструмент можно только на свой страх и риск. Итак, для установки утилиты rpi-update нужно выполнить команды:
Для обновления прошивки нужно запустить rpi-update с полномочиями root:
Открой скрипт rpi-update и найди в нем строчку:
Управление скриптом осуществляется с помощью переменных окружения. Переменная SKIPKERNEL отвечает за прошивку без ядра. Если SKIPKERNEL=1, то операционная система твоего Raspberry Pi будет обновлена полностью, кроме файлов ядра и модулей ядра.
Переменные ROOTPATH/BOOTPATH используются для «оффлайн»-обновления, когда файлы прошивки уже загружены на SD-карту. Примеры использования переменных:
CuBox
География мини-компьютеров разнообразна. Raspberry Pi разработан в Великобритании, FXI — компания норвежская. Теперь мы виртуально перемещаемся в Израиль (так и до Китая доберемся — я обещаю), чтобы познакомиться с мини-ПК CuBox.
CuBox — это еще один одноплатный компьютер небольшого размера (2 × 2 × 2 дюйма) и массой всего 91 грамм.
Железо
Официально можно приобрести данный компьютер или с Ubuntu Desktop 10.04 (но можно установить любой дистрибутив Linux с ядром 2.6.x) и Android 2.2.x (поддерживаются и более поздние версии). Обе системы установлены на SD-карту, и при загрузке можно выбрать одну из них. Размер SD-карты, с которой поставляется компьютер, — всего 2 Гб, но никто не мешает установить карту побольше, предварительно проинсталлировав туда Ubuntu с Android (их можно взять с оригинальной флешки).
CuBox: проблемы с DBUS на предустановленной Ubuntu
На CuBox кроме Android установлена Ubuntu 10.04 LTS. Все бы хорошо, но Ubuntu без глюков не бывает. CuBox — не исключение. Главный глюк Ubuntu, установленной на CuBox, — это некорректно работающий DBUS. Проявляется это в отсутствии звука по HDMI, неработающем автоматическом монтировании носителей, неработающем NetworkManager и ошибке «asoc: CS42L51 mv88fx-i2s1 No matching rates». На твоем CuBox может быть один какой-то симптом, а могут быть и все сразу. Проблема решается переустановкой DBUS:
На самом деле нетрадиционное использование мини-компьютеров — от применения в автомобиле до автоматического управления котом — богатая тема. Думаю, об этом мы еще напишем.
PandaBoard
Цена: 182$ goo.gl/8fWYF
PandaBoard — еще один одноплатный компьютер, с которым мы сегодня познакомимся. Производитель — Texas Instruments (США). Компьютеры, о которых я уже рассказал, обычно поставляются в пластиковом корпусе, то есть сразу «пригодны для употребления». PandaBoard поставляется в виде платы, но при желании можно отдельно заказать и пластиковый корпус. Вообще, PandaBoard позиционируется не как мини-ПК, а как плата для разработчиков мобильных устройств — такой себе конструктор типа «собери сам».
Железо
Плата PandaBoard поставляется с процессором TI OMAP 4460 (для PandaBoard ES, на PandaBoard установлен процессор 4430) с двумя ядрами ARM Cortex-A9. Процессор работает на частоте 1,2 ГГц, объем оперативки — 1 Гб, а на борту имеется полноразмерный слот для SD-карт.
Обработкой видео занимается встроенный процессор PowerVR SGX540. Чип поддерживает OpenGL ES 2.0, OpenGL ES 1.1, OpenVG 1.1 и EGL 1.3.
Что еще интересного есть на плате? На рисунке продемонстрирован весь состав платы. Так, на ее борту есть модуль WiLinkTM 6.0, который отвечает за поддержку Wi-Fi (802.11 b/g/n) и Bluetooth, контроллер Ethernet 10/100, контроллер RTC (часы реального времени), интерфейсы HDMI и DVI-D, порты USB 2.0, а также аудиоразъем. При этом масса платы составляет всего 82 грамма, а размеры — 114,3 × 101,6 мм.
Изюминкой платы является последовательный порт RS-232 (дома ему уже не место, а вот на производстве пригодится, так что на базе этой платы можно строить не только мини-ПК для дома, но и индустриальные ПК) и слот для плат расширений. Чтобы увеличить функциональность платы, можно приобрести набор BeadaFrame 7" LCD (BeadaFrame 7" LCD display kit), который включает в себя сенсорный TFT-экран размером 7 дюймов и разрешением 800 × 480, пластиковый корпус, средство для хранения реального времени (RTC time keeper) и устройство контроля подсветки экрана.
Плата поставляется без какого-либо программного обеспечения, но «оживить» ее может любой дистрибутив Linux или же Android.
Как установить Ubuntu на PandaBoard
Я уже говорил, что на PandaBoard можно установить любой дистрибутив Linux или Android. Сейчас разберемся, как это сделать на примере Ubuntu. Сразу оговорюсь. PandaBoard — это платформа OMAP4, поэтому нам нужен не любой дистрибутив Linux, а «любой с поддержкой OMAP4». Например, Ubuntu. Нам понадобится компьютер под управлением Linux (дистрибутив значения не имеет), доступ к инету и SD-карта. Первым делом получаем образ Ubuntu с поддержкой OMAP4:
Теперь этот образ нужно поместить на SD-карту. Вставь SD-карту, сейчас нужно выяснить ее имя устройства:
В ответ получишь что-то вроде:
Отсюда ясно, что SD-карта — это /dev/sdb2. Размонтируем ее:
Запишем образ на SD-карту:
Далее вставляем карточку в PandaBoard и подключаем ее к COM-порту своего компа. Если такого порта нет, тогда понадобится кабель USB2COM (USB to Serial). Включаем PandaBoard и запускаем терминал (на твоем компе):
По умолчанию minicom использует устройство /dev/ttyUSB0, обычно так называется первое устройство USB2COM. Узнать, к какому именно устройству подключена PandaBoard, можно командой $ dmesg | grep tty.
Осталось только следовать инструкциям, появляющимся на экране терминала, — через некоторое время Ubuntu будет установлена.
После установки Ubuntu нужно установить дополнительные плагины. Опять подключись к консоли PandaBoard и отредактируй файл /etc/apt/sources.list
Нужно раскомментировать строки, отвечающие за подключение репозиториев Universe и Multiverse. После этого нужно ввести команды:
После этого перезагружаем PandaBoard:
Pine H64 Model B
Новейшая плата Pine64 является частью продукта с открытым исходным кодом. Pine H64 Model B хорошая замена Raspberry Pi или Odroid C . Несмотря на небольшие размеры, это довольно мощное устройство, для своего класса. Производительность графической подсистемы чуть выше, чем у оригинального X-Box. Модуль имеет три дополнительных порта, которые позволяют добавить такую периферию, как модуль камеры, тачскрин, LCD.
Технические характеристики :
SoC: Четырехъядерный процессор Allwinner H6 Arm Cortex-A53 с тактовой частотой 1,8 ГГц и двухъядерным графическим процессором Arm Mali T-722MP2 с поддержкой OpenGL ES 3.1 / 3.0 / 2.0 / 1.1, OpenCL 1.2 / 1.1, ATSC (адаптивное масштабируемое сжатие текстур)
Системная память: 3 ГБ ОЗУ LPDDR3
Память: 128 Мбит SPI флэш-память, разъем eMMC, слот microSD до 256 ГБ (поддержка SDHC и SDXC)
Видеовыход: выход HDMI 2.0 до 4KP60 с HDCP2.2
Аудио: разъем 3,5 мм для наушников / микрофона; Цифровой звук HDMI; Разъем SPDIF
Возможность подключения: 10/100/1000 Мбит / с Gigabit Ethernet; 802.11b / g / n WiFi 4 @ 2.4G + Bluetooth 4.0 LE через модуль RTL8723BS; Внешняя антенна
USB : 1 хост-порт USB 3.0, 2 хост-порта USB 2.0
Расширение: 40-контактный разъем PI-2 GPIO
Разное: разъем батареи RTC для встроенных часов реального времени, кнопок питания и сброса
Питание : 5 В через силовой цилиндр
Размеры: 86x54 мм, как у Rock64 или Raspberry Pi
Avenger96
Avenger96 выпустила новый мини-ПК 96Boards CE, разработанный для приложений Интернета вещей с низким энергопотреблением. Тем не менее, этот одноплатник имеет более энергоэффективный, но более медленный процессор (ST недавно анонсировал STM32MP153). Avenger96 имеет два ядра Cortex-A7 с частотой 650 МГц, Cortex-M4 и трехмерный графический процессор Vivante.
Плата оснащена модулем Avenger96 с SoC STM32MP157 и предлагает 1 ГБ памяти DDR3L, флэш-память SPI 2 МБ и специальную микросхему для управления питанием. Avenger96 SBC оснащен GbE, HDMI, micro-USB OTG и двумя хост-портами USB 2.0. Также доступны слот microSD и 40- и 60-контактные разъемы GPIO.
Технические характеристики :
SoC-STMicro STM32MP157 d ual ARM Cortex-A7 процессор @ 650 МГц, Arm Cortex-M4 @ 209 МГц, 3D GPU Vivante @ 533 МГц с поддержкой OpenGL ES 2.0
ОЗУ -1 ГБ DRAM DDR3L @ 533 МГц
Встроеная память 8GB eMMC и микро-гнездо SD до 2MB
Выходной видеосигнал-HDMI 1.4 (аналоговый приемопередатчик ADV7513)
Сеть-Gigabit Ethernet, 802.11 b/g/n / ac WiFi 5
USB-2x USB 2.0 порта, 1X micro USB OTG порт
Низкоскоростной протокол связи: I2C, SPI, I2S, UART, GPIO;
Высокоскоростной протокол связи: MIPI-CSI2, MIPI-DSI, USB, I2C и SD / MMC
В предыдущих статьях я описывал архитектуру памяти вычислительного ядра микроконтроллеров. Вот эти статьи:
- Микроконтроллеры для начинающих. Часть 5. Архитектура. Адресные пространства и память
- Микроконтроллеры для начинающих. Часть 6. Линейная и страничная (банковая) организация памяти
- Микроконтроллеры для начинающих. Часть 7. Внеплановая. Адресные пространства и шины
- Микроконтроллеры для начинающих. Часть 8. Режимы адресации операндов
- Микроконтроллеры для начинающих. Часть 9. Процессор и память в STM8
- Микроконтроллеры для начинающих Часть 11. Процессор и память в PIC
- Микроконтроллеры для начинающих. Часть 12. Память и процессор в AVR
Я не стал упоминать здесь десятую часть (внеплановую). Теперь мы знаем достаточно много подробностей о том, как организована память в микроконтроллерах. Однако, остались не затронутыми практические вопросы использования этих знаний. И нет ответа на вопрос "а какой же микроконтроллер лучше?".
Давайте немного поговорим о некоторых плюсах и минусах разных моделей микроконтроллеров, с точки зрения организации памяти. О том, как это все отражается на подходах к решению практических задач, в том числе, с использованием языков высокого уровня. О том, как жить без аппаратного стека данных в PIC. И немного о MCS-51.
Coral Dev Board
Недавно Google анонсировала свою первую плату с Linux, которая оснащена микросхемой NXP i.MX8M и AI Edge TPU от Google. Модуль разработан для быстрого создания прототипов оборудования для машинного обучения. Первое, что делает его уникальным, это Краевой модуль ТПУ. Устройства поставляются со схемами, ресурсами сообщества и другими ресурсами с открытой спецификацией.
Технические характеристики :
- ЦПУ: NXP i.MX 8M SOC (четырехъядерный Cortex-A53, Cortex-M4F)
- GPU: Интегрированная графика GC7000 Lite
- сопроцессор: Google Edge TPU
- баран: 1 ГБ LPDDR4
- Флэш-память: 8GB eMMC
- связь: Wi-Fi 2 × 2 MIMO (802.11b / g / n / ac 2,4 / 5 ГГц) Bluetooth 4.1
- Размеры: 48 х 40 х 5 мм
Плата имеет собственный набор спецификаций:
- Флэш-память: MicroSD
- USB: Тип-C OTG Тип-C Питание Тип-A 3.0 Хост последовательная консоль Micro-B
- ЛВС: Гигабитный порт Ethernet
- аудио: 3,5-мм аудиоразъем (совместимый с CTIA) Цифровой микрофон PDM (x2) 2,54-мм 4-контактный разъем для стереодинамиков
- видео: HDMI 2.0a (полноразмерный) 39-контактный разъем FFC для дисплея MIPI-DSI (4-полосный) 24-контактный разъем FFC для камеры MIPI-CSI2 (4-полосный)
- GPIO: 3.3 В силовая шина 40 – 255 Ом, программируемое сопротивление ~ макс. Ток 82 мА
- Мощность: 5 В постоянного тока (USB Type-C)
- Размеры: 88 х 60 х 24 мм
Разрядность адреса
Я не буду делать разницы между адресами программ и данных. Речь пойдет об общих моментах.
На первый взгляд, самым лучшим выглядит подход STM8, линейное единое адресное пространство. Однако, давайте взглянем на это под несколько иным углом зрения. Но для этого нам потребуется вспомнить, что адреса в STM8 бывают короткие, длинные и расширенные (полные). Я об этом писал в девятой части.
Это дает большую гибкость и позволяет экономить память программ задавая, где это возможно, наиболее короткий адрес. И действительно, существует, например, три разных команды вызова подпрограмм
- CALL - самый привычный и часто используемый формат вызова. Адрес задается в виде 2 байт, а значит, переход за пределы 64 Кбайт невозможен. Во многих случаях, особенно для новичков, это ограничение не представляет проблемы. Но ведь может использоваться и, например, микроконтроллер STM8S207C8, у которого 128 Кбайт памяти программ.
- CALLF - самый универсальный формат вызова. Здесь может указываться и длинный (16 бит) и полный (24 бита) адрес подпрограммы. Причем длина кода команды будет одинакова в обоих случаях, так как при указании 16 битного адреса собственно команде предшествует префикс.
- CALLR - для самых экономных. Код команды занимает меньше всего места, всего 2 байта. При этом в команде указывается смещение адреса перехода относительно текущего адреса команды. Но результирующий адрес перехода 16 битный. А значит, данная команда не позволяет выйти за пределы 64 Кбайт.
Кстати, говоря о пределе в 64 Кбайт я имею ввиду не абсолютный полный адрес, а лишь 16 младших разрядов адреса. Просто команды CALL и CALLR не затрагивают регистр PCE (и не сохраняют его в стеке в качестве составной части адреса возврата), но в формировании полного адреса PCE продолжает участвовать!
Не правда ли, очень похоже на то, что PCE задает номер страницы памяти программ, а пара PCH:PCL адрес внутри страницы? Не напоминает страничную организацию памяти программ в PIC?
Кстати, и в AVR, который многие хвалят за логичность тоже не так все просто при работе с памятью программ. Только в AVR команды называются немого по иному.
- CALL - Дальний переход . Адрес перехода занимает 22 бита. Однако, тут все еще и от размера регистра PC (16 или 22 бита) все зависит. Доступна не для всех микроконтроллеров.
- EICALL - Адрес перехода формируется из содержимого регистра Z и специального регистра EIND, который и хранит старшие 8 бит адреса. Доступна не для всех микроконтроллеров.
- ICALL - Аналогична EICAL, за исключением того, что старшие разряды адреса всегда равны 0, так как EIND участия в ее выполнении не принимает. Доступна не для всех микроконтроллеров.
- RCALL - относительный переход. Но смещение относительно текущего адреса команды состоит из 12 бит.
Не правда ли, и в данном случае все очень похоже на PIC с его страничной организацией памяти программ, только номер страницы тут хранится в регистре EIND.
Что же получается, страничная организация используется во всех микроконтроллерах? Да, это так, в самом общем случае. Просто размер страницы разный. И в случае STM8 или AVR вы просто столкнетесь с этим фактом в гораздо меньшем количестве случаев.
Какое же семейство микроконтроллеров лучше?
Я сразу дам ответ на этот вопрос, а потом постараюсь его объяснить.
Нет лучшего или худшего семейства микроконтроллеров. Как нет и лучшей или худшей архитектуры. Каждый микроконтроллер находит свое применение. Каждая архитектура имеет своих почитателей и своих критиков.
Одни архитектуры давно канули в лету, другие продолжают здравствовать. Появляются новые разработки. И касается это не только микроконтроллеров, но и архитектуры ЭВМ в целом. И дело тут не только в удачности разработки. Так канула в лету прекрасная архитектура DEC PDP-11/VAX-11. При этом прекрасно себя чувствует архитектура MCS-51, одна из первых разработок для микроконтроллеров, которая стала, де-факто, промышленным стандартом.
Давайте попробуем разобраться в особенностях архитектуры памяти, которые не всегда видны с первого взгляда, но имеют важное значение с точки зрения практического применения микроконтроллеров.
Программы состоящие из нескольких исходных файлов
Новички чаще всего пишут программы в виде одно исходного файла. Причем язык программирования роли не играет. Но когда проект разрастается становится трудно работать с одним большим текстом программы и его разбивают на несколько частей - отдельных файлов. Причем каждый отдельный файл может содержать как данные, так и процедуры. Причем процедур в файле может быть и больше одной.
И вот тут у любого компилятора возникают затруднения. Давайте посмотрим на ситуацию внимательнее.
В данном случае я показ пример на С, но ничего не изменилось бы и при использовании ассемблера. Именно поэтому я указал расширение файла src (исходный), а не с. Каждый из этих исходных файлов будет компилироваться отдельно от остальных. А результат компиляции, объектные файлы, потом будут собраны воедино компоновщиком. Все просто и привычно, чего тут такого?
Но задумайтесь, откуда компилятору при работе с файлом file1.src знать адрес переменной var или функции func? Они будут размещены в памяти компоновщиком уже после компиляции. Поэтому компилятор будет вынужден сгенерировать команду с пустым полем адреса операнда и дополнительно сформировать специальную запись, которая сообщит компоновщику, что несколько байт в коде он должен будет изменить, поместив туда нужный адрес.
Это очень упрощенное описание процесса, но нам сейчас его достаточно. А теперь вспомним, что я говорил о разрядности адреса. Какую команду для вызова func должен сформировать компилятор? Будет ли достаточно CALL или потребуется использовать CALLF (RCALL или CALL/ICALL/EICALL)?
Аналогично и с обнулением переменной var, так как ее адрес неизвестен при трансляции, то компилятор будет затрудняться, какой формат команды CLR использовать (в случае STM8).
Для решения этой проблемы давно придумали понятие "модель памяти". Это уже немного подзабылось в мире программирования для ПК, но многие вспомнят про модели TINY, SMALL, COMPACT, LARGE. Указание модели памяти позволяло компилятору выбрать какие команды и в каком формате генерировать.
В данном случае ситуация аналогичная. Причем даже для PIC, с их относительно малыми страницами памяти программ можно задать формат адреса памяти (это влияет на необходимость переключения страниц при вызове или банков для доступа к данным).
Модель памяти можно не указывать для микроконтроллеров с объемом памяти до 64 Кбайт, просто все адреса будут 16 битными. В большинстве случаев это разумный размер. Если не указать формат адреса указателя для PIC, то он обычно считается 8 битным для данных и полным для кода.
Почему компоновщик не может разобраться автоматически? А он просто не имеет такого права. Он может подставить адрес, или смещение адреса, в нужное место кода, но не должен никоим образом изменять собственно коды команд, сформированные компилятором или написанные программистом.
BeagleBone AI
Запущенная в 2013 году, BeagleBone Black, по-прежнему, остается одной из самых популярных платформ. линейки BeagleBone. Компания анонсировала новый дивайс BeagleBone-AI. Микрокомпьютор работает на платформе Texas Instruments AM5729 SoC, оснащенной ядрами цифрового сигнального процессора(DSP) TI C66x и ядрами встроенного видения (EVE), поддерживающие, посредством TIDL (Texas Instruments Deep Learning), машинное обучение OpenCL API.
Технические характеристики :
SoC — двухъядерный процессор Cortex-A15 TI AM5729 с 4 PRU, два ядра C66x DSP и 4 EVE
Системная память — 1 ГБ ОЗУ
Хранилище — встроенная флэш-память eMMC 16 ГБ с высокоскоростным интерфейсом
Сеть — Gigabit Ethernet и высокоскоростной WiFi
SB — 1x USB тип C для питания и двухролевого суперскоростного контроллера, 1x хост-порт USB тип А
Расширение — совместимые разъемы BeagleBone Black (BBB)
Размеры — 86,4 х 53,4 мм (совместимо с BBB)
За возможности беспроводной связи отвечают адаптеры Bluetooth и Wi-Fi (поддерживается работа в диапазонах 2,4 ГГц и 5 ГГц).
Страничная (банковая) память не всегда плохо, а иногда бывает и полезна
И опять я не только про PIC! Принято считать, что страничное деление памяти всегда плохо. Однако, это не так. Дело в том, что переключая страницы или банки памяти можно существенно экономить время. Как? А вот смотрите
Пусть у нас имеется несколько потоков, или модулей. Например, это может быть связано с несколькими датчиками или управляемыми системами. С каждым потоком связан один из блоков данных, причем их структура одинакова, так как управляемые системы одинаковы. Это довольно распространенный случай.
Как в этом случае можно организовать работу с данными, что бы модуль-обработчик не догадывался, что систем несколько? Самое очевидное, и наиболее часто используемое, решение это передавать обработчику базовый адрес блока данных. Но ведь базовым адресом блока данных может быть и собственно номер банка (страницы) памяти. Если конечно количество доступных банков не меньше числа блоков данных.
Вы можете сказать, что это не польза, а всего лишь уменьшение вреда и способ уменьшить количество минусов преобразовав их в плюсы умелым использованием. И будете правы. Но давайте рассмотрим еще один вариант.
Микроконтроллеры предназначены для использования в составе систем управления, а это иногда требует очень быстрой реакции на происходящее. Обычно, для этого используются прерывания или иные механизмы. При этом всегда требуется сохранять используемые регистры и другую чувствительную информацию о состоянии прерываемого процесса. А это может потребовать относительно много времени.
В микроконтроллерах MCS-51 для решения этой проблемы имеется четыре блока регистров . В эти блоки отображаются регистры R0-R7. переключение этих регистровых банков осуществляется через биты RS0 и RS1 в регистре PSW. Если основная программа использует регистры R0-R7 в нулевом банке, а обработчик прерываний в первом, то мы можем сэкономить довольно много времени не сохраняя регистры в стеке или временной области памяти, а просто переключив регистровый банк.
FXI Cotton Candy
Железо и размеры
Внешне FXI Cotton Candy (разработчик — компания FXI Technologies) напоминает крупную флешку с выходом HDMI.
На борту Cotton Candy — двухъядерный процессор Samsung Exynos 4210 с частотой 1,2 ГГц (архитектура ARM), 1 Гб оперативной памяти и графический чип Mali-400 MP. В качестве запоминающего устройства можно использовать microSD-карты (поддерживаются объемы до 64 Гб).
Если на борту у модели «B» — только Ethernet-порт, то Cotton Candy поддерживает Wi-Fi 802.11b/g/n и Bluetooth 2.1.
Cotton Candy работает под управлением Android 4.0 Ice Cream Sandwich, но теоретически можно установить любую систему, поддерживающую архитектуру ARM, например тот же Linux.
Адреса разные, а ячейка памяти одна
Тут опять можно привести в пример AVR с его наследием в виде адресного пространства вода-вывода. В 12 части я приводил пример с обращением к регистру SREG по адресу 3F в пространстве ввода-вывода и по адресу 5F в пространстве данных.
В этом смысле пространство ввода-вывода в AVR выглядит излишним и нелогичным. Его семантическое назначение понятно, но и новичков оно путает.
Менее очевидным примером может служить способ организации линейного пространства данных в Enhanced Mid-range. Напомню, что при этом банковая организация памяти данных сохраняется, но память доступна и в виде непрерывной линейной области причем с исключением SFR.
Казалось бы, что тут плохого? На самом деле плохое тут есть. Можно непреднамеренно исказить содержимое ячейки памяти получив к ней доступ по другому адресу. И найти подобные ошибки бывает очень трудно. А возникнуть они могут, например, когда вы беретесь за доработку кем то ранее написанной программы. Или когда переносите программу на другой микроконтроллер того же семейства но обладающий большими возможностями. Да и простая ошибка не исключается.
Raspberry Pi — идеальный одноплатный компьютер для начинающих
Raspberry Pi, или, как его любовно называют фанаты, «малинка», по праву считается эталоном одноплатных компьютеров и практически идеальным выбором для тех, кто лишь начал приобщаться к удивительному миру SBC. Его появлением мы с вами обязаны программисту Дэвиду Брэбену, автору легендарного космического симулятора Elite. В мае 2011 года он представил первый концепт микрокомпьютера за $35, изначально предназначавшегося для обучения программированию в школах и вузах. Однако девайс, полноценный релиз которого состоялся спустя всего год, оказался настолько удачным, что снискал невероятную популярность в кругу программистов и конструкторов-энтузиастов по всему миру, выйдя далеко за рамки учебных проектов.
За время существования Raspberry Pi было выпущено 12 модификаций одноплатных компьютеров. И это первый довод за покупку «малинки»: устройства предыдущих поколений до сих пор можно найти в продаже по весьма привлекательным ценам, а их возможностей оказывается более чем достаточно для первых экспериментов с SBC, а также для проектов, нетребовательных к вычислительным мощностям. Наиболее же актуальной на сегодняшний день моделью является Raspberry Pi 4 Model B.
Основой этого малыша является SoC Broadcom BCM2711, включающий в себя 4 вычислительных ядра Cortex-A72 (ARM V8), работающих на частоте 1,5 ГГц, и графический процессор GPU VideoCore VI, частота которого составляет 500 МГц. Девайс доступен в трех модификациях, отличающихся объемом оперативной памяти (2, 4 и 8 ГБ) по рекомендуемой цене 35, 55 и 75 долларов США соответственно. В России цены на 4-гигабайтную модель стартуют в среднем от 6,5 тысячи рублей.
На плате распаяны 40 пинов GPIO, 4 порта USB (2 × USB 2.0 и 2 × USB 3.0), 4-контактный мини-джек 3,5 мм, пара комбинированных цифровых аудио/видеовыходов micro HDMI 2.0, последовательные интерфейсы для подключения камеры (MIPI CSI) и LCD-экрана (MIPI DSI), а также один слот для карт памяти microSD (собственного накопителя данных Raspberry Pi 4B не имеет). Для соединения с локальной сетью и интернетом предусмотрен гигабитный Ethernet-порт. Также микрокомпьютер поддерживает беспроводное подключение по стандартам Wi-Fi 802.11 b/g/n/ac и оснащен Bluetooth 5.0 с BLE. Такое обилие интерфейсов существенно упрощает работу с Raspberry Pi, делая устройство куда более универсальным по сравнению с множеством собратьев, что весьма важно, особенно для новичков. Это второй аргумент за покупку «малинки».
Что касается операционных систем, с которыми совместим Raspberry Pi, то их количество действительно впечатляет. Помимо фирменной Raspberry Pi OS, вы можете установить на микрокомпьютер готовый медиацентр OSMC на базе Kodi, RISC OS от Acorn Computers для процессоров на ARM-архитектуре, Windows 10 IoT (специальная версия Windows для проектов в сфере Интернета вещей), различные сборки Ubuntu (Lubuntu, Xubuntu, Kubuntu, Ubuntu Server), OpenWrt (ОС для создания продвинутых маршрутизаторов), систему управления NAS на основе Debian OpenMediaVault, о которой мы уже писали ранее , сборник эмуляторов игровых консолей прошлых поколений RetroPie, неофициальные сборки Android и множество других. Такое многообразие существенно упрощает разработку: вы без особого труда найдете подходящее решение под любую задачу.
За 9-летнюю историю вокруг Raspberry Pi сформировалось мощное сообщество, и это еще один весомый аргумент в пользу покупки данного SBC. На YouTube и тематических порталах вы найдете множество готовых проектов с перечнем всех необходимых комплектующих, ПО и описанием его настройки, каждый из которых послужит для вас отличным учебным пособием.
Еще одно весьма важное преимущество данного микрокомпьютера заключается в том, что производство Raspberry Pi ведется как на фабрике в Уэльсе (Великобритания), так и в Шэньчжэне (Китай). Таким образом, вы можете заказать оригинальный SBC не только на официальном сайте компании или в локальных компьютерных магазинах, но и на «народном» маркетплейсе AliExpress, при этом существенно дешевле. Для сравнения: если в России за флагманскую модификацию вам придется отдать около 9 тысяч рублей, то в Китае — всего 7 тысяч, а на сэкономленные деньги вы сможете приобрести вполне добротный набор «сделай сам», в который уже будут входить корпус, радиаторы для микрочипов, кулер, адаптер питания и сенсорный экран.
Выбираем карту памяти для одноплатного компьютера
Поскольку Raspberry Pi не имеет встроенного хранилища данных, при покупке такого малыша одним из ключевых аспектов становится правильный выбор карты памяти. И задача эта является отнюдь не такой тривиальной, как может показаться на первый взгляд, ведь microSD-карта будет играть роль системного накопителя, а значит, к ней будут предъявляться особые требования.
Первое, с чем необходимо определиться, — как именно вы собираетесь использовать данный девайс. Хотя микрокомпьютеры могут применяться во множестве самых разных сфер, глобально все возможные сценарии можно разделить на две обширные категории:
Одноплатный компьютер используется в качестве NAS, мультимедийного сервера, торрент-сервера для скачивания и раздачи в режиме 24/7, персонального облака или выполняет функции DVR для домашней системы видеонаблюдения. В этом случае карта памяти будет испытывать огромные нагрузки, ведь данные на ней будут постоянно перезаписываться, а процессы чтения/записи зачастую идти параллельно, причем в несколько потоков. В такой ситуации лучшим выбором станет производительная microSD-карточка класса U1 или выше , способная работать в многопоточном режиме и обладающая расширенным ресурсом перезаписи.
Если вы хотите использовать одноплатный компьютер как основу для создания ретроконсоли, веб-сервера для тестирования сайтов и приложений или же в качестве мозга системы «умный дом», то вам, напротив, необходимо приобрести карту памяти, отличающуюся высокими устойчивыми показателями IOPS (количество операций ввода-вывода в секунду). В перечисленных сценариях нагрузка на карту сравнительно невысока, а данные перезаписываются достаточно редко: вы один раз загружаете необходимое программное обеспечение, а в дальнейшем происходит лишь считывание исполняемых файлов и необходимых библиотек. Изменениям же подвержены в основном файлы настроек и логи, которые по сравнению с мультимедийным контентом практически ничего не весят.
В первом случае наиболее оптимальным выбором станут карты памяти серии WD Purple QD101. Изначально созданные для цифровых камер видеонаблюдения, автомобильных и персональных видеорегистраторов, они превосходно подойдут для сценариев, предполагающих интенсивную перезапись информации.
Данная линейка microSD-карт включает в себя 6 моделей емкостью от 32 ГБ до 1 ТБ, так что вы сможете без труда подобрать наиболее оптимальный вариант в зависимости от поставленных задач. Каждая карта памяти соответствует скоростному классу U1 (V10), поддерживает работу в многопоточном режиме, а ее максимальная производительность достигает 80 МБ/с в операциях чтения и 50 МБ/с при записи данных.
Карты памяти WD Purple созданы на базе 96-слойной флеш-памяти 3D NAND BiCS четвертого поколения и могут похвастаться гарантированным рабочим ресурсом в 1000 циклов программирования/стирания. На практике это означает, что даже 32-гигабайтные модели выдерживают не менее 16 терабайт перезаписи, тогда как флагманская карточка на 1 ТБ обладает коэффициентом TBW уже в 512 терабайт. Столь высокая выносливость делает microSD-карты пурпурной серии практически идеальным решением для использования в составе систем видеонаблюдения, DLNA-серверов и в других аналогичных ситуациях.
Когда же на первый план выходит уровень производительности при работе с приложениями, следует отдавать предпочтение картам памяти класса A2. Изначально такие microSD-карточки создавались для смартфонов и планшетов на базе операционной системы Android, поддерживающих расширение системной памяти за счет съемных накопителей, поэтому при их разработке особое внимание уделялось такому показателю, как минимальное устойчивое количество операций ввода-вывода в секунду. Карты памяти класса A2 обладают гарантированной производительностью 4000 IOPS в операциях случайного чтения и 2000 IOPS — при записи файлов. Это означает, что даже в самых неблагоприятных условиях при максимальной нагрузке количество операций ввода-вывода в секунду не упадет ниже указанных значений. И именно такими показателями характеризуются SanDisk Extreme PRO.
Модельный ряд включает в себя 7 карт памяти на 32, 64, 128, 256, 400 и 512 ГБ, а также терабайтный флагман. Карточки серии отличаются рекордным быстродействием: вплоть до 170 МБ/с в операциях последовательного чтения и до 90 МБ/с при записи. Наряду с высокими показателями устойчивого IOPS, это существенно расширяет сферу их применения: SanDisk Extreme Pro могут с равным успехом использоваться в качестве системных накопителей в микрокомпьютерах, для расширения встроенной памяти мобильных девайсов, для профессиональной фотосъемки или записи видео в разрешении 4K UHD.
Что немаловажно, SanDisk Extreme Pro поддерживают работу с компактными карт-ридерами MobileMate с интерфейсом USB 3.0. Это позволяет не только без проблем переносить файлы между различными устройствами, но и подключать к одноплатному компьютеру дополнительные microSD-карты, используя свободные USB-порты.
Среди особенностей карт памяти WD Purple и SanDisk необходимо выделить устойчивость к воздействию негативных факторов внешней среды. Они способны исправно функционировать при экстремально низких (до -25 ºC) и экстремально высоких (до +85 ºC) температурах, выдерживают погружение в соленую или пресную воду на глубину до 1 метра и падение на бетонный пол с высоты до 5 метров, хорошо защищены от воздействия рентгеновского излучения и статических магнитных полей с силой индукции до 5000 Гс (в частности, это означает, что вы можете свободно проносить такие карточки через терминалы досмотра в аэропортах или через металлоискатели). Таким образом, вы можете быть на 100% уверены в сохранности данных даже в том случае, когда ваш проект предполагает наружный монтаж одноплатного компьютера (например, такая потребность может возникнуть при создании системы безопасности загородного дома).
Микрокомпьютеры обретают все большую популярность . Рынок мини-ПК сейчас находится на подъеме. Global Market Insights оценивает этот рынок в 700 миллионов долларов в 2019 году с перспективой роста до 1 миллиарда долларов к 2025 году.
Где лучше всего применять микрокомпьютер (рынки)?
- Для систем безопасности (Видеонаблюдение, СКУД, все типы бытовых датчиков);
- Интернет вещей;
- Умный дом, офис.(Управление освещением; нагрев, охлаждение помещения, датчики загазованности);
- Электронные приложения для развлечений и образовательных проектов;(игрушки, моделирование);
- Станки ЧПУ бытового применения;
- Рекламные приложения и медийные станции;
- Приложения для всех типов транспорта;
- Торговые автоматы;
Какие же достоинства и недостатки мини ПК?
— Практически нет возможности апгрейда;
— Охлаждение часто отсутствует, что ограничивает в нагрузках и влияет на износ деталей;
— слабая защита: чтобы спалить одноплатник, достаточно одного неосторожного действия;
+ Абсолютное отсутствие шума (не на всех моделях);
+ Низкое энергопотребление. Многие мини ПК могут потреблять до 10 Ватт в нагрузке;
+ Установить в корпус на DIN рейку и разместить в щитке управления;
+ наличие разьема GPIO, который отсутствует в десктопах. GPIO позволяет напрямую взаимодействовать с подключаемым устройством: можно подключить внешние кнопки, назначить им любое действие, управлять ЧПУ станком или подключить дополнительный шилд для расширения функционала микрокомпьютера;
Ключевые игроками рынка одноплатных компьютеров считаются: Raspberry Pi, Odroid, LattePanda, AMD.
Я хочу рассказать о 10 лучших одноплатных компьютеров 2019 года от других производителей: AAEON, Nvidia, Google , Seco, Boundary Device, Pine64, Arrow, BeagleBone, Robotics DragonBoard.
Последняя разработка компании SBC Aaeon на процессоре е Intel поколения Whiskey Lake с активным охлаждением. В частности, может быть установлен чип Core i3/i5/i7 с максимальной тактовой частотой до 4,6 ГГц. Обработкой графики занят интегрированный контроллер Intel UHD Graphics 620
UP Xtreme имеет до 16 ГБ DDR4, 128 ГБ eMMC и предполагает подключение 4K дисплея через HDMI, DisplayPort и eDP. Он также оснащен разъемами SATA, 2x GbE, 4x USB 3.0, 40-контактными разъемами «HAT»,
Технические характеристики UP Xtreme:
- SoC- процессор Intel два / четыре ядра “Whiskey Lake”, Core i3 / i5 / i7 @ 1.8 ГГц (Повышение частоты до 3,9 ГГц для i3 / i5, до 4,6 ГГц для i7) с Intel UHD graphics 620; 15 Вт TDP
- Оперативная память – до 16 Гб двухканальная память DDR4 (припаянная к плате)
- Хранилище – от 16 Гб до 128 Гб eMMC 5.1 флэш-памяти, 1x разъем SATA с разъемом питания
- Видеовыход
- 1x eDP с разъемом управления подсветкой
- 1x разъем HDMI / DisplayPort Stack
- Аудио – ALC887 для аудио выход / микрофон через 3.5 мм джек, I2S
- Сеть – два гигабитных Ethernet через PHY Intel i210 / i211 и i219LM
- USB – 4x порта USB3.0, 2x порта USB2.0
- Последовательный порт – 2x 10-контактных RS232/422/485 разъема через Fintech F81801
- Разъемы расширения
- 1x Minicard с 1x PCIex1 (вариант mSATA), 1x USB2.0 и слот для SIM-карты
- 1x Слот M.2 2230 E ключа (1x PCIe x1, 1x USB2.0)
- 1x Слот M.2 2242 / 2280 B / M ключа (2 x PCIe / 2xSATA)
- HAT расширение (40-контактов) – 28xGPIO, 2xSPI, 2x I2C, 1x ADC, 1x I2S, 2x PWM, 1x UART, 3,3 В, 5 В, GND через Intel MAX V CPLD
- 100-контактный док-разъем с 12 В, GND, 3x PCIe x1, 2x PCIe x1 или USB 3.0 и 2x USB2.0
- Разъем STM32 /O
- Разное – Кнопка включения и светодиодный индикатор состояния, RTC батарейка
- Питание – от 12 до ~65 В DC-вход через закручивающийся разъем
- Размеры – 120 x 120 мм
- Диапазон температур – от 0 до 60°C
- Влажность – 0% ~ 90% относительной влажности, без конденсации
- Сертификаты – CE, FCC
Неравноправные регистры
С этой особенностью обычно сталкиваются те, кто пишет на ассемблере. Наиболее ярким примером может служить ограничение на использование регистров R0-R15 в микроконтроллерах AVR. Например, в команде CPI (сравнение с константой) можно указать только регистры R16-R31. На этом часто попадаются новички.
Другим примером может служить увеличение длины кода команды при использовании вместо индексного регистра X индексного регистра Y в микроконтроллерах STM8. В этом случае команде предшествует байт префикса замены регистра. Это конечно гораздо более мягкий случай не равноправия, по сравнению с AVR, но определенную злую шутку иногда сыграть может.
Еще одним примером неравноправия может служить нехватка пространства адресов ввода-вывода в AVR и связанное с этим вынесение части регистров оборудования в область памяти данных. Хотя тут неравноправие только логическое.
Seco SBC-C43
Микрокомпьютор Seco SBC-C43 является первым SBC на базе самого мощного процессора NXP i.MX 8, в сочетании с 8 ГБ памяти DDR4, 32 ГБ флэш-памяти eMMC, проводной и беспроводной связью, входом и выходом HDMI 2.0, двумя разъемами M.2 от Seco.
Технические характеристики :
Другие китайские устройства
Среди китайских устройств можно выделить три самых достойных:
- Amlogic AML8726 — архитектура ARM Cortex A9 (65 нм), частота 800 МГц, кеш L2 128 Кб, графический чип Mali-400 GPU с частотой 250 MГц, поддержка декодирования видео 1080P.
- Rockchip RK2918 — архитектура ARM Cortex A8 (55 нм), максимальная частота 1,2 ГГц, но пока устройства работают на частоте 1 ГГц, кеш L2 512 Кб, графический чип GC800 GPU на частоте 600 MГц, поддержка декодирования видео 1080P.
- Allwinner A10 — архитектура ARM Cortex A8 (55 нм), максимальная частота 1,5 ГГц (пока устройства работают на частоте ~1–1,2 ГГц), кеш L2 512 Кб, графический чип Mali-400 GPU на частоте 300 MГц, поддержка декодирования видео всех форматов 2160P.
Аутсайдер — Amlogic, несмотря на продвинутое ядро Cortex A9. Причина в урезанной частоте (всего 800 МГц) и скромном кеше.
Вы что-то слышали о миниатюрных компьютерах, помещающихся на ладони, и о том, что с их помощью можно создавать удивительные вещи. Вы загорелись желанием попробовать свои силы на данном поприще, и в вашей голове уже начал оформляться абсолютно безумный проект. Но с чего же начать? И какой микрокомпьютер выбрать новичку, никогда не имевшему дела с подобными девайсами? Сегодняшний материал поможет вам во всем разобраться
Адрес один, а ячейки памяти разные
Такое бывает при страничной (банковой) организации памяти. Например, в случае PIC команда CLR 0x06 какой регистр обнуляет? Заглянув в документацию можно сказать, что регистр PORTB и сильно ошибиться если упустить из виду выбранный банк памяти. Так как регистры PORTB и TRISB имеют один и тот же адрес байта внутри банка. А ведь переключение банка может быть сделано где то далеко в тексте программы, а не обязательно прямо перед нашей командой.
Другим примером может послужить переключение регистровых банков в MCS-51. Дело в том, что это не исключает возможности доступа к ячейкам памяти регистровых банков по прямым адресам в памяти данных. Кстати, тоже самое можно сказать об области прямо адресуемых бит (каждый бит имеет собственный адрес) и возможности доступа к этой области в в побайтовом режиме.
В этих случаях тоже возможны ошибки.
Жизнь без аппаратного стека данных есть! И иногда это даже лучше
Вопреки ожиданиям речь пойдет далеко не только про PIC. Давайте, как всегда, посмотрим внимательнее
Здесь я показал состояние стека после вызова процедуры, которой были переданы два параметра (arg1 и arg2) и которая имеет две локальные переменные (local1 и local2).
В случае аппаратного стека у нас есть регистр SP, который как раз соответствует указателю вершины стека. По своей сути это обычный индексный регистр, правда со специализированным поведением.
Мы можем организовать собственный стек выделив область памяти данных и использовать для доступа к ней один из доступных индексных регистров. При этом придется использовать не команды PUSH и POP, а обычную косвенную адресацию. И добавить команды увеличения и уменьшения содержимого индексного регистра, если отсутствуют режимы с автоинкрементом и автодекрементом.
Это вряд ли имеет смысл для STM8 или AVR, но для PIC такая замена аппаратного стека данных (правда там адрес возврата будет в аппаратном стеке) используется и называется программным ( software ) стеком.
Стек, безусловно, очень полезное изобретение. И он широко используется для передачи параметров в процедуры и размещения временных и локальных данных с ограниченным временем жизни. Я не буду подробно останавливаться на тонкостях использования стека, нам сейчас это не очень важно, просто сошлюсь на когда то написанную мной статью " Размещение переменных, передача параметров в процедуры ".
Однако, кроме преимуществ стек имеет и недостатки. Во первых, со стеком работают посредством косвенной адресации, что может иногда привести к более медленной работе программы из-за дополнительных шагов для доступа к данным. Во вторых, размер стека нужно контролировать, иначе он может расшириться на область совершенно посторонних данных. Такое бывает при несбалансированном доступе, когда количество операций PUSH не равно количеству операций POP. Или при выделении стека недостаточного объема. И делать это нужно при выполнении программы , так как стек сущность динамическая.
Другими словами, стек может увеличить размер кода программы и замедлить ее выполнение. Конечно, такое происходит не всегда, но в общем случае такое возможно.
Однако, есть способ превратить динамическую сущность стека в статическую. Давайте посмотрим еще внимательнее
Здесь я показал три исходных файла, хоть это и не столь важно, в данном случае. Важнее то, что функция main у нас вызывает последовательно функции func1 и func2. При этом func2 вызывает еще и func3. Чуть ниже показано условное состояние стека внутри функций. Цветные прямоугольники это стековые кадры соответствующей функции.
Что мы здесь видим? Раз функции func1 и func2 вызываются не одновременно, а друг за другом, то и стековые кадры этих функций не могут существовать одновременно. А вот стековые кадры func2 и func3 существуют одновременно, так как во время работы func3 работа func2 еще не завершилась.
А это означает, что мы можем распределять пространство стека не во время работы программы, динамически, а статически во время компиляции. И переменным в стеке мы можем присвоить статические адреса.
Здесь я показал, что переменные в стековых кадрах func1 и func2 занимают одну и туже область памяти. Причем мы вынуждены резервировать память исходя из наибольшего размера кадра. И только потом размещать кадр func3.
Красота да и только! Теперь у нас все переменные используют статические адреса и прямую адресацию, что может быть более быстрым. И контроль стека будет выполнен компилятором, что даст еще большую экономию и скорость. Хорошо?
Хорошо, да не очень. За все приходится платить, и данный случай не исключение. Такое распределение памяти на этапе компиляции исключает возможность рекурсивных вызовов и повторной входимости. Но если этого не требуется, а таких программ много на самом деле, то и статический "стек" становится интересным и целесообразным.
Такое распределение памяти для PIC называется компилируемым ( compiled ) стеком. Но применять этот метод имеет смысл для любых микроконтроллеров, если не нужна рекурсия и повторная входимость.
Что такое мини-ПК и с чем его едят?
Все в нашем мире относительно. Сначала я хотел написать о том, кто первый создал мини-компьютер. Но что такое «мини»? 🙂 Например, в 1960-м году компания DEC разработала первый в мире мини-компьютер PDP-1, оснащенный клавиатурой и мышью, — размером «всего» с полкомнаты.
Сейчас мини-компьютерами считают одноплатные компьютеры весьма небольших размеров. В идеале хороший мини-компьютер должен занимать места не больше, чем USB-брелок. Кто был первым, проследить невозможно (а если и можно, то зачем?) — прежде чем появились одноплатные ПК для домашнего использования, была создана целая армия разнообразных индустриальных ПК, которые применялись в роли встроенных систем на производстве.
Вместо того чтобы ломать голову, кто был первым, разберемся, зачем нужен мини-комп сегодня самому обычному пользователю. Учитывая, что все мини-компы построены на базе ARM-процессоров, производительности у них не больше, чем у современных смартфонов. Поэтому на мини-ПК устанавливается или тот же Android, или легкие (во всех смыслах — и в плане системных требований, и в плане освоения) дистрибутивы Linux. Конечно, с Linux на борту девайс становится более универсальным, но от этого он быстрее не станет. Тем не менее производительности подобных устройств вполне достаточно для организации медиацентра и воспроизведения HD-видео. Подчеркивает мультимедианаправленность и наличие HDMI-разъема — девайс можно без проблем подключить к современному телевизору. На некоторых устройствах есть и DVI-разъемы, что позволяет также подсоединять их к не самым современным мониторам (на современных часто есть HDMI-разъем).
Итак, для подключения к телевизору/монитору имеется HDMI-разъем. Этот же разъем используется и для передачи звука. Но вот незадача: не на всех мониторах (не телевизорах), оснащенных HDMI-разъемом, есть акустика. В итоге, если на девайсе нет отдельного аудиовыхода, звук не услышишь, пока не подключишь комп к телевизору или монитору с акустикой. Этот факт нужно учитывать при выборе мини-ПК.
Подключить клавиатуру и мышь — проще простого. На любом компе есть минимум один USB-разъем, который можно использовать для подключения как одного устройства, так и USB-хаба. Я рекомендую обзавестись USB-хабом минимум на три USB-порта: один для клавиатуры, другой для мыши, третий для флешки. Можно пойти и другим путем: купить клавиатуру с двумя USB-портами: к одному подключишь мышку, к другому — флешку.
Связь с внешним миром, то есть интернетом, осуществляется или по Wi-Fi, или через Ethernet-порт.
Jetson Nano Dev Kit
Nvidia производит новый, недорогой вычислительный модуль Jetson Nano, который является уменьшенной (70 x 45 мм) версией старого Jetson TX1.
Технические характеристики :
- Графический процессор: Nvidia на архитектуре Maxwell со 128 ядрами CUDA
- Процессор: четырёхъядерный ARM Cortex-A57 MPCore
- Видео: 4K на 30 кадрах в секунду (формат H.264/H.265) и 4K на 60 кадрах в секунду (формат H.264/H.265) для кодирования и декодирования, соответственно
- Видеовыход: HDMI 2.0 или DP1.2 | eDP 1.4 | DSI (1×2), два одновременно
- Оперативная память: 4 ГБ LPDDR4 64-бит; 25,6 ГБ/с
- Флэш-память: 16 ГБ eMMC
- Камера: 12 линий (3×4 или 4×2) MIPI CSI-2 DPHY 1.1 (1,5 Гбит/с), 12x (модуль) и 1x (набор разработчика)
- Разъёмы: 1×1/2/4 PCIE, 1×USB 3.0, 3×USB 2.0
- Ввод-вывод: 1×SDIO / 2×SPI / 6×I2C / 2×I2S / пины GPIO
- Сеть: Gigabit Ethernet
- Поддержка ОС: Linux для Tegra
- Размер модуля: 69,5×45 мм
- Размер девкита: 100×80 мм
- Подключение: 260-пиновый коннектор
AI-ML Board
Недавно Arrow анонсировала одноплатный компьютер на базе i.MX8X вместе с аналогичным расширенным форматом 96Boards CE, Thor96 на базе i.MX8M. Плата AI-ML, по-видимому, является первой платой типа мини-ПК, оснащенной i.MX8X с низким энергопотреблением, что позволяет использовать до 4-х 64-битных ядер Cortex-A35 с частотой 1,2 ГГц и 4-шейдерным графическим процессором Vivante с поддержкой 4K, чип Cortex-M4F и процессор Tensilica HiFi 4 DSP.
Технические характеристики :
- SoC — процессор NXP i.MX 8X с четырьмя ядрами Arm A35 с тактовой частотой 1,2 ГГц, ядро реального времени Cortex-M4F с тактовой частотой 266 МГц, DSP ядро Tensilica HiFi 4, GC7000 Lite 3D GPU с 4x Vec4 шейдерами с 16 исполнительными модулями
- Системная память — 2 ГБ LPDDR4 @ 1600 МГц Industrial Temp от Micron
- Память — Слот для карты Micro SD
- Видео выход/интерфейс дисплея
- Выход HDMI
- Поддержка двух дисплеев MIPI
- Видео
- Декодирование H.265 до 4K при 30 кадрах в секунду
- Кодирование H.264 до 1080p при 60 кадрах в секунду
- Связь
- Gigabit Ethernet
- 802.11ac WiFi через модуль на базе Cypress и двухрежимный беспроводной модуль Bluetooth;
- Разъем для сим-карты
- USB — 2х порта USB 3.0, 1х порт Micro-USB B
- Расширение
- 40-контактный низкоскоростной разъем, 60-контактный высокоскоростной разъем с UART, SPI, I2 C, GPIO, I2 S, CAN, камерой и USB
- разъем mini PCIe для 3G/4G модема
- Разное — 6 светодиодов
- Размеры — 100 x 85 мм согласно спецификациям 96Boards CE Extended
Trim-Slice
Trim-Slice — безвентиляторный неттоп небольших размеров, разработанный израильской компанией CompuLab. Это самый большой из всех мини-компов. На фоне тех же нетбуков это устройство довольно маленькое — посмотри фото Trim-Slice на фоне ключей от автомобиля. Размер небольшой (9,5 × 13 × 1,5 см), но все же больше, чем у конкурентов.
Железо
Это первый коммерческий неттоп на базе процессоров NVIDIA Tegra 2. Это двухъядерные ARM-процессоры частотой 1 и 1,2 ГГц.
На борту Trim-Slice находятся: SSD SATA 32 Гб (да-да, SSD-накопитель), SD-слот для чтения SD-карт и расширения дискового пространства, 1 Гб DDR2-800, разъемы HDMI и DVI, звуковая плата 5.1, 4 USB-порта версии 2.0, Ethernet-порт 10/100/1000, Wi-Fi 80.211n, RS-232.
Без сомнения, данный неттоп самый универсальный (больше USB-портов, RS-232, Wi-Fi и быстрый Ethernet-порт), самый быстрый (благодаря использованию SSD-накопителя вместо SD-карт и быстрой оперативки), но и самый большой. Размеры этого компа таки превышают USB-брелок.
По сути, Trim-Slice — это полноценный компьютер, только без вентилятора и маленького размера. И поэтому он работает под управлением полноценного дистрибутива Ubuntu.
мини-компы построены на базе ARM-процессоров, и производительности у них не больше, чем у современных смартфонов. поэтому на мини-ПК устанавливается Android или легкие дистрибутивы Linux.
Одноплатные компьютеры в вопросах и ответах
Не будем ходить вокруг да около, а сразу перейдем к сути. Ниже приведены базовые сведения о микрокомпьютерах в виде небольшого ЧаВО, составленного из вопросов, которые больше всего волнуют новичков.
Одноплатный компьютер, или SBC (Single-Board Computer), — миниатюрное электронно-вычислительное устройство, все компоненты которого собраны на единственной печатной плате. Для работы такого девайса не требуется подключения дополнительных контроллеров — он является полностью самодостаточным. При этом габариты одноплатного компьютера не намного больше размеров банковской карты.
Микрокомпьютеры позволяют решать множество прикладных задач. На базе SBC вы можете собственными руками создать систему «умный дом», сконструировать ретроконсоль, сделать продвинутый маршрутизатор для дома или офиса, поднять мультимедийный или веб-сервер и многое, многое другое. По сравнению с готовыми решениями проекты на основе одноплатных компьютеров обходятся существенно дешевле. Бонусом же идут практически безграничные возможности кастомизации и масштабирования собранной системы.
- Я не инженер и не программист. Микрокомпьютеры не для меня?
Вовсе нет. Начнем с того, что на просторах сети вы без труда отыщете множество готовых программ и даже специализированных дистрибутивов операционных систем для SBC, «заточенных» под те или иные задачи. Конечно, вам придется разобраться с тем, как работает нужный софт, и научиться его настраивать, но уметь программировать вовсе не обязательно.
Что касается подключения дополнительных модулей, то для этих целей на плате распаяны стандартные порты, а также универсальный интерфейс GPIO (General-Purpose Input/Output — интерфейс ввода/вывода общего назначения), который может быть легко сконфигурирован под любые задачи и используется для подсоединения к микрокомпьютеру датчиков освещенности, температуры, звука, LED-индикаторов и даже более сложных компонентов вроде 3G/4G-модемов. Если же вам понадобится какой-либо специфический порт, вы всегда можете приобрести нужную плату расширения.
Сама по себе сборка функциональной системы оказывается не сложнее работы с детским конструктором, не требует пайки и других сложных манипуляций. Помимо этого, вы можете найти в продаже множество вспомогательных деталей (корпусов, радиаторов, кулеров, антенн и т. д.) для микрокомпьютеров, так что вам не придется осваивать 3D-печать или мучиться в тщетных попытках приладить к SBC несовместимые компоненты.
Летом 2017 года на тематическом портале Linux Gizmos вышел подробный обзор 98 микрокомпьютеров. С тех пор минуло уже три года. За это время интерес к SBC со стороны энтузиастов лишь возрос, как многократно возросло и количество представленных на рынке устройств: поскольку подобные девайсы сравнительно дешевы в производстве, их выпуском стали заниматься буквально все кому не лень, начиная от крупных корпораций вроде Asus и заканчивая никому не известными стартапами.
Несмотря на столь впечатляющее многообразие, действительно заслуживающие внимания одноплатные компьютеры можно пересчитать по пальцам. Причина кроется не только (и не столько) в их технических характеристиках, но и в качестве прошивки, программного обеспечения, а также совместимости с периферией и различными приложениями.
Зачастую, стремясь сэкономить, новички приобретают noname-устройства и оказываются у разбитого корыта по той простой причине, что не могут найти ни стабильно работающей ОС под них, ни нужных драйверов, ни гайдов в интернете. В аналогичную ситуацию можно попасть и при покупке брендового, но малопопулярного микрокомпьютера: каким бы качественным ни был приобретенный вами девайс, если вокруг него так и не сложилось крепкое комьюнити, для начинающего разработчика он будет абсолютно бесполезен.
Именно по этой причине мы настоятельно рекомендуем отдавать предпочтение проверенным временем SBC и пускаться в эксперименты с необычными новинками, лишь набравшись опыта. И лучшим микрокомпьютером для новичков на сегодняшний день однозначно является Raspberry Pi.
Читайте также: