Module MB 77.07 — альтернативный миникомпьютер

Не давно на рынке появился интересный и не дорогой микрокомпьютер Module MB 77.07 от российского разработчика, компании Модуль. Он создан на базе отечественного процессора ARM.

МВ 77.07 построен на базе системы на кристалле К1879ХБ1Я, которая также является разработкой НТЦ «Модуль». И хотя схема К1879ХБ1Я, в первую очередь, предназначена для использования в качестве декодера видеосигнала в различных ТВ-приставках, устройствах для видеонаблюдения и системах «умного дома», сам микрокомпьютер МВ 77.07 с этим процессором на борту позиционируется в том числе как система для энтузиастов-программистов и учебная плата для студентов. Таким образом, можно сказать, что это русский аналог Raspberry Pi. Давайте кратко разберем основные характеристики процессора К1879ХБ1Я, а затем — и самой платы.



Микрокомпьютер Module MB 77.07

Микрокомпьютер Module MB 77.07



Система на кристалле К1879ХБ1Я построена на основе двух процессорных ядер — ARM11 (ARM1176JZF-S ) и дополнительного DSP-процессора оригинальной архитектуры NeuroMatrix, который входит в блок декодирования аудиосигналов.



ARM-процессор — 324 МГц

ARM-процессор — 324 МГц



 

Рабочая частота ARM-процессора — 324 МГц (и DSP — тоже), не самая большая по современным меркам, однако мы смогли убедиться на собственном опыте, что она позволяет комфортно запускать ОС Linux и пользоваться достаточно богатой периферией процессора: аппаратными видеодекодерами H.264, MPEG-2, VC-1; 2D-видеоускорителем; 8-канальным аудиопроцессором на основе DSP; блоком демультиплексирования TS-потока; криптопроцессором с поддержкой алгоритмов AES и 3DES.

К1879ХБ1Я оснащен следующими интерфейсами:



DDR2 SDRAM,

NAND и SPI Flash,

хостом HS USB 2.0,

10M/100M Ethernet,

HDMI 1.2,

I2S,

S/PDIF,

UART,

SPI,

I2C,

JTAG,

TS,

GPIO.

Функциональная схема SoC К1879ХБ1Я

Функциональная схема SoC К1879ХБ1Я



Перейдем к описанию самой платы МВ 77.07: её размер — 80×80 мм, помимо самого процессора на плате установлено 128 МБ системной памяти и 128 МБ видеопамяти (обе — DDR2-667 SDRAM), а также 1 ГБ NAND-памяти. Плата имеет следующие разъемы интерфейсов:



10М/100М Ethernet,

два порта USB 2.0,

HDMI 1.2.


Кроме этого, на «гребенки» по бокам выведены следующие интерфейсы:



I2S,

SPI Flash,

TS (интерфейс транспортного потока),

8 GPIO,

на отдельных разъемах UART, JTAG и два USB-порта.


Питание платы — 5 В, оценочная стоимость — в пределах 30 долларов.

Module MB 77.07 2В настоящее время для платы портированы загрузчик U-Boot и ядро Linux 2.6.33, разработаны драйвера для всех периферийных устройств, также сейчас завершается процесс портирования драйверов для Linux 3.10. Разработан ряд элементов конвейера gstreamer с поддержкой различных периферийных устройств (в частности, видеодекодера и видеоконтроллера). Для разработки под DSP-процессор существует NeuroMatrix SDK. Исходные коды U-Boot, Linux, а также сборочной системы Buildroot можно получить по запросу у НТЦ «Модуль».

 



1. Разворачиваем базовую Debian-систему


Для разворачивания корневой файловой системы Debian воспользуемся утилитой debootstrap, которая «признана официальным способом установки базовой системы Debian» (см. инструкцию на debian.org и wiki.debian.org).

Разворачивание целевой файловой системы с помощью debootstrap проходит в две стадии: первая выполняется в окружении хост-системы (на этой стадии скачиваются и распаковываются необходимые пакеты, но не устанавливаются); вторая стадии выполняется на целевой системе (здесь происходит конфигурация и установка пакетов).

Будем устанавливать Debian 7.0 Wheezy для архитектуры armel, система будет развернута в директории debrootfs.

Первая стадия debootstrap выполняется командой

 



sudo debootstrap --verbose --foreign --arch=armel wheezy debrootfs ftp://ftp.ru.debian.org/debian


Для выполнения второй стадии нам понадобится эмулятор QEMU в режиме syscall, его можно установить командой

 



sudo apt-get install qemu qemu-user-static


Затем надо скопировать qemu-arm-static с хост-системы на целевую систему:

 



sudo cp /usr/bin/qemu-arm-static debrootfs/usr/bin


После этого можно выполнить вторую стадию debootstrap:

 



sudo chroot debrootfs /debootstrap/debootstrap --second-stage


Далее можно удалить директорию debrootfs/debootstrap, которая нам больше не нужна.

 



2. Настраиваем Debian


Зададим пароль root-a и смонтируем виртуальные файловые систему на целевую систему:

sudo chroot debrootfs /usr/bin/passwd root

 



sudo mount -t proc none debrootfs/proc sudo mount -t sysfs none debrootfs/sys sudo mount -t devpts none debrootfs/dev/pts


Теперь можно chroot-ся в целевую систему:

 



sudo chroot debrootfs


Необходимо добавить список источников пакетов в etc/apt/sources.list (изначально он пустой):

 



deb http://ftp.ru.debian.org/debian/ wheezy main contrib non-free deb http://http.ru.debian.org/debian wheezy main contrib non-free


И обновить индекс пакетов командой

 



apt-get update


После этого можно начать устанавливать нужные пакеты, например ssh-сервер и клиент:

 



apt-get install openssh-server openssh-client


Завершить работу с целевой системой можно командой

 



exit


После этого необходимо размонтировать виртуальные файловые системы, которые были смонтированные ранее:

 



sudo umount rootfs-dir/proc sudo umount rootfs-dir/sys sudo umount rootfs-dir/dev/pts


Также нужно скопировать модули ядра, с которым будет использоваться целевая rootfs, в директорию debrootfs/lib/modules.
Для возможности логинится на COM-порт, раскомментируйте строку в файле debrootfs/etc/inittab:

 



#T0:23:respawn:/sbin/getty -L ttyS0 9600 vt100


И установите нужную скорость, например, 38400:

 



T0:23:respawn:/sbin/getty -L ttyS0 38400 vt100


После этого можно создать, скажем, UBI-образ rootfs и прошить его в NAND-флеш или загрузится по NFS.

Приложение. Лог загрузки системы по NFS

Приложение. Лог загрузки системы по NFS



MBOOT (UEMD mode): Version mboot-00045-gd0c2f07-dirty (Built 11 08:41:46 FET 2013)OTP info: boot_source 2 jtag_stop 0 words_len 1024Maximum bank size: 0x10000000 bytesDetected 134217728 bytes of EM0 memoryMEMORY: 40000000 -> 48000000Memory layout 0x00100010 early 0x001001B8 text 0x001176C8 data 0x0011F028 signature 0x0011F02C bss_start 0x00121D84 stack_start 0x00137BF8^ stack_ptr 0x00137C00 malloc 0x0013FC00 envmnand_read_id: flash id 0xDCmnand_read_id: flash ext_id 0x95mnand_read_id: CS0 NAND 512MiB 3,3V 8-bit size(512) writesize(2048) oobsize(64) erasesize(131072)mnand_read_id: flash id 0xDCmnand_read_id: flash ext_id 0x95mnand_read_id: CS1 NAND 512MiB 3,3V 8-bit size(512) writesize(2048) oobsize(64) erasesize(131072)greth: Setting GRETH base addr to 0x20034000greth: Found GRETH at 0x20034000, irq 255greth: Resetting GRETHgreth: greth: 'phyaddr' not set, fall back to built-in tablegreth: greth: using preset PHY addr: 1fgreth: Resetting the PHYgreth: write_mii: 0x20034010 < 0xF809F801 [p:31 a:0 d:0xF809]greth: write_mii: 0x20034010 < 0x0000F801 [p:31 a:0 d:0x0000]greth: 10/100 GRETH Ethermac at [0x20034000] irq 255. Running 10 Mbps half duplexPHY info not availablegreth: greth_initgreth: greth_init: enabling receiverETH new device: name GRETH_10/100 greth: GRETH: New MAC address: 00:02:f7:00:27:0fIs there an EDCL emergency? NopeMTD Partition: boot @ 0x00000000 size 0x00040000MTD Partition: env @ 0x00040000 size 0x00040000MTD Partition: kernel_dtb @ 0x00080000 size 0x00080000MTD Partition: kernel @ 0x00100000 size 0x00400000MTD Partition: rootfs @ 0x00500000 size 0x3FB00000Hit any key (in 2 sec) to skip autoload...Running autoload command 'mtdboot;bootm'MTD Loading kernel image: dev kernel offset 0x000000000000 addr 0x40100000Linux preparing to boot the kernel: machid 0xcd1IMG moving image: type 2 from 0x40100040 to 0x40008000HINT: To optimize boot time adjust loadaddr to: 0x40007fc0Linux DTB start 0x40000100Linux entry 0x40008000Uncompressing Linux... done, booting the kernel.[ 0.000000] Booting Linux on physical CPU 0x0[ 0.000000] Linux version 3.10.18-uemd (sergei@shost) (gcc version 4.7.2 (crosstool-NG 1.18.0) ) #11 Tue Mar 4 13:48:01 FET 2014[ 0.000000] CPU: ARMv6-compatible processor [410fb767] revision 7 (ARMv7), cr=00c5387d[ 0.000000] CPU: PIPT / VIPT nonaliasing data cache, VIPT nonaliasing instruction cache[ 0.000000] Machine: Module MB77.07, model: Module MB77.07[ 0.000000] bootconsole [earlycon0] enabled[ 0.000000] Memory policy: ECC disabled, Data cache writeback[ 0.000000] Built 1 zonelists in Zone order, mobility grouping on. Total pages: 23840[ 0.000000] Kernel command line: console=ttyS0,38400 earlyprintk=serial root=/dev/nfs rw nfsroot=192.168.10.130:/srv/nfs/ ip=dhcp[ 0.000000] PID hash table entries: 512 (order: -1, 2048 bytes)[ 0.000000] Dentry cache hash table entries: 16384 (order: 4, 65536 bytes)[ 0.000000] Inode-cache hash table entries: 8192 (order: 3, 32768 bytes)[ 0.000000] Memory: 94MB 0MB = 94MB total[ 0.000000] Memory: 89564k/89564k available, 41508k reserved, 0K highmem[ 0.000000] Virtual kernel memory layout:[ 0.000000] vector : 0xffff0000 - 0xffff1000 ( 4 kB)[ 0.000000] fixmap : 0xfff00000 - 0xfffe0000 ( 896 kB)[ 0.000000] vmalloc : 0xc8800000 - 0xff000000 ( 872 MB)[ 0.000000] lowmem : 0xc0000000 - 0xc8000000 ( 128 MB)[ 0.000000] modules : 0xbf000000 - 0xc0000000 ( 16 MB)[ 0.000000] .text : 0xc0008000 - 0xc045c930 (4435 kB)[ 0.000000] .init : 0xc045d000 - 0xc047d790 ( 130 kB)[ 0.000000] .data : 0xc047e000 - 0xc04be178 ( 257 kB)[ 0.000000] .bss : 0xc04be178 - 0xc053df90 ( 512 kB)[ 0.000000] SLUB: HWalign=32, Order=0-3, MinObjects=0, CPUs=1, Nodes=1[ 0.000000] NR_IRQS:128[ 0.000000] regs = 0xf8000000, irq_start = 0[ 0.000000] VIC @f8000000: id 0x00041192, vendor 0x41[ 0.000000] regs = 0xf8010000, irq_start = 32[ 0.000000] VIC @f8010000: id 0x00041192, vendor 0x41[ 0.000000] UEMD: Firing up timer system[ 0.000000] Clocksource: rate 54000000 mult 19418074 shift 20[ 0.000000] Clockevent: rate 54000000 mult 231928233 shift 32[ 0.000000] sched_clock: 32 bits at 100 Hz, resolution 10000000ns, wraps every 4294967286ms[ 0.000000] Console: colour dummy device 80x30[ 0.020000] Calibrating delay loop... 215.04 BogoMIPS (lpj=1075200)[ 0.100000] pid_max: default: 32768 minimum: 301[ 0.110000] Mount-cache hash table entries: 512[ 0.130000] CPU: Testing write buffer coherency: ok[ 0.150000] Setting up static identity map for 0xc030aa10 - 0xc030aa48[ 0.160000] devtmpfs: initialized[ 0.180000] NET: Registered protocol family 16[ 0.200000] DMA: preallocated 256 KiB pool for atomic coherent allocations[ 0.260000] OTP ROM is not flashed[ 0.270000] msvdhd: configuring memory[ 0.280000] hw-breakpoint: found 6 breakpoint and 1 watchpoint registers.[ 0.290000] hw-breakpoint: maximum watchpoint size is 4 bytes.[ 0.420000] bio: create slab at 0[ 0.440000] SCSI subsystem initialized[ 0.450000] ssp-pl022 20023000.ssp: ARM PL022 driver, device ID: 0x00041022[ 0.460000] pl022: mapped registers from 0x20023000 to f8023000[ 0.480000] usbcore: registered new interface driver usbfs[ 0.490000] usbcore: registered new interface driver hub[ 0.500000] usbcore: registered new device driver usb[ 0.510000] media: Linux media interface: v0.10[ 0.520000] Linux video capture interface: v2.00[ 0.530000] Advanced Linux Sound Architecture Driver Initialized.[ 0.550000] Switching to clocksource uemd_timer1[ 0.650000] NET: Registered protocol family 2[ 0.660000] TCP established hash table entries: 1024 (order: 1, 8192 bytes)[ 0.670000] TCP bind hash table entries: 1024 (order: 0, 4096 bytes)[ 0.680000] TCP: Hash tables configured (established 1024 bind 1024)[ 0.690000] TCP: reno registered[ 0.700000] UDP hash table entries: 256 (order: 0, 4096 bytes)[ 0.710000] UDP-Lite hash table entries: 256 (order: 0, 4096 bytes)[ 0.720000] NET: Registered protocol family 1[ 0.730000] RPC: Registered named UNIX socket transport module.[ 0.740000] RPC: Registered udp transport module.[ 0.750000] RPC: Registered tcp transport module.[ 0.760000] RPC: Registered tcp NFSv4.1 backchannel transport module.[ 0.830000] squashfs: version 4.0 (2009/01/31) Phillip Lougher[ 0.850000] msgmni has been set to 174[ 0.870000] alg: No test for stdrng (krng)[ 0.880000] io scheduler noop registered (default)[ 0.900000] module,pinmux 20033084.sysconfigh: DVB_CI mode is GPIO (0)[ 0.910000] module,pinmux 20033084.sysconfigh: TS1 mode is GPIO (0)[ 0.920000] module,pinmux 20033084.sysconfigh: TS2 mode is GPIO (0)[ 0.930000] module,pinmux 20033084.sysconfigh: NAND mode is peripheral (1)[ 0.940000] module_vdu 80173000.vdu: found VDU device at 80173000, id [ 0.970000] Console: switching to colour frame buffer device 90x36[ 0.990000] fb0: Module VDU frame buffer device[ 1.040000] Serial: 8250/16550 driver, 3 ports, IRQ sharing disabled[ 1.050000] 2002b000.uart: ttyS0 at MMIO 0x2002b000 (irq = 7) is a 8250[ 1.060000] console [ttyS0] enabled, bootconsole disabled[ 1.060000] console [ttyS0] enabled, bootconsole disabled[ 1.070000] 20022000.uart: ttyS1 at MMIO 0x20022000 (irq = 9) is a 8250[ 1.080000] 2002c000.uart: ttyS2 at MMIO 0x2002c000 (irq = 8) is a 8250[ 1.120000] loop: module loaded[ 1.130000] msvdhd 80180000.video_decoder: found device at 0x80180000, id 0x0025300b[ 1.180000] NMC3_DRIVER probe OK[ 1.200000] dev_ex->Name=NMC3_0[ 1.220000] drivers/misc/rcmod_soc_nmc3.c#105: sync value ERROR code=0x4, memval=0x4[ 1.240000] nmcadec: could not initialize NMC3_0[ 1.260000] mnand CS0 Micron size(512) writesize(2048) oobsize(64) erasesize(131072)[ 1.270000] mnand CS1 Micron size(512) writesize(2048) oobsize(64) erasesize(131072)[ 1.280000] mnand: Detected 1073741824 bytes of NAND[ 1.300000] libphy: greth-mdio: probed[ 4.340000] ehci_hcd: USB 2.0 'Enhanced' Host Controller (EHCI) Driver[ 4.350000] uemd-ehci 10040000.ehci: UEMD EHCI[ 4.360000] uemd-ehci 10040000.ehci: new USB bus registered, assigned bus number 1[ 4.370000] uemd-ehci 10040000.ehci: irq 35, io mem 0x10040000[ 4.400000] uemd-ehci 10040000.ehci: USB 2.0 started, EHCI 1.00[ 4.420000] hub 1-0:1.0: USB hub found[ 4.430000] hub 1-0:1.0: 2 ports detected[ 4.440000] ohci_hcd: USB 1.1 'Open' Host Controller (OHCI) Driver[ 4.450000] usbcore: registered new interface driver usb-storage[ 4.460000] mousedev: PS/2 mouse device common for all mice[ 4.470000] i2c /dev entries driver[ 4.490000] module_hdmi: module_hdmi: Device ID: 0x9132[ 4.530000] usbcore: registered new interface driver usbhid[ 4.540000] usbhid: USB HID core driver[ 4.570000] TCP: cubic registered[ 4.580000] VFP support v0.3: implementor 41 architecture 1 part 20 variant b rev 5[ 4.610000] mvdu: will allocate buffers[ 4.620000] mvdu: did allocate buffers cc000000[ 4.660000] Sending DHCP requests ., OK[ 4.690000] IP-Config: Got DHCP answer from 192.168.10.41, my address is 192.168.10.117[ 4.710000] IP-Config: Complete:[ 4.720000] device=eth0, hwaddr=00:02:f7:00:27:0f, ipaddr=192.168.10.117, mask=255.255.255.0, gw=192.168.10.1[ 4.730000] host=192.168.10.117, domain=promwad.corp, nis-domain=(none)[ 4.740000] bootserver=192.168.10.45, rootserver=192.168.10.130, rootpath=[ 4.750000] nameserver0=192.168.10.41, nameserver1=192.168.10.42[ 4.760000] ALSA device list:[ 4.770000] #0: Module MB7707[ 4.800000] VFS: Mounted root (nfs filesystem) on device 0:11.[ 4.810000] devtmpfs: mounted[ 4.830000] Freeing unused kernel memory: 128K (c045d000 - c047d000)[ 4.850000] usb 1-1: new high-speed USB device number 2 using uemd-ehci[ 5.020000] hub 1-1:1.0: USB hub found[ 5.040000] hub 1-1:1.0: 4 ports detectedINIT: version 2.88 booting[info] Using makefile-style concurrent boot in runlevel S.[....] Starting the hotplug events dispatcher: udevd[ 39.850000] udevd[730]: starting version 175. ok [....] Synthesizing the initial hotplug events...done.[....] Waiting for /dev to be fully populated...done.[....] Activating swap...done.[....] Cleaning up temporary files.... ok [....] Activating lvm and md swap...done.[....] Checking file systems...fsck from util-linux 2.20.1done.[....] Mounting local filesystems...done.[....] Activating swapfile swap...done.[....] Cleaning up temporary files.... ok [....] Setting kernel variables ...done.[....] Configuring network interfaces...done.[....] Cleaning up temporary files.... ok [....] Setting up X socket directories... /tmp/.X11-unix /tmp/.ICE-unix. ok INIT: Entering runlevel: 2[info] Using makefile-style concurrent boot in runlevel 2.[....] Starting enhanced syslogd: rsyslogd. ok [....] Starting periodic command scheduler: cron. ok [....] Starting system message bus: dbus. ok [....] Starting OpenBSD Secure Shell server: sshd. ok Debian GNU/Linux 7 shost ttyS0shost login: rootPassword: Last login: Thu Jan 1 00:01:26 UTC 1970 on ttyS0Linux shost 3.10.18-uemd #11 Tue Mar 4 13:48:01 FET 2014 armv6lThe programs included with the Debian GNU/Linux system are free software;the exact distribution terms for each program are described in theindividual files in /usr/share/doc/*/copyright.Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extentpermitted by applicable law.root@shost:~# cat /etc/issueDebian GNU/Linux 7
lroot@shost:~#

Найдено на habrhabr.ru —> Оригинал

smartplus.org (Железо)
Другие новости раздела: Настройки и обзоры

Настройки и обзоры

Обзор смартфона iQOO 12: shut up and take my money!

Симпатичный и мощный, с отличными камерами смартфон за адекватные деньги…

Настройки и обзоры

Обзор TWS-наушников Creative Aurvana Ace: первые с xMEMS

Первые на российском рынке наушники с технологией xMEMS. Разбираемся, что дает новая технология.

Настройки и обзоры

Какие сериалы смотреть в апреле: 4 сериала, достойных внимания

Месяц на удивление не богат на новинки…

Настройки и обзоры

RTFM – о пользе чтения инструкций, нужно ли учиться использовать технику?

Может ли смартфон фотографировать лучше вас? Выбор флагмана, который превратит вас в гениального фотографа; как чистить чайник так, чтобы он гарантированно сломался; телевизор, который неожиданно

Похожие публикации

Android Smart TV BOX

Raspberry Pi Compute Module 4 — ещё меньше и быстрее

Одноплатный ПК Raspberry Pi 4 был представлен летом прошлого года. Сегодня компания выпустила модификацию Raspberry Pi Compute Module 4, которая сходна с Raspberry Pi 4 по основным параметрам, но

Android Smart TV BOX

ZIDOO Z9X – новый 4K UHD медиаплеер на базе SoC RTD1619DR

Только что был официально анонсирован новый медиаплеер ZIDOO Z9X, который построен на новой платформе SoC Realtek RTD1619DR, которая приносит некоторые интересные улучшения по сравнению с ее

Android Smart TV BOX

Мини-ПК CHUWI GBox Pro с процессором Intel Atom X7-E3950

В китайских интернет-магазинах появилась новая модель мини-ПК с низким энергопотреблением под названием CHUWI GBox Pro, который является работает на базе процессора Intel Atom X7-E3950. Напомним,

Android Smart TV BOX

ASUS представила производительную альтернативу Raspberry Pi

Компания ASUS выпустила новую версию одноплатного компьютера ASUS Tinker Board 2 на базе шестиядерного ARM-процессора Rockchip. Помимо производительного для своих габаритов железа, новинка,

Смартфоны

Архитектура процессоров P990/M600/W950

любопытную заметку нашел на форуме smart-se. M600i, P990i и W950i построены на базе ARM9-процессора Philips Nexperia PNX4008, изготовленного по 90-нм технологии и работающего на частоте 208 Мгц. Он

Android Smart TV BOX

MX Pro 4K: новый TV Box с процессором Allwinner H5

MX Pro 4K — это новая ТВ-приставка, интересной особенностью которой является работа на базе необычного процессора Allwinner H5, который до сих пор встречался в некоторых платах для разработчиков

Android Smart TV BOX

Обзор ТВ бокса X96 Mini: Amlogic S905W, Android 7.1.2

Приставка X96 mini является обновленной моделью некогда сверх популярного ТВ бокса Х96. Х96 mini построена на базе новой версии 4-х ядерного процессора Amlogic S905W, под управлением операционной

Android Smart TV BOX

Плата Khadas VIM3 на базе процессора Amlogic S922X поддерживает M.2 NVMe SSD, WiFi 5 и Bluetooth 5

В марте этого года был запущен проект одноплатного ПК ODROID-N2, который основан на базе процессора Amlogic S922X и с тех самых пор многие хвалят данный процессор и плату, которые обеспечивают