ロシア連邦の個々のメーカーに対する米国からの電子部品ベースの供給禁止に関するニュースを読んで、私たちはARMアーキテクチャの最も生産的なロシアのプロセッサの1つに基づいてロシアの科学技術センター「モジュール」で開発されたシングルボードマイクロコンピューターモジュールMV 77.07について話すことにしました。 また、このマイクロコンピューターにDebian Linuxディストリビューションをインストールすることも検討します。
MV 77.07は、K1879KHB1Yaクリスタルに基づいたシステムに基づいて構築されています。これは、STC「モジュール」の開発でもあります。 また、K1879KHB1YA回路は主にさまざまなセットトップボックス、ビデオ監視デバイス、スマートホームシステムのビデオデコーダーとして使用することを目的としていますが、このプロセッサーを搭載したマイクロコンピューターMV 77.07は愛好家向けのシステムとしても位置付けられています-プログラマーと学生委員会。 したがって、これはRaspberry Piのロシア語の類似物であると言えます。 K1879HB1YAプロセッサの主要な特性を簡単に分析してから、ボード自体を分析しましょう。
K1879KHB1Yaチップに基づくシステムは、2つのプロセッサコア-ARM11(ARM1176JZF-S)と、オーディオ信号デコードユニットに含まれる元のNeuroMatrixアーキテクチャの追加DSPプロセッサに基づいて構築されています。
ARMプロセッサの動作周波数は324 MHz(およびDSPも)であり、これは現代の標準では最高ではありませんが、Linux OSを快適に実行し、プロセッサの豊富な周辺機器であるハードウェアH.264ビデオデコーダを使用できるという独自の経験をすることができました。 MPEG-2、VC-1; 2Dビデオアクセラレータ。 8チャネルDSPベースのオーディオプロセッサ。 TSストリーム逆多重化ユニット。 AESおよび3DESアルゴリズムをサポートする暗号プロセッサ。
K1879HB1Yaには次のインターフェイスが装備されています。
- DDR2 SDRAM、
- NANDおよびSPIフラッシュ、
- HS USB 2.0ホスト
- 10M / 100Mイーサネット、
- HDMI 1.2、
- I2S、
- S / PDIF、
- UART、
- SPI
- I2C、
- JTAG、
- TS
- GPIO
SoC K1879HB1YAの機能図
MV 77.07マザーボード自体の説明に移りましょう:サイズは80x80 mmです;プロセッサ自体に加えて、マザーボードには128 MBのシステムメモリと128 MBのビデオメモリ(どちらもDDR2-667 SDRAM)と1 GBのNANDメモリがあります。 ボードには、次のインターフェイスコネクタがあります。
- 10M / 100Mイーサネット、
- 2つのUSB 2.0ポート、
- HDMI 1.2
さらに、次のインターフェイスが側面の「櫛」に表示されます。
- I2S、
- SPIフラッシュ、
- TS(トランスポートストリームインターフェイス)、
- 8 GPIO、
- 別のUART、JTAGコネクタおよび2つのUSBポート。
ボード電力-5 V、推定コスト-30ドル以内。
現在、U-BootローダーとLinux 2.6.33カーネルがボード用に移植されており、すべての周辺機器用のドライバーが開発されており、Linux 3.10用のドライバーの移植プロセスは完了間近です。 gstreamerパイプラインの多くの要素は、さまざまな周辺機器(特に、ビデオデコーダーとビデオコントローラー)をサポートして開発されています。 DSPプロセッサでの開発には、NeuroMatrix SDKがあります。 U-Boot、Linux、およびBuildrootアセンブリシステムのソースコードは、STC「モジュール」からのリクエストに応じて入手可能です。
1.ベースDebianシステムをデプロイします
Debianルートファイルシステムを展開するには、debootstrapユーティリティを使用します。これは「Debianベースシステムをインストールする公式の方法として認識されています」(debian.orgおよびwiki.debian.orgの手順を参照)。
debootstrapを使用したターゲットファイルシステムの展開は2段階で行われます。最初の段階はホストシステム環境で実行されます(この段階では、必要なパッケージがダウンロードおよび展開されますが、インストールはされません)。 2番目のステージはターゲットシステムで実行されます(パッケージの構成とインストールはここで行われます)。
armelアーキテクチャ用にDebian 7.0 Wheezyをインストールします。システムは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
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 1024 Maximum bank size: 0x10000000 bytes Detected 134217728 bytes of EM0 memory MEMORY: 40000000 -> 48000000 Memory layout 0x00100010 early 0x001001B8 text 0x001176C8 data 0x0011F028 signature 0x0011F02C bss_start 0x00121D84 stack_start 0x00137BF8^ stack_ptr 0x00137C00 malloc 0x0013FC00 env mnand_read_id: flash id 0xDC mnand_read_id: flash ext_id 0x95 mnand_read_id: CS0 NAND 512MiB 3,3V 8-bit size(512) writesize(2048) oobsize(64) erasesize(131072) mnand_read_id: flash id 0xDC mnand_read_id: flash ext_id 0x95 mnand_read_id: CS1 NAND 512MiB 3,3V 8-bit size(512) writesize(2048) oobsize(64) erasesize(131072) greth: Setting GRETH base addr to 0x20034000 greth: Found GRETH at 0x20034000, irq 255 greth: Resetting GRETH greth: greth: 'phyaddr' not set, fall back to built-in table greth: greth: using preset PHY addr: 1f greth: Resetting the PHY greth: 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 duplex PHY info not available greth: greth_init greth: greth_init: enabling receiver ETH new device: name GRETH_10/100 greth: GRETH: New MAC address: 00:02:f7:00:27:0f Is there an EDCL emergency? Nope MTD Partition: boot @ 0x00000000 size 0x00040000 MTD Partition: env @ 0x00040000 size 0x00040000 MTD Partition: kernel_dtb @ 0x00080000 size 0x00080000 MTD Partition: kernel @ 0x00100000 size 0x00400000 MTD Partition: rootfs @ 0x00500000 size 0x3FB00000 Hit any key (in 2 sec) to skip autoload... Running autoload command 'mtdboot;bootm' MTD Loading kernel image: dev kernel offset 0x000000000000 addr 0x40100000 Linux preparing to boot the kernel: machid 0xcd1 IMG moving image: type 2 from 0x40100040 to 0x40008000 HINT: To optimize boot time adjust loadaddr to: 0x40007fc0 Linux DTB start 0x40000100 Linux entry 0x40008000 Uncompressing 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 <bio-0> 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 <ebebab01> [ 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 detected INIT: 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.1 done. [....] 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 ttyS0 shost login: root Password: Last login: Thu Jan 1 00:01:26 UTC 1970 on ttyS0 Linux shost 3.10.18-uemd #11 Tue Mar 4 13:48:01 FET 2014 armv6l The programs included with the Debian GNU/Linux system are free software; the exact distribution terms for each program are described in the individual files in /usr/share/doc/*/copyright. Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent permitted by applicable law. root@shost:~# cat /etc/issue Debian GNU/Linux 7 \n \l root@shost:~#
. .
P.S. — AM1808 TI .