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

Доброго времени!
Необходимо переехать с uSD на SPI-NAND
в настройках тины (sys_config.fex) изменил тип носителя на spi-nand:
 

[target]
storage_type    = 5

пересобрал. Впрямую использовать полученный образ не получается, BROM не воспринимает его как валидный, т.к. нет в нём eGON.BT0
образ этот только фениксом можно прошить, а он только с uSD умеет.
Ладно, полез смотреть, что там было сделано в плане начального загрузчика. Ура! есть boot0_nand_sun8iw20p1.bin, и в нём даже вполне есть в нужном месте eGON.BT0
Нашёл на просторах калькулятор контрольной суммы -- даже совпадает
прошил его xfel по нулевому адресу spi-nand... и тишина. По идее, в самом начале загрузчик должен хоть что-то сказать:
 

static void print_commit_log(void)
{
        printf("HELLO! BOOT0 is starting!\n");
        printf("BOOT0 commit : %s\n", BT0_head.hash);
        sunxi_set_printf_debug_mode(BT0_head.prvt_head.debug_mode, 0);
}

но не говорит. Просто тишина в консоли (т.е. BROM не отключает USB-FEL, устройство так и висит в системе, но уже проосто перестаёт отвечать)
Сам файл достаточно большой, кстати, для SRAM A1 (32К)
в общем, до u-boot, а тем более ядра и rootfs ещё топать и топать)

Куда можно посмотреть, что проверить?
 

boot0_nand_sun8iw20p1.bin

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


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

11 минут назад, toweroff сказал:

прошил его xfel по нулевому адресу spi-nand... и тишина.

А уверены, что на тех портах выхлоп слушаете?

11 минут назад, toweroff сказал:

Сам файл достаточно большой, кстати, для SRAM A1 (32К)
в общем, до u-boot, а тем более ядра и rootfs ещё топать и топать)

Очевидно, что не для той платформы этот бинарь, тут строго до 32Кб. Есть с комбинированным убутом в одном файле, но он под 300к

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

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


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

12 минут назад, mantech сказал:

А уверены, что на тех портах выхлоп слушаете?

 

по идее, должен быть уверен, т.к. при загрузке с uSD в консоль вполне себе всё валится. Но проверю на всякий случай
 

14 минут назад, mantech сказал:

Очевидно, что не для той платформы этот бинарь, тут строго до 32Кб. Есть с комбинированным убутом в одном файле, но он под 300к

 

чёртовы китайцы, почему бинарник так раздут, пока не понимаю:
image.thumb.png.11e2006e82fd6451c2c4ff53dbf7286b.png

получается, 96 КБ при старте недоступны?
image.thumb.png.b39a94e2aa4e9d89195e26788abef8ea.png

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


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

29 минут назад, toweroff сказал:

получается, 96 КБ при старте недоступны?

Нет конечно, эти области под ДСП, как я понял, когда он подключен уже из программы.

30 минут назад, toweroff сказал:

почему бинарник так раздут, пока не понимаю:

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

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


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

2 минуты назад, mantech сказал:

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

так сначала BROM его должен разместить по 0x20000 и размером 0xC000, а не может ((
судя по молчанию, проц лежит в хардфолте

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


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

Вот что накопал в spl-pub:
 

/*
 * (C) Copyright 2018
 * Allwinner Technology Co., Ltd. <www.allwinnertech.com>
 * wangwei <wangwei@allwinnertech.com>
 */

#ifndef _SUN8IW20_H
#define _SUN8IW20_H

#define BOOT_PUB_HEAD_VERSION  "3000"
#define CONFIG_ARCH_SUN8IW20
#define CONFIG_ARCH_SUN8IW20P1
#define CONFIG_SUNXI_NCAT_V2
#define CONFIG_DRAM_PARA_V1

/* sram layout*/
#define CONFIG_SYS_SRAM_BASE             (0x20000)
#define CONFIG_SYS_SRAM_SIZE             (0x8000)
#define CONFIG_SYS_SRAMA2_BASE           (0x400000)
#define CONFIG_SYS_SRAMA2_SIZE           (0x20000)
#define CONFIG_SYS_SRAMC_BASE            (0x28000)
#define CONFIG_SYS_SRAMC_SIZE            (128 << 10)

SRAM_BASE/SIZE -- согласен
 

SYS_SRAMA2_BASE -- это DSP0 IRAM
SYS_SRAMA2_SIZE -- неверно, в ДШ 64КБ
SYS_SRAMC_BASE -- неверно. (128<<10)==0x20000 64КБ -- верно, DSP0 IRAM

получается, что память инструкций DSP0 работает после сброса и логически по адресам вполне себе продолжает SRAM A1

image.thumb.png.1f10b2f65770b4ccee94295830e8f401.png

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


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

В другом китайском процессоре я сталкивался с тем что для бута в NAND флеш используются помехоустойчивые коды. Возможно для NAND всегда так, только однажды хранил там бут. Для меня это было неожиданно.

Имеющиеся у меня инструменты записи на NAND не добавляли этот код. Пришлось его добавлять самостоятельно до записи.

После этого мой вторичный бут заработал. Может быть тут с этим тоже придется поработать.

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


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

16 минут назад, uriy сказал:

В другом китайском процессоре я сталкивался с тем что для бута в NAND флеш используются помехоустойчивые коды. Возможно для NAND всегда так, только однажды хранил там бут. Для меня это было неожиданно.

Имеющиеся у меня инструменты записи на NAND не добавляли этот код. Пришлось его добавлять самостоятельно до записи.

После этого мой вторичный бут заработал. Может быть тут с этим тоже придется поработать.

а где почитать про это?

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


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

А чёрт его знает! Мне было негде читать. Документации на встроенный в проц бут не было, но есть исходники вторичного бута.

Стал сравнивать дамп существующей железки и то что у меня скомпилилось. Увидел что через каждые полкилобайта наверно подсунуто еще байт 16. Сейчас не помню размеры.

Оказалось есть масса вариантов ECC для NAND. Гуглятся по nand ecc algorithm. Мне подошел рекомендованный самсунгом.

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


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

16 часов назад, mantech сказал:

Нет конечно, эти области под ДСП, как я понял, когда он подключен уже из программы.

загрузился в FEL
попытки записи в область DSP0 IRAM вполне себе успешные.
вычитал все 96КБ оттуда (т.е. SRAM A1 + DSP0 IRAM)
там BROM что ли? Ибо spinand стёр всю (128М)

total_sram.bin

4 минуты назад, uriy сказал:

А чёрт его знает! Мне было негде читать. Документации на встроенный в проц бут не было, но есть исходники вторичного бута.

Стал сравнивать дамп существующей железки и то что у меня скомпилилось. Увидел что через каждые полкилобайта наверно подсунуто еще байт 16. Сейчас не помню размеры.

Оказалось есть масса вариантов ECC для NAND. Гуглятся по nand ecc algorithm. Мне подошел рекомендованный самсунгом.

нашёл скрипты азиатского товарища, который как раз использует настройки NAND со всякими ECC блоками и свои скрипты для image maker, правда, для V3S
попробую пошаманить с ними. У меня 25N01 Winbond

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


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

Использую awboot

https://github.com/szemzoa/awboot

и форк майнстримного ядра 

https://github.com/smaeul/linux/tree/d1/all

+ патчи отсюда

https://github.com/szemzoa/awboot/tree/main/linux

забыл эту тину как страшный сон.

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


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

1 минуту назад, sasamy сказал:

Использую awboot

https://github.com/szemzoa/awboot

и форк майнстримного ядра 

https://github.com/smaeul/linux/tree/d1/all

+ патчи отсюда

https://github.com/szemzoa/awboot/tree/main/linux

забыл эту тину как страшный сон.

ну вот starterkit тоже этот загрузчик использует... и потом buildroot
мне бы хотелось остаться в чёртовой Tina, там сборка на базе OpenWRT
сразу и морда есть, и обновление прошивки и прочие вкусности с настройками из морды
я пробовал прошивать awboot, потом дерево, потом моё ядро (zImage), так оно савливается в панику, зараза
 

[I] AWBoot starting
[I] SPI-NAND: W25N01GV detected
[I] SPI-NAND: dt blob: Copy from 0x00020000 to 0x44000000 size:0x0000c597
[I] SPI-NAND: Image: Copy from 0x00040000 to 0x44800000 size:0x003ba058
[I] booting linux...
[    0.000000] Booting Linux on physical CPU 0x0
[    0.000000] Linux version 5.4.61 (toweroff@debian) (arm-openwrt-linux-muslgnueabi-gcc.bin (OpenWrt/Linaro GCC 6.4-2017.11 2017-11) 6.4.1, GNU ld (GNU Binutils) 2.27) #4 SMP PREEMPT Thu Nov 16 13:59:38 UTC 2023
[    0.000000] CPU: ARMv7 Processor [410fc075] revision 5 (ARMv7), cr=10c5387d
[    0.000000] CPU: div instructions available: patching division code
[    0.000000] CPU: PIPT / VIPT nonaliasing data cache, VIPT aliasing instruction cache
[    0.000000] OF: fdt: Machine model: sun8iw20
[    0.000000] printk: bootconsole [earlycon0] enabled
[    0.000000] Memory policy: Data cache writealloc
[    0.000000] cma: Reserved 16 MiB at 0x5f000000
[    0.000000] On node 0 totalpages: 130816
[    0.000000]   Normal zone: 1024 pages used for memmap
[    0.000000]   Normal zone: 0 pages reserved
[    0.000000]   Normal zone: 130816 pages, LIFO batch:31
[    0.000000] psci: probing for conduit method from DT.
[    0.000000] Bad mode in prefetch abort handler detected
[    0.000000] Internal error: Oops - bad mode: 0 [#1] PREEMPT SMP ARM
[    0.000000] Modules linked in:
[    0.000000] CPU: 0 PID: 0 Comm: swapper Not tainted 5.4.61 #4
[    0.000000] Hardware name: Generic DT based system
[    0.000000] PC is at 0x41b065c8
[    0.000000] LR is at __invoke_psci_fn_smc+0x40/0x60
[    0.000000] pc : [<41b065c8>]    lr : [<c047e59c>]    psr: 600001d6
[    0.000000] sp : c0a01e98  ip : c0a01ef0  fp : defffec0
[    0.000000] r10: c0a0e014  r9 : c0b50ca4  r8 : c0a00000
[    0.000000] r7 : 00000000  r6 : 00000000  r5 : 00000000  r4 : 00000000
[    0.000000] r3 : 00000000  r2 : 00000000  r1 : 00000000  r0 : 84000000
[    0.000000] Flags: nZCv  IRQs off  FIQs off  Mode MON_32  ISA ARM  Segment none
[    0.000000] Control: 10c5387d  Table: 4000406a  DAC: c0a00000
[    0.000000] Process swapper (pid: 0, stack limit = 0x(ptrval))
[    0.000000] Stack: (0xc0a01e98 to 0xc0a02000)
[    0.000000] 1e80:                                                       84000000 00000000
[    0.000000] 1ea0: 00000000 00000000 00000000 00000000 00000000 00000000 c0a00000 c0b50ca4
[    0.000000] 1ec0: c0a0e014 defffec0 c0a01ef0 c0a01e98 c047e59c 41b065c8 600001d6 ffffffff
[    0.000000] 1ee0: c0a00000 00000000 c0a4a180 c0a06d80 00000000 00000000 00000000 00000000
[    0.000000] 1f00: c0a01f0c 00000000 c0a4a180 c047e7f4 c400093c 00000000 00000001 00000000
[    0.000000] 1f20: c0a00000 c0917838 c0a00000 debd1490 c0a4a180 c0a06d80 c0a00000 c0917aa0
[    0.000000] 1f40: c0a00000 c0917c4c c092da5c 00000000 00000000 c0923360 c0a08218 c0902484
[    0.000000] 1f60: ffffffff 10c5387d 42100000 c082c9fc c0a03dc0 c0a4a000 410fc075 10c5387d
[    0.000000] 1f80: 00000000 c01552c8 c07ca689 00000000 00000001 c0900330 c0a00000 10c0387d
[    0.000000] 1fa0: c0a03dc0 c0a4a000 410fc075 10c5387d 00000000 c0900974 00000000 00000000
[    0.000000] 1fc0: 00000000 00000000 00000000 c09270c0 00000000 00000000 c0900330 00000051
[    0.000000] 1fe0: 10c0387d ffffffff 44000000 410fc075 10c5387d 00000000 00000000 00000000
[    0.000000] [<c047e59c>] (__invoke_psci_fn_smc) from [<c0a01e98>] (0xc0a01e98)
[    0.000000] Code: bad PC value
[    0.000000] random: get_random_bytes called from init_oops_id+0x20/0x40 with crng_init=0
[    0.000000] ---[ end trace 0000000000000000 ]---
[    0.000000] Kernel panic - not syncing: Attempted to kill the idle task!
[    0.000000] ---[ end Kernel panic - not syncing: Attempted to kill the idle task! ]---

 

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


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

On 11/17/2023 at 9:10 AM, toweroff said:

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

обновление прошивки с вэбмордой и в buildroot можно сделать

https://bootlin.com/blog/building-a-linux-system-for-the-stm32mp1-remote-firmware-updates/

а чтобы до пяти грамм вкусностей в тине добраться (IP менять через вэб-интерфейс ?) надо тонну дерьма съесть

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

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


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

2 минуты назад, sasamy сказал:

обновление прошивки с вэбмордой и в buildroot можно сделать

https://bootlin.com/blog/building-a-linux-system-for-the-stm32mp1-remote-firmware-updates/

а чтобы до пяти грамм вкусностей в тине добраться (IP менять через вэб-интерфейс ?) надо тонну дерьма съесть

 

спасибо, посмотрю
нет, там не только IP... там, помимо сетевых, ещё куча настроек для LoRa WAN ))

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


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

On 11/17/2023 at 9:59 AM, toweroff said:

нет, там не только IP... там, помимо сетевых, ещё куча настроек для LoRa WAN

вообще я имел ввиду реализацию основных вещей - загрузчик, ядро, инструментарий для прошивки. Корневую от openwrt можно даже не собирать самому а слепить из пакетов

https://openwrt.org/docs/guide-user/additional-software/imagebuilder

https://downloads.openwrt.org/snapshots/targets/sunxi/cortexa7/

в мастере уже ядро 6.1 используется, так что если захочется с нуля собрать патч для ядра проще сделать

https://github.com/openwrt/openwrt/blob/main/include/kernel-6.1

непосредственно t113-s3 не поддерживается но разница минимальная если взять похожий процессор с ядром cortex-a7

https://openwrt.org/docs/techref/hardware/soc/soc.allwinner.sunxi#folded_d9cdf42367beaaf97b0059d9d7fe416f_1

для работы с лора-трансиверами  симтека насколько я понял нужен только spidev в юзерспейс

https://lora-developers.semtech.com/documentation/tech-papers-and-guides/how-to-use-lora-basics-station/

Взял имидж openwrt-sunxi-cortexa7-sinovoip_bananapi-m2-ultra-ext4-sdcard.img

скопировал раздел с корневой фс в имидж созданный в buildroot

Скорректировал ttyS3 вместо бананового ttyS0 для консоли /etc/inittab

ttyS3::askfirst:/usr/libexec/login.sh

После загрузки настроил сеть и доустановил пакетики

Quote

ifconfig eth0 192.168.0.136 up
route add default gw 192.168.0.2
echo "nameserver 8.8.8.8" >> /etc/resolv.conf
opkg update
opkg install luci basicstation libloragw luci-app-lorawan-basicstation

 

Screenshot from 2023-11-19 21-02-44.png

Screenshot from 2023-11-19 21-03-30.png

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

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


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

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

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

Гость
Ответить в этой теме...

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

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

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

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

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

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