AlexLir 0 19 августа Опубликовано 19 августа · Жалоба Доброго времени! Разбираюсь с 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 не выпаивая микросхему с платы. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
mantech 52 19 августа Опубликовано 19 августа · Жалоба 33 минуты назад, AlexLir сказал: как создать диск с rootfs на SPI NAND не выпаивая микросхему с платы. А если выпаяете, чем это поможет?)) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
AlexLir 0 19 августа Опубликовано 19 августа · Жалоба В 19.08.2024 в 12:56, mantech сказал: А если выпаяете, чем это поможет?)) Вдруг начнут предлагать выпаять и прошить каким ни будь программатором))) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
mantech 52 19 августа Опубликовано 19 августа · Жалоба 17 минут назад, AlexLir сказал: Вдруг начнут предлагать выпаять и прошить каким ни будь программатором))) Ну эт да, тут могут, притом, что программатор там уже есть в виде программы xfel))) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
x893 60 19 августа Опубликовано 19 августа · Жалоба 1 hour ago, AlexLir said: как создать диск с rootfs на SPI NAND не выпаивая микросхему с платы. 1. Создать rootfs в виде файла 2. Подключить провода к SPI (5 достаточно), зажать RESET в 0 (можно 6-м проводом) и прошить любым из 100500 способов. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
AlexLir 0 19 августа Опубликовано 19 августа · Жалоба В 19.08.2024 в 14:08, x893 сказал: 1. Создать rootfs в виде файла 2. Подключить провода к SPI (5 достаточно), зажать RESET в 0 (можно 6-м проводом) и прошить любым из 100500 способов. 1. создал файл initrd.img - это ведь вроде то что нужно? 2. хотелось бы по USB ни чего не подпаивая... но если других способов нет тогда придется подпаивать. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
x893 60 19 августа Опубликовано 19 августа · Жалоба Так у него же есть режим BOOT (кнопкой) и USB0. С проводами - это когда уже ничего не помогает. Вот же Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
AlexLir 0 19 августа Опубликовано 19 августа · Жалоба Кнопкой BOOT(FEL) пользуюсь, загружал все через xfel. Я пробовал зашивать initrd.img через xfel, точно не помню по какому адресу, ни чего не заработало. И непонятно в файл .dtb что нужно выбирать: "mmcblk0p2", "devspi0.0", "spinand" Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
sasamy 0 19 августа Опубликовано 19 августа · Жалоба 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 изначально вам нужно разобраться с геометрией вашей флешки чтобы правильные разделы создать и фс Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
AlexLir 0 19 августа Опубликовано 19 августа · Жалоба Спасибо за развернутый ответ, вечером попробую что из этого выйдет. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
sasamy 0 19 августа Опубликовано 19 августа · Жалоба 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 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
mantech 52 19 августа Опубликовано 19 августа (изменено) · Жалоба 1 час назад, sasamy сказал: потому что nand это не блочное устройство как mmc А что ему мешает быть блочным? Там те же сектора, сстирание блока правда побольше, чем в MMC, если не исп. выравнивание износа, а в slc nand это и нафиг не надо, то эт по сути та же сд карта.. Изменено 19 августа пользователем mantech Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
AlexLir 0 19 августа Опубликовано 19 августа (изменено) · Жалоба Описал разделы ядра как рекомендовали. Указал где находится корневая FS. Зависать на ожидании не стал, теперь паника ядра, так как я не загрузил файловую систему. Скачал buildroot, скомпилировал а дальше... Пока не понял как через buildroot img корневой папки сделать. Эти команды в консоль надо вводить, не могли бы объяснить))) Изменено 19 августа пользователем AlexLir Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
AlexLir 0 19 августа Опубликовано 19 августа (изменено) · Жалоба Вроде файл 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) ]--- Изменено 19 августа пользователем AlexLir Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
sasamy 0 19 августа Опубликовано 19 августа (изменено) · Жалоба 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 Изменено 19 августа пользователем sasamy Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться