Перейти к содержанию
    

Allwinner T113-S3 SPI NAND создание разделов файловой системы

Доброго времени!

Разбираюсь с Allwinner T113-S3 cделал следующие шаги.

1) Собрал бутлоадер awboot, прошил приложением XFEL на SPI NAND по адресу 0;

2) Загрузил приложением XFEL по адресу 0x40000 дерево устройств(DTB);

3) Загрузил приложением XFEL по адресу 0x80000 образ операционной системы Linux;

После этих действий awboot копирует DTB, копирует Linux и отдает управление операционной системе.

Загрузка останавливается на "waiting for root device /dev/mmcblk0p2", пробовал вместо "mmcblk0p2" выбирать "devspi0.0", "spinand" эффект один и тот же.

После этого собрал образ initrd.img с разделами файловой системы... но вот как создать диск на SPI NAND не могу понять...

Кто то может знает как создать диск с rootfs на SPI NAND  не выпаивая микросхему с платы.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

33 минуты назад, AlexLir сказал:

как создать диск с rootfs на SPI NAND  не выпаивая микросхему с платы.

А если выпаяете, чем это поможет?))

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

В 19.08.2024 в 12:56, mantech сказал:

А если выпаяете, чем это поможет?))

Вдруг начнут предлагать выпаять и прошить каким ни будь программатором)))

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

17 минут назад, AlexLir сказал:

Вдруг начнут предлагать выпаять и прошить каким ни будь программатором)))

Ну эт да, тут могут, притом, что программатор там уже есть в виде программы xfel)))

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

1 hour ago, AlexLir said:

как создать диск с rootfs на SPI NAND  не выпаивая микросхему с платы.

1. Создать rootfs в виде файла
2. Подключить провода к SPI (5 достаточно), зажать RESET в 0 (можно 6-м проводом) и прошить любым из 100500 способов.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

В 19.08.2024 в 14:08, x893 сказал:

1. Создать rootfs в виде файла
2. Подключить провода к SPI (5 достаточно), зажать RESET в 0 (можно 6-м проводом) и прошить любым из 100500 способов.

1. создал файл initrd.img - это ведь вроде то что нужно?

2. хотелось бы по USB ни чего не подпаивая... но если других способов нет тогда придется подпаивать.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Так у него же есть режим BOOT (кнопкой) и USB0. С проводами - это когда уже ничего не помогает.

Вот же

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Кнопкой BOOT(FEL) пользуюсь, загружал все через xfel.

Я пробовал зашивать initrd.img через xfel, точно не помню по какому адресу, ни чего не заработало.

И непонятно в файл .dtb что нужно выбирать: "mmcblk0p2", "devspi0.0", "spinand"

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

On 8/19/2024 at 10:22 AM, AlexLir said:

Загрузка останавливается на "waiting for root device /dev/mmcblk0p2", пробовал вместо "mmcblk0p2" выбирать "devspi0.0", "spinand" эффект один и тот же.

потому что nand это не блочное устройство как mmc а устройство mtd

http://www.linux-mtd.infradead.org/index.html

нужно использовать специальные фс. Надо описатьть разделы ядру, например через DT

Quote

&spi0 {
    pinctrl-0 = <&spi0_pins>;
    pinctrl-names = "default";
    status = "okay";

    flash@0 {
        compatible = "spi-nand";
        reg = <0>;

        partitions {
            compatible = "fixed-partitions";
            #address-cells = <1>;
            #size-cells = <1>;
            
            partition@0 {
                label = "awboot";
                reg = <0x00000000 0x00020000>;  /* 128K */
            };
                
            partition@20000 {
                label = "dtb";
                reg = <0x00020000 0x00020000>;  /* 128k */
            };
                
            partition@40000 {
                label = "kernel";
                reg = <0x00040000 0x00800000>;  /* 8MB */
            };
                
            partition@840000 {
                label = "filesystem";
                reg = <0x00840000 0x077c0000>;
            };
        };
    };
};

 

и указать ему где находится корневая фс, например через DT

Quote

    chosen {
        stdout-path = "serial3:115200n8";
        bootargs = "mem=128M cma=48M console=ttyS3,115200 earlyprintk=sunxi-uart,0x2500c00 ubi.mtd=3 root=ubi0_0 rootfstype=ubifs rootwait";
    };

 

Имидж фс можно сделать в buildroot/yocto, можно вручную, например ubifs

Quote

printf "create ubi.cfg         "
cat << EOF > ubi.cfg
[ubifs]
mode=ubi
vol_id=0
vol_type=dynamic
vol_name=rootfs
vol_alignment=1
vol_flags=autoresize
image=rootfs.ubifs
EOF

printf "make rootfs.ubifs      "
mkfs.ubifs -d "$MNTDIR" -o rootfs.ubifs -e 0x1f000 -c 958 -m 0x800 -x lzo -F

printf "make rootfs.ubi        "
ubinize -o rootfs.ubi -p 0x20000 -m 0x800 ubi.cfg

записать обычным xfel

Quote

xfel spinand erase 0x840000 0x77c0000
xfel spinand write 0x840000 rootfs.ubi

 

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

On 8/19/2024 at 12:55 PM, AlexLir said:

вечером попробую что из этого выйдет

через buildroot проще делать, для примера описание имидж корневой для той же флешки

Quote

[*] ubi image containing an ubifs root filesystem
(0x20000) physical eraseblock size
(0)   sub-page size
[ ]   Use custom config file
()    Additional ubinize options
-*- ubifs root filesystem
(0x1f000) logical eraseblock size
(0x800) minimum I/O unit size
(958) maximum logical eraseblock count
ubifs runtime compression (lzo)  --->
Compression method (no compression)  --->
(-F)  Additional mkfs.ubifs options

 

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

1 час назад, sasamy сказал:

потому что nand это не блочное устройство как mmc

А что ему мешает быть блочным? Там те же сектора, сстирание блока правда побольше, чем в MMC, если не исп. выравнивание износа, а в slc nand это и нафиг не надо, то эт по сути та же сд карта..

Изменено пользователем mantech

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Описал разделы ядра как рекомендовали.

Указал где находится корневая FS.

Зависать на ожидании не стал, теперь паника ядра, так как я не загрузил файловую систему.

Скачал buildroot, скомпилировал а дальше...

Пока не понял как через buildroot img корневой папки сделать. Эти команды в консоль надо вводить, не могли бы объяснить)))

Изменено пользователем AlexLir

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Вроде файл rootfs.ubi сделал по адресу прошил, но все равно паника ядра...

Вот лог что происходит.

Спойлер

[    1.099613] ALSA device list:
[    1.102596]   No soundcards found.
[    1.106456] platform regulatory.0: Direct firmware load for regulatory.db failed with error -2
[    1.115093] cfg80211: failed to load regulatory.db
[    1.120472] VFS: Cannot open root device "ubi0_0" or unknown-block(0,0): error -19
[    1.128118] Please append a correct "root=" boot option; here are the available partitions:
[    1.136495] Kernel panic - not syncing: VFS: Unable to mount root fs on unknown-block(0,0)
[    1.144762] CPU: 0 PID: 1 Comm: swapper/0 Not tainted 6.0.1 #22
[    1.150686] Hardware name: Generic DT based system
[    1.155486]  unwind_backtrace from show_stack+0x10/0x14
[    1.160730]  show_stack from dump_stack_lvl+0x40/0x4c
[    1.165795]  dump_stack_lvl from panic+0x104/0x2f8
[    1.170596]  panic from mount_block_root+0x164/0x1fc
[    1.175573]  mount_block_root from prepare_namespace+0x9c/0x18c
[    1.181504]  prepare_namespace from kernel_init+0x18/0x12c
[    1.187000]  kernel_init from ret_from_fork+0x14/0x2c
[    1.192060] Exception stack(0xc8815fb0 to 0xc8815ff8)
[    1.197115] 5fa0:                                     00000000 00000000 00000000 00000000
[    1.205294] 5fc0: 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
[    1.213473] 5fe0: 00000000 00000000 00000000 00000000 00000013 00000000
[    1.220092] CPU1: stopping
[    1.222802] CPU: 1 PID: 0 Comm: swapper/1 Not tainted 6.0.1 #22
[    1.228715] Hardware name: Generic DT based system
[    1.233500]  unwind_backtrace from show_stack+0x10/0x14
[    1.238727]  show_stack from dump_stack_lvl+0x40/0x4c
[    1.243778]  dump_stack_lvl from do_handle_IPI+0xec/0x124
[    1.249176]  do_handle_IPI from ipi_handler+0x18/0x20
[    1.254226]  ipi_handler from handle_percpu_devid_irq+0x78/0x134
[    1.260233]  handle_percpu_devid_irq from generic_handle_domain_irq+0x28/0x38
[    1.267366]  generic_handle_domain_irq from gic_handle_irq+0x74/0x88
[    1.273724]  gic_handle_irq from generic_handle_arch_irq+0x34/0x44
[    1.279903]  generic_handle_arch_irq from call_with_stack+0x18/0x20
[    1.286171]  call_with_stack from __irq_svc+0x98/0xb0
[    1.291222] Exception stack(0xc8849f70 to 0xc8849fb8)
[    1.296269] 9f60:                                     00000005 00000000 00001209 c0115ea0
[    1.304437] 9f80: c103ee80 00000001 c0b04f0c c0b04f54 4000406a 410fc075 00000000 00000000
[    1.312604] 9fa0: c0b03d80 c8849fc0 c010722c c0107230 60000013 ffffffff
[    1.319209]  __irq_svc from arch_cpu_idle+0x38/0x3c
[    1.324089]  arch_cpu_idle from do_idle+0x110/0x13c
[    1.328967]  do_idle from cpu_startup_entry+0x18/0x1c
[    1.334016]  cpu_startup_entry from secondary_start_kernel+0x11c/0x124
[    1.340540]  secondary_start_kernel from 0x401015a0
[    1.345599] ---[ end Kernel panic - not syncing: VFS: Unable to mount root fs on unknown-block(0,0) ]---

 

Изменено пользователем AlexLir

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

On 8/19/2024 at 9:11 PM, AlexLir said:

Вот лог что происходит.

по такому кусочку лога ничего не понятно но скорей всего не включено в ядре что-то, грепните конфиг вашего ядра

Quote

linux-custom$ grep "NAND" .config
# NAND
CONFIG_MTD_NAND_CORE=y
# CONFIG_MTD_ONENAND is not set
# CONFIG_MTD_RAW_NAND is not set
CONFIG_MTD_SPI_NAND=y
CONFIG_MTD_NAND_ECC=y
CONFIG_MTD_NAND_ECC_SW_HAMMING=y
CONFIG_MTD_NAND_ECC_SW_HAMMING_SMC=y
CONFIG_MTD_NAND_ECC_SW_BCH=y
# CONFIG_MTD_NAND_ECC_MXIC is not set
# end of NAND

 

Quote

linux-custom$ grep "UBI" .config
CONFIG_TCP_CONG_CUBIC=y
CONFIG_MTD_UBI=y
CONFIG_MTD_UBI_WL_THRESHOLD=4096
CONFIG_MTD_UBI_BEB_LIMIT=20
# CONFIG_MTD_UBI_FASTMAP is not set
# CONFIG_MTD_UBI_GLUEBI is not set
# CONFIG_MTD_UBI_BLOCK is not set
CONFIG_UBIFS_FS=y
# CONFIG_UBIFS_FS_ADVANCED_COMPR is not set
CONFIG_UBIFS_FS_LZO=y
CONFIG_UBIFS_FS_ZLIB=y
CONFIG_UBIFS_FS_ZSTD=y
# CONFIG_UBIFS_ATIME_SUPPORT is not set
CONFIG_UBIFS_FS_XATTR=y
CONFIG_UBIFS_FS_SECURITY=y
# CONFIG_UBIFS_FS_AUTHENTICATION is not set

и чтобы два раза не вставать - скиньте потом полный лог загрузки ядра например на pastebin com

Изменено пользователем sasamy

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
К сожалению, ваш контент содержит запрещённые слова. Пожалуйста, отредактируйте контент, чтобы удалить выделенные ниже слова.
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...