Ritmix rzx-50 дослідження стандартної прошивки - opendingux development for jz4755 devices

Стандартні прошивки Ritmix RZX-50 і Dingoo A380 засновані на Dingux для Dingoo A320, в основі якої, в свою чергу, лежить ядро ​​linux 2.6.24.3 для SoC JZ4740 від компанії Ingenic.

Однак, вихідні коди ядра linux і uC / OS-II надаються тільки для т.зв. референсних плат, які часто мають мало спільного з кінцевим продуктом. Фабрики, що виробляють плеєри або консолі на основі SoC Ingenic отримують від неї потрібні вихідні коди, які потім модифікує для конкретного виробу. Ось ці самі модифікації дуже рідко публікуються або викладаються на сайтах.

Це вилилося зокрема в те, що вийшли лише дві версії ядра 2.6.24.3 і 2.6.31.3 і з тих пір не оновлювалися взагалі. У головну гілку ядра код Ingenic не був прийнятий.

Dingux для Dingoo A320

Dingux з'явився, коли в руки іспанському інженеру-ентузіасту потрапила консоль Dingoo A320 на базі SoC JZ4740 і він вирішив спробувати запустити на ній повноцінний linux. За допомогою вихідних кодів від Ingenic і реверс-інженеринг завантажувача з утиліти анбріка йому вдалося порівняно швидко створити діючий дистрибутив, про що докладно описувалося в його блозі. Вихідні тексти ядра linux 2.6.24.3, buildroot для збірки кореневої файлової системи, а також завантажувач були викладені тут.

Для спрощення була реалізована схема з подвійним завантаженням (dualboot), при якій зберігалася оригінальна операційна система на основі UС / OS-II, а Dingux (ядро і rootfs) розташовувалася на зовнішньої SD-карті прямо на розділі FAT32. При включенні за замовчуванням вантажилася оригінальна прошивка, при включенні з затиснутим SELECT - Dingux. Модифікований завантажувач монтував SD-карту на / boot, вантажив з неї ядро, далі монтував образ файлової системи rootfs, також монтуючи папку local SD-карти на / boot / local (симлінк / usr / local). Таким чином, додатковий софт розміщувався в папці local на SD-карті. Недоліком цієї схеми була неможливість підключення Dingoo як зовнішнього накопичувача, тому що rootfs розташовувався на FAT32. Замість цього був постійно включений режим usb-ethernet, що дозволяло з'єднуватися з Dingoo по telnet.

Слід зазначити, що ядро ​​Dingux в повній мірі успадкувало недоліки ядра Ingenic, які були посилені недостатньо грамотним портированием софта з іншого консолі подібного класу - GP2X. Програмісти, які звикли обходити недоліки linux для GP2X прямим доступом до залозу, перенесли свій досвід на Dingoo, в результаті багато програм намагалися звертатися до пам'яті пристрою безпосередньо через / dev / mem, наприклад, для зчитування стану кнопок або підвищення робочої частоти процесора, що робило їх непрацездатними на SoC, відмінних від JZ4740.

Цим пояснюється низька сумісність програм Dingux'а Dingoo A320 c Dingux'ом Dingoo A380 і Ritmix RZX-50 (якщо не враховувати різні дозволи екранів).

Dingux для Dingoo A380 і Ritmix RZX-50

При розробці прошивки для Dingoo A380 і Ritmix RZX-50 була запозичена rootfs від Dingoo A320 без будь-яких змін. Однак, схема розташування файлів на FAT розділі не годилася для комерційного використання, тому були внесені наступні зміни: тепер коренева файлова система rootfs розташовується на своєму власному розділі ext3, також в окремі розділи виділені сторонній софт (appfs), настройки програм (configfs), а також файли користувача (VFAT).

Структура розділів прошивки Ritmix RZX-50

Як завантажувача використовується U-Boot 1.1.6 з модифікаціями від Ingenic. Тексти програм і патчі доступні тут.

Виробник Dingoo A380 і Ritmix RZX-50 додав також свої зміни, точної інформації про яких немає. Імовірно, використовується конфігурація U-Boot для плати CETUS, з додаванням ініціалізації LCD і виведенням на екран логотипу Dingoo Technology або Ritmix.

Додаткове дослідження завантажувача Ritmix RZX-50 описано в цій статті. Подібного розбору завантажувача Dingoo A380 швидше за все не існує.

У файлі mbr-uboot-msc.bin є наступні параметри запуску ядра і самого U-Boot:

Функція recovery по факту не використовується, тому що цей розділ при прошивці Ritmix RZX-50 залишено порожнім.

Об'єднане ядро ​​з фіксами для обох консолей тут.

Нестандартні пристрої та інтерфейси:

Коренева файлова система rootfs.ext3

Завантажувальний скрипт розташований в / etc / inittab; з нього викликається скрипт завантаження оболонки (сама оболонка в appfs.ext3).

/ Usr / local / sbin / main (прошивка 1.0027)

/ Etc / main (прошивка 1.5009)

Тут видно, що змінна HOME вказує на каталог, який доступний тільки для читання.


This work is licensed under a Creative Commons Attribution-ShareAlike 3.0 Unported License.