Сайт | Скачать | Видео | Wiki

Автор Тема: Запуск Android с флэшки  (Прочитано 24465 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Gennadyi

  • Пользователь
  • **
  • Сообщений: 80
  • Репутация: +0/-0
Re: Запуск Android с флэшки
« Ответ #75 : 15 Март 2020, 14:22:48 »
Судя по
Цитата: balbes150 от 04 Март 2020, 15:30:53
на AML не используется внешний u-boot (если конечно самому руками его не стереть из eMMC)
в зависимости от железа

Как понимать - "внешний" ? На SD - это какой ?
Про железо я уже писал - T95 на s905, для линукса подошел meson-g12b-odroid-n2.dtb

Оффлайн Gennadyi

  • Пользователь
  • **
  • Сообщений: 80
  • Репутация: +0/-0
Re: Запуск Android с флэшки
« Ответ #76 : 15 Март 2020, 14:52:17 »
Вот это в логе загрузки что значит ?
Цитата
Load fip header from SD, src: 0x0000c200, des: 0x01400000, size: 0x000000b0
Load bl30 from SD, src: 0x00010200, des: 0x01000000, size: 0x0000a9b0
Sending bl30...........................................OK.
Run bl30...
Load bl301 from SD, src: 0x0001c200, des: 0x01000000, size: 0x00001c20
Wait bl30...Done
Sending bl301........OK.
Run bl301...
Load bl31 from SD
, src: 0x00020200, des: 0x10100000, size: 0x00011130

Онлайн sfs

  • Администратор
  • Ветеран
  • *****
  • Сообщений: 33991
  • Репутация: +231/-0
    • PuppyRus-A
Re: Запуск Android с флэшки
« Ответ #77 : 15 Март 2020, 18:21:07 »
Как понимать - "внешний" ? На SD - это какой ?
насколько я понял - это внешний

Оффлайн Gennadyi

  • Пользователь
  • **
  • Сообщений: 80
  • Репутация: +0/-0
Re: Запуск Android с флэшки
« Ответ #78 : 15 Март 2020, 20:17:43 »
насколько я понял - это внешний
Что-то мне кажется, что все сложнее и проще одновременно !
если нет никакой внешней ( по отношению к процессору) памяти с ПО (внутр флеш, SD или еще что-то) то внутренняя (вшитая в чип) программа постоянно опрашивает внешние устройства:
Цитата
GXBB:BL1:08dafd:0a8993;FEAT:EDFC318C;POC:3;RCY:0;EMMC:0;READ:0;CHK:F3;SD:800;USB:8;LOOP:1;
если она найдет, то
Цитата
GXBB:BL1:08dafd:0a8993;FEAT:EDFC318C;POC:3;RCY:0;EMMC:0;READ:0;CHK:F3;SD:0;READ:0;CHK:0;
Спойлер
Цитата
no sdio debug board detected
BL2 Built : 15:24:17, Oct 28 2015.
gxb g5d0d038 - xiaobo.gu@droid05


Load fip header from SD, src: 0x0000c200, des: 0x01400000, size: 0x000000b0
Load bl30 from SD, src: 0x00010200, des: 0x01000000, size: 0x0000a9b0
Sending bl30...........................................OK.
Run bl30...
Load bl301 from SD, src: 0x0001c200, des: 0x01000000, size: 0x00001c20
Wait bl30...Done
Sending bl301........OK.
Run bl301...
Load bl31 from SD
, src: 0x00020200, des: 0x10100000, size: 0x00011130
--- UART initialized after reboot ---
[Reset cause: unknown]
[Image: unknown, amlogic_v1.1.3048-cfe1053 2015-12-04 16:31:11 xing.xu@droid05]
bl30: check_permit, count is 1
bl30: check_permit: ok!
chipid: ef be ad deLoad bl33 from SD, src: 0x00034200, des: 0x01000000, size: 0x0009ec90
 d f0 ad ba ef be ad de not ES chip
efuse init ops = 13
efuse init hdcp = c, cf9=7
[0.367469 Inits done]
secure task start!
high task start!
low task start!
NOTICE:  BL3-1: v1.0(debug):02cce1e
NOTICE:  BL3-1: Built : 15:47:40, Nov  6 2015
INFO:    BL3-1: Initializing runtime services
INFO:    BL3-1: Preparing for EL3 exit to normal world
INFO:    BL3-1: Next image address = 0x1000000
INFO:    BL3-1: Next image spsr = 0x3c9
[свернуть]
а дальше это уже uBoot
Цитата
U-Boot 2015.01-g685bb0b-dirty (Jan 08 2016 - 16:40:53)
DRAM:  2 GiB
и в логе uBoot у меня
Цитата
mmc read lba=0x14000, blocks=0x400
      Amlogic multi-dtb tool
      Cannot find legal dtb!
start dts,buffer=0000000073ec8d70,dt_addr=0000000073ec8d70
get_partition_from_dts: FDT_ERR_BADMAGIC
!!!!get dts FAILED
mmc get partition error!
get partition info failed !!

Using default environment
а при нормальной загрузке андроида так
Спойлер
Цитата
mmc read lba=0x14000, blocks=0x400
      Amlogic multi-dtb tool
      Multi dtb detected
      Multi dtb tool version: v2 .
      Support 2 dtbs.
        aml_dt soc: gxl platform: sx6b6x variant: 1g
        dtb 0 soc: gxl   plat: sx6b6x   vari: 1g
        dtb 1 soc: gxl   plat: sx6b6x   vari: 2g
      Find match dtb: 0
start dts,buffer=0000000033ecd270,dt_addr=0000000033ecda70
parts: 11
00:      logo   0000000002000000 1
01:  recovery   0000000002000000 1
02:       rsv   0000000000800000 1
03:       tee   0000000000800000 1
04:     crypt   0000000002000000 1
05:      misc   0000000002000000 1
06: instaboot   0000000020000000 1
07:      boot   0000000002000000 1
08:    system   0000000050000000 1
09:     cache   0000000040000000 2
10:      data   ffffffffffffffff 4
get_dtb_struct: Get emmc dtb OK!
overide_emmc_partition_table: overide cache
[mmc_get_partition_table] skip partition cache.
Partition table get from SPL is :
        name                        offset              size              flag
===================================================================================
   0: bootloader                         0            400000                  0
   1: reserved                     2400000           4000000                  0
   2: cache                        6c00000          40000000                  2
   3: env                         47400000            800000                  0
   4: logo                        48400000           2000000                  1
   5: recovery                    4ac00000           2000000                  1
   6: rsv                         4d400000            800000                  1
   7: tee                         4e400000            800000                  1
   8: crypt                       4f400000           2000000                  1
   9: misc                        51c00000           2000000                  1
  10: instaboot                   54400000          20000000                  1
  11: boot                        74c00000           2000000                  1
  12: system                      77400000          50000000                  1
  13: data                        c7c00000         10a400000                  4
mmc read lba=0x12000, blocks=0x2
mmc read lba=0x12002, blocks=0x2
mmc_read_partition_tbl: mmc read partition OK!
eMMC/TSD partition table have been checked OK!
[свернуть]

« Последнее редактирование: 15 Март 2020, 20:28:39 от Gennadyi »

Оффлайн Gennadyi

  • Пользователь
  • **
  • Сообщений: 80
  • Репутация: +0/-0
Re: Запуск Android с флэшки
« Ответ #79 : 16 Март 2020, 16:09:22 »
Общий ликбез по eMMC/moviNAND проблемам. ( в разработке )
Цитата
eMMC память по подключению мало отличается от простой MMC карты , известны даже случаи успешной подмены чипа eMMC обычной SD-MMC картой *

Оффлайн Gennadyi

  • Пользователь
  • **
  • Сообщений: 80
  • Репутация: +0/-0
Re: Запуск Android с флэшки
« Ответ #80 : 16 Март 2020, 16:19:59 »
What exactly happened before entering u-boot?
Цитата
Hi,

first, the SoC loads the BL1 (first lever bootloader) from maskrom, then depending on state described by the flowchart in the S912 datasheet, BL1 loads and authenticates BL2 from external storage.

BL2 is mainly in charge of setting up DDR and clocks, then it loads and authenticates BL30 from the same storage as itself.

BL30 is in charge of various things like setting up (undisclosed) security stuff and loading the firmware of the cortex-M3 core that handles power-management and CPU cores DVFS (also known as SCPI in ARM terminology).

BL2 also loads/authenticates BL31, also called the secure monitor, running in trustzone and in charge of providing secure services to the main OS, and finally BL33, which is u-boot.

Оффлайн Gennadyi

  • Пользователь
  • **
  • Сообщений: 80
  • Репутация: +0/-0

Оффлайн balbes150

  • Ветеран
  • *****
  • Сообщений: 599
  • Репутация: +5/-0
Re: Запуск Android с флэшки
« Ответ #82 : 16 Март 2020, 17:58:34 »
на s905, для линукса подошел meson-g12b-odroid-n2.dtb
Не верю .... g12b = s922x
s905 и s922x это разные чипы, с не совместимыми DTB.

Оффлайн Gennadyi

  • Пользователь
  • **
  • Сообщений: 80
  • Репутация: +0/-0
Re: Запуск Android с флэшки
« Ответ #83 : 16 Март 2020, 19:20:14 »
Не верю .... g12b = s922x
И это Правильно !!!
Цитата
s905 и s922x это разные чипы, с не совместимыми DTB.
вот этот dtb :
meson-gxbb-p201.dtb


Онлайн sfs

  • Администратор
  • Ветеран
  • *****
  • Сообщений: 33991
  • Репутация: +231/-0
    • PuppyRus-A
Re: Запуск Android с флэшки
« Ответ #85 : 30 Октябрь 2020, 09:48:22 »
Запуск ОС Андроид с SD-карты для устройств на процессоре Amlogic S912
Практически получилось? Хорошо бы более пошаговую инструкцию...
Я правильно понял - любую прошивку, которая будет работать с внутреннего носителя - так не запустить?

Оффлайн Gennadyi

  • Пользователь
  • **
  • Сообщений: 80
  • Репутация: +0/-0
Re: Запуск Android с флэшки
« Ответ #86 : 07 Ноябрь 2020, 11:07:21 »
Не пробовал. Надо разбираться, а  у меня опыта маловато :( Может более опытные товарищи что подскажут :) !!!
на 4pda процесс идет - https://4pda.ru/forum/index.php?showtopic=998873&view=findpost&p=101318231
Цитата
На s905x есть прошивка андроид 8 с архитектурой arm64 aonly .Она находится на сайте freaktab.Такая же архитектура arm64 и у s912. Из неё можна сделать порт на новее андроид .Я лично делал из неё и андроид 10 .Но там по мелочам не доделовал а так работал.Если хотите улучшить посмотрите здесь прошивки с архитектурой arm64 aonly.Ещё сделал андроид 11 но с архитектурой a64 ab для s905x.Но там только начало нет gapps и браузер не скачивает приложения и нет twrp.Вот в таком состоянии пока но будет лучше.

https://4pda.ru/forum/index.php?showtopic=998873&view=findpost&p=101363461
Цитата
Сделал порт прошивки XVortex Android TV 9. v2.3.0 для S912 для запуска с SD-карты.
Особо ее пока не тестировал, но первое впечатление - это отличная ATV9.
Благодарим * XVortex.
Проверялась на KM8P 2G/8G. Из недостатков обнаружено следующее:
- Не работает пульт,
- Нет Wi-Fi.
Остальное работает.
Порядок установки и запуска прошивки с SD-карты описан в этом сообщении, раздел "Инструкция по установке". Или смотрим описание из архива прошивки.
 #

У меня 905 чип.

Оффлайн Gennadyi

  • Пользователь
  • **
  • Сообщений: 80
  • Репутация: +0/-0
Re: Запуск Android с флэшки
« Ответ #87 : 07 Ноябрь 2020, 11:15:12 »
тут прошивка и инструкция для 912 - https://4pda.ru/forum/index.php?showtopic=998873&view=findpost&p=100366180

Оффлайн Gennadyi

  • Пользователь
  • **
  • Сообщений: 80
  • Репутация: +0/-0
Re: Запуск Android с флэшки
« Ответ #88 : 07 Ноябрь 2020, 11:30:49 »
Если я правильно понял: главное - правильно задать адреса разделов и остальные параметры

Цитата
#include <string.h>
#include "mmcparts_a9.h"

//int mmc_partition_tbl_checksum_calc(struct partitions *part, int part_num);

void init_parts()
{
    memset(&g_mmcparts, 0, sizeof(struct mmc_partitions_fmt));
    strcpy(g_mmcparts.magic, MMC_PARTITIONS_MAGIC);

    struct partitions logo;
    strcpy(logo.name, "logo");
    logo.size = 0x800000;
    logo.offset = 0x2800000;
    logo.mask_flags = 0x1;

    struct partitions recovery;
    strcpy(recovery.name, "recovery");
    recovery.size = 0x1800000;
    recovery.offset = logo.offset + logo.size;
    recovery.mask_flags = 0x1;

    struct partitions misc;
    strcpy(misc.name, "misc");
    misc.size = 0x800000;
    misc.offset = recovery.offset + recovery.size;
    misc.mask_flags = 0x1;

    struct partitions dtbo;
    strcpy(dtbo.name, "dtbo");
    dtbo.size = 0x800000;
    dtbo.offset = misc.offset + misc.size;
    dtbo.mask_flags = 0x1;

    struct partitions cri_data;
    strcpy(cri_data.name, "cri_data");
    cri_data.size = 0x800000;
    cri_data.offset = dtbo.offset + dtbo.size;
    cri_data.mask_flags = 0x1;

    struct partitions rsv;
    strcpy(rsv.name, "rsv");
    rsv.size = 0x1000000;
    rsv.offset = cri_data.offset + cri_data.size;
    rsv.mask_flags = 0x1;

    struct partitions metadata;
    strcpy(metadata.name, "metadata");
    metadata.size = 0x1000000;
    metadata.offset = rsv.offset + rsv.size;
    metadata.mask_flags = 0x1;

    struct partitions vbmeta;
    strcpy(vbmeta.name, "vbmeta");
    vbmeta.size = 0x200000;
    vbmeta.offset = metadata.offset + metadata.size;
    vbmeta.mask_flags = 0x1;

    struct partitions param;
    strcpy(param.name, "param");
    param.size = 0x1000000;
    param.offset = vbmeta.offset + vbmeta.size;
    param.mask_flags = 0x1;

    struct partitions boot;
    strcpy(boot.name, "boot");
    boot.size = 0x1000000;
    boot.offset = param.offset + param.size;
    boot.mask_flags = 0x1;

    struct partitions tee;
    strcpy(tee.name, "tee");
    tee.size = 0x2000000;
    tee.offset = boot.offset + boot.size;
    tee.mask_flags = 0x1;

    struct partitions vendor;
    strcpy(vendor.name, "vendor");
    vendor.size = 0x14000000;
    vendor.offset = tee.offset + tee.size;
    vendor.mask_flags = 0x1;

    struct partitions odm;
    strcpy(odm.name, "odm");
    odm.size = 0x8000000;
    odm.offset = vendor.offset + vendor.size;
    odm.mask_flags = 0x1;

    struct partitions system;
    strcpy(system.name, "system");
    system.size = 0x62c00000;
    system.offset = odm.offset + odm.size;
    system.mask_flags = 0x1;

    struct partitions product;
    strcpy(product.name, "product");
    product.size = 0x8000000;
    product.offset = system.offset + system.size;
    product.mask_flags = 0x1;

    struct partitions cache;
    strcpy(cache.name, "cache");
    cache.size = 0x46000000;
    cache.offset = product.offset + product.size;
    cache.mask_flags = 0x2;

    struct partitions data;
    strcpy(data.name, "data");
    //data.size = 0xffffffff;
    //data.size = 3470 * SZ_1M;
    data.size = 0xe2c00000;
    data.offset = cache.offset + cache.size;
    data.mask_flags = 0x4;

    /*struct partitions ;
    strcpy(.name, "");
    .size = 0x800000;
    .offset = 0;
    .mask_flags = 0x1;*/

    struct partitions mmc_parts[] = { logo, recovery, misc, dtbo, cri_data, rsv,
   metadata, vbmeta, param, boot, tee, vendor, odm, system, product, cache, data };

    int mmc_parts_count = 17;

    for(int i = 0; i < mmc_parts_count; i++)
    {
   g_mmcparts.partitions = mmc_parts;
    }
    g_mmcparts.part_num = mmc_parts_count;
    g_mmcparts.checksum = mmc_partition_tbl_checksum_calc(mmc_parts, mmc_parts_count);
}

int mmc_partition_tbl_checksum_calc(struct partitions *part, int part_num)
{
    int i, j;
    uint32_t checksum = 0, *p;

    for (i = 0; i < part_num; i++) {
   p = (uint32_t *)part;

   for (j = sizeof(struct partitions)/sizeof(checksum);
      j > 0; j--) {
       checksum += *p;
       p++;
   }
    }

    return checksum;
}

Онлайн sfs

  • Администратор
  • Ветеран
  • *****
  • Сообщений: 33991
  • Репутация: +231/-0
    • PuppyRus-A
Re: Запуск Android с флэшки
« Ответ #89 : 08 Ноябрь 2020, 08:03:13 »
тут прошивка и инструкция для 912
У меня такого нет. Переадаптировать под другие не чувствую в себе сил
Главный вопрос - зачем  запускать андроид с флэшки : чтобы легко протестировать разные прошивки
Чтобы не заморачиваться с перешивкой, чреватой кирпичом
Если под флэшку нужны только специально подготовленные под определенные чипы андроиды  - теряется смысл