Итак, несколько дней назад я получил долгожданный прототип от представителей известной в России компании Ritmix.
Первые впечатления немного противоречивы. Очень порадовало качество сборки самой консольки, её монолитность и расположение элементов. Материал — чёрный, прорезиненный Soft-touch пластик, какой раньше был в Motorola E398, только немного мягче. За счёт него устройство приятно держать в руках и выскользнуть ему проблематично. Слабая часть устройства — его программная начинка. Присутствуют небольшие проблемы с локализацией (хотя перевод Ritmix RZX-50 из коробки значительно лучше, чем таковой у Dingoo A320) и со стабильностью текущей прошивки.
Расположение элементов, дизайн
Слева — четырёхпозиционная крестовина, справа — кнопки Y, X, A (OK), B (ESC), отдельно кнопки SELECT и START. Сверху — шифты L и R. Снизу — микрофон, скрытая кнопка сброса, разъём 3.5мм под наушники, разъём 3.5мм для TV-Out, порт miniUSB, слот для карт памяти формата microSD (TransFlash) без заглушки и совмещённый ползунок включения и отключения консоли + блокировки кнопок. Аккумулятор несъёмный, на задней стороне импровизированные выступы, которые помогают удерживать консоль в удобном положении. Размеры самого девайса — 18х8х1.5 см.
Дисплей
В центре расположен большой 4.2-дюймовый экран. Размеры сторон: высота 53 мм, ширина — 93 мм. Соотношение сторон примерно 16:9. Разрешение — 480х272 пикселей, аналогичное разрешению консоли PSP. Экран приемлемого качества, я бы даже сказал отличного. Зернистость небольшая, цвета инвертируются только если сильно наклонить консоль вперёд. Боковой обзор нормальный. В общем, качеством матрицы я остался вполне доволен.
Технические характеристики
Центральный процессор консоли — это JZ4755 с архитектурой MIPS, который работает на разных частотах, максимально допустимая в стандартной прошивке — 432 MHz. Оперативной памяти — 64 MB, при желании можно подключить Swap с карты памяти. В консоли присутствует простенький G-Sensor, микрофон, FM-радио и TV-Out.
Более подробное описание железа консоли вы найдёте на этом сайте.
Интерфейс
Устройство работает под управлением операционной системы Dingux, которая базируется на ядре Linux. В качестве оболочки главного меню используется немного переделанное и допиленное DMenu. Его перевод я немного подкорректировал, но всё равно есть ещё несколько недочётов. Отмечу работу программ, которые мне понравились:
1. Плеер для проигрывания видео.
Это MPlayer, собранный специально под Ritmix RZX-50. Лично мне он понравился, так как отлично играет DVD-рипы, а большего мне и не нужно. Поддержки формата MKV пока, к сожалению, нет.
2. Просмотрщик картинок.
Отлично открывает фотографии с разрешением пять мегапикселей, но немного задумывается. Позволяет поставить вашу фотографию или картинку фоновой обоиной меню или плеера. Можно увеличить картинку, к сожалению, только на один уровень и повернуть. Кроме того, имеется режим просмотра фотографий в виде слайдшоу с редактируемым интервалом.
3. Читалки HTML, TXT, DOC, PDF и других форматов.
Читалка PDF — это немного переделанный MuPDF, который прекрасно справляется со своими возможностями. Текстовые читалки имеют приятную функцию автопрокрутки строки или страницы.
4. Программа для обновления прошивки.
С помощью этой программы можно достаточно легко прошить устройство. Вы просто забрасываете необходимые файлы в память устройства, программа их автоматически находит и прошивает. Реализовано это конечно, примитивно, с помощью утилиты dd, но лучше уж так, чем никак.
Теперь перейду к тому, что мне совсем не понравилось:
Во первых, отсутствие вменяемого файлового менеджера, а во-вторых, два небольших, но неприятных бага.
1. Подсветка и зарядка.
Очень огорчила невозможность отключения подсветки при зарядке через сетевое зарядное устройства или USB-кабель. На прототипе подсветка горит постоянно. То есть невозможно оставить консоль заряжаться на ночь, экран будет светиться всю ночь. Тем более подсветка тратит много энергии и с ней консоль заряжается дольше. Мне тут подсказывают, что на Dingoo А320 тоже был подобный баг, но там имелась возможность отключить подсветку кнопкой. В принципе, пока ничего не мешает заряжать консоль экраном вниз. Но, надеюсь, это будет исправлено в релизной версии устройства.
2. TV-Out.
При его включении полностью отключается дисплей и попасть обратно в настройки консоли, чтобы отключить TV-Out — невозможно. Логично было бы сделать проверку, как в радио. Есть кабель в гнезде — TV-Out включать можно. Отключаем кабель — TV-Out отключается тоже.
Ну и мелкий недочёт: при сбросе настроек — не задаётся подтверждающий действие вопрос. Они просто тупо сбрасываются и всё. При случайном нажатии можно сбить себе все настройки.
Пользовательские модификации
Исходники прошивки, к сожалению, пока закрыты, но лёгкость создания наборов программ, скриптов и прошивки их в устройство, я надеюсь, поможет появиться кастомным прошивкам с исправленными багами и множеством дополнений. Позже я напишу мануал по «раскирпичиванию» устройства и создании для него пользовательской прошивки.
Впечатления
Ritmix RZX-50 в общих чертах мне понравился. Немного удручает небольшая сыроватость прошивки, но, думаю, недостатки исправят с выходами новых обновлений.
Дополнительная информация
Насчёт совместимости игр и эмуляторов с Dingoo A320. 80% приложений из этого архива должны нормально работать. Но с некоторыми есть проблемы в плане отображения цветности. Например, это игры FleshChasmer: The Eve, Apricots, R2-Tec Quake и некоторые другие. Думаю, эту проблему можно побороть либо изменением цветности в инициализации SDL на 16 бит и последующей пересборкой приложения, либо копанием в прошивке устройства и стандартной SDL-библиотеке.
В моём прототипе Ritmix RZX-50 был оборван провод, идущий к одному из динамиков. После того, как я припаял провод, динамик заработал.
Для получения дополнительной информации по приставке, обязательно посетите это сообщество и официальный сайт.
Различная системная информация для разработчиков
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
# cat /proc/meminfo MemTotal: 62320 kB MemFree: 23164 kB Buffers: 928 kB Cached: 8888 kB SwapCached: 0 kB Active: 5620 kB Inactive: 4608 kB SwapTotal: 0 kB SwapFree: 0 kB Dirty: 28 kB Writeback: 0 kB AnonPages: 424 kB Mapped: 492 kB Slab: 1720 kB SReclaimable: 532 kB SUnreclaim: 1188 kB PageTables: 108 kB NFS_Unstable: 0 kB Bounce: 0 kB CommitLimit: 31160 kB Committed_AS: 1300 kB VmallocTotal: 1048404 kB VmallocUsed: 0 kB VmallocChunk: 1048404 kB |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 |
# dmesg &> dmesg.out && cat dmesg.out Linux version 2.6.24.3L009-g40fe766b-dirty (carlos@carlos-ubuntu11) (gcc version 4.3.3 (GCC) ) #347 Thu Sep 8 20:21:33 CST 2011 CPU revision is: 2ed0024f (Ingenic JZRISC) CPU clock: 432MHz, System clock: 144MHz, Peripheral clock: 144MHz, Memory clock: 144MHz Umido L009 board setup Aug 19 2011 15:11:34 Determined physical RAM map: memory: 04000000 @ 00000000 (usable) User-defined physical RAM map: memory: 04000000 @ 00000000 (usable) Entering add_active_range(0, 0, 16384) 0 entries of 256 used Zone PFN ranges: Normal 0 -> 16384 Movable zone start PFN for each node early_node_map[1] active PFN ranges 0: 0 -> 16384 On node 0 totalpages: 16384 Normal zone: 128 pages used for memmap Normal zone: 0 pages reserved Normal zone: 16256 pages, LIFO batch:3 Movable zone: 0 pages used for memmap Built 1 zonelists in Zone order, mobility grouping off. Total pages: 16256 Kernel command line: mem=64M console=ttyS1,57600n8 ip=off rootfstype=ext3 root=/dev/mmcblk0p1 ro Primary instruction cache 16kB, VIPT, 4-way, linesize 32 bytes. Primary data cache 16kB, 4-way, VIPT, no aliases, linesize 32 bytes Synthesized clear page handler (25 instructions). Synthesized copy page handler (44 instructions). Synthesized TLB refill handler (20 instructions). Synthesized TLB load handler fastpath (32 instructions). Synthesized TLB store handler fastpath (32 instructions). Synthesized TLB modify handler fastpath (31 instructions). PID hash table entries: 256 (order: 8, 1024 bytes) Console: colour dummy device 80×25 console [ttyS1] enabled Dentry cache hash table entries: 8192 (order: 3, 32768 bytes) Inode-cache hash table entries: 4096 (order: 2, 16384 bytes) Memory: 62128k/65536k available (1940k kernel code, 3348k reserved, 551k data, 132k init, 0k highmem) Calibrating delay loop… 430.89 BogoMIPS (lpj=2154496) Mount-cache hash table entries: 512 net_namespace: 64 bytes NET: Registered protocol family 16 Total 16MB memory at 0x3000000 was reserved for IPU Time: jz_clocksource clocksource has been installed. Total 8MB memory1 at 0x1800000 was reserved for IPU Power Management for JZ ===== verify ===== policy = .. ===== verify ===== policy = .. CPU_FREQ: freq_target, policy = 0x810ed980, freq=432000, relation=0 new_index = 5 ==== div_of_cclk=1 ==== divisors of I:S:P:M = 1:3:3:3 new frequency is 432000 KHz (REG_CPM_CPCCR:0x40612220) io scheduler noop registered (default) carlos tve: pllout2 = 432000000 plck is 22000000 LCDC: PixClock:22736842 FrameBuffer bpp = 16 In jz4750fb_deep_set_mode fg0_frm_size = 0x3fc00 carlos tve: pllout2 = 432000000 plck is 22000000 LCDC: PixClock:22736842 Out jz4750fb_deep_set_mode fb0: jz-lcd frame buffer device, using 1024K of video memory kernel logo display thread start! JzSOC: char device family. JZ4740 SAR-ADC driver registered UDC starting pnp monitor thread Cable not in! JZ UDC hotplug driver registered init rda5807p Virtual Driver of TCSM registered Serial: 8250/16550 driver $Revision: 1.5 $ 4 ports, IRQ sharing disabled serial8250: ttyS0 at MMIO 0x0 (irq = 9) is a 16550A serial8250: ttyS1 at MMIO 0x0 (irq = is a 16550A serial8250: ttyS2 at MMIO 0x0 (irq = 7) is a 16550A RAMDISK driver initialized: 16 RAM disks of 4096K size 1024 blocksize loop: module loaded jz-gpio-keys: scan interval 20ms input: JZ GPIO keys as /class/input/input0 ===== verify ===== policy = .. ===== verify ===== policy = .. CPU_FREQ: freq_target, policy = 0x810ed980, freq=432000, relation=0 new_index = 5 ==== div_of_cclk=1 ==== divisors of I:S:P:M = 1:3:3:3 new frequency is 432000 KHz (REG_CPM_CPCCR:0x40612220) : No card detect facilities available mmc0: new high speed SDHC card at address 0260 mmcblk0: mmc0:0260 MS 3932160KiB mmcblk0: p1 p2 p3 p4 JZ mmc0 driver registered JZ mmc1 driver registered register codec 801bbc1c ##### cleared codec reg6 JZ I2S OSS audio driver initialized kjournald starting. Commit interval 5 seconds EXT3-fs: mounted filesystem with ordered data mode. VFS: Mounted root (ext3 filesystem) readonly. Freeing unused kernel memory: 132k freed kjournald starting. Commit interval 5 seconds EXT3-fs: mounted filesystem with ordered data mode. kjournald starting. Commit interval 5 seconds EXT3 FS on mmcblk0p3, internal journal EXT3-fs: mounted filesystem with ordered data mode. drivers/video/jz4750_lcd.c 3002 lcd_a320_flag is 0 CPU_FREQ: freq_target, policy = 0x810ed980, freq=432000, relation=0 new_index = 5 ==== div_of_cclk=1 ==== divisors of I:S:P:M = 1:3:3:3 new frequency is 432000 KHz (REG_CPM_CPCCR:0x40612220) $$$$$ val = 48, REG_17 = 0x90, REG_18 = 0x0a CPU_FREQ: freq_target, policy = 0x810ed980, freq=144000, relation=0 new_index = 3 ==== div_of_cclk=3 ==== divisors of I:S:P:M = 3:6:6:6 enter jz_init_boot_config leave jz_init_boot_config enter jz_scale_divisors… —1— —2— —3— —4— leave jz_scale_divisors… new frequency is 144000 KHz (REG_CPM_CPCCR:0x40614442) udc_pnp_irq—- pnp thread wake up! cable real in! enable phy! 60 1540 0 0 0 cable is usb! enable phy! 60 1540 0 0 0 cable is usb! enable phy! 70 1540 0 0 0 cable is usb! enable phy! 60 1540 0 0 0 cable is usb! enable phy! 60 1540 0 0 0 cable is usb! Send udev message: cable=1 old=0 protl=1 old=0 usb cable insert! CPU_FREQ: freq_target, policy = 0x810ed980, freq=432000, relation=0 new_index = 5 ==== div_of_cclk=1 ==== divisors of I:S:P:M = 1:3:3:3 enter jz_init_boot_config leave jz_init_boot_config enter jz_scale_divisors… —1— —2— —3— —4— leave jz_scale_divisors… new frequency is 432000 KHz (REG_CPM_CPCCR:0x40612220) JZ4740 USB Device Controller version: 13-Mar-2008 gadget: File-backed Storage Gadget, version: 7 August 2007 gadget: Number of LUNs=1 g_file_storage gadget-lun0: ro=0, file: /dev/mmcblk0p4 drivers/usb/gadget/jz4740_udc.c 2027 jz_udc_active is 1 gadget: high speed config #1 udc_pnp_irq—- pnp thread wake up! cable real out! Send udev message: cable=0 old=1 protl=0 old=1 usb cable remove! drivers/char/jzchar/udc_hotplug.c 343 jz_udc_active is 0 drivers/video/jz4750_lcd.c 3002 lcd_a320_flag is 0 CPU_FREQ: freq_target, policy = 0x810ed980, freq=432000, relation=0 new_index = 5 ==== div_of_cclk=1 ==== divisors of I:S:P:M = 1:3:3:3 new frequency is 432000 KHz (REG_CPM_CPCCR:0x40612220) $$$$$ val = 48, REG_17 = 0x90, REG_18 = 0x0a drivers/video/jz4750_lcd.c 3002 lcd_a320_flag is 0 |
А как была получена системная информация?
Если я правильно помню, то обычным SH-скриптом с расширением *.dge, скрипт создавался на карте памяти а потом запускался через встроенный файловый менеджер. Внутри скрипта было что-то вроде dmesg > dmesg.log, остальное было в таком же роде.
О как! Спасибо
Таким образом можно и консоль через usb соорудить