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

at91sam9260-ek U-Boot вот я и застопорился...

 

2 hours ago, Овчинников Игорь said:

У меня непонятка с Kernel, котороиу u-boot и должен передать управление

С kernel, на мой взгляд, есть одна глобальная "непонятка" в виде отсутствия описания оборудования - dts.

Пока остается взять что-то похожее, благо отличий немного в любом случае.

 

2 hours ago, Овчинников Игорь said:

И так же нероняткка с u-boot - он просто второй загрузчик, тли ещё что-то делает оставаясь резидентом

Просто загрузчик. Его дело - загрузить необходимые бинарники (image, dtb), и запустить ядро с командной строкой bootargs.

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


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

3 hours ago, aaarrr said:

 

С kernel, на мой взгляд, есть одна глобальная "непонятка" в виде отсутствия описания оборудования - dts.

Пока остается взять что-то похожее, благо отличий немного в любом случае.

 

Просто загрузчик. Его дело - загрузить необходимые бинарники (image, dtb), и запустить ядро с командной строкой bootargs.

пока, что остановился на этом:

U-Boot> usb reset
resetting USB...
USB0:   scanning bus 0 for devices... 2 USB Device(s) found
       scanning usb for storage devices... 1 Storage Device(s) found
U-Boot> 
resetting USB...
USB0:   scanning bus 0 for devices... 2 USB Device(s) found
       scanning usb for storage devices... 1 Storage Device(s) found
U-Boot> fatload usb 0 0x22000000 zImage
reading zImage
3635928 bytes read in 9873 ms (359.4 KiB/s)
U-Boot> 
U-Boot> bootz 0x22000000:0x377AD8
Kernel image @ 0x22000000 [ 0x000000 - 0x377ad8 ]

Starting kernel ...

Это сообщение дал u-boot (эта надпись есть в его теле).

файл at91sam9260ek.dtb в наличии есть, но куда его положить? В связи с тем что я только в наяале пути, не понял кто он и зачем. Да и с адесами не освоился... в смысле адреса одни до старта загрузчика, а потом другие... но это и понятно, но не освоился всё равно пока.

Прошу прощения за свою неосведомлённость!

Изменено пользователем Овчинников Игорь

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


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

10 hours ago, aaarrr said:

Например, так:


fatload usb 0 0x22000000 zImage
fatload usb 0 0x22800000 at91sam9260ek.dtb
bootz 0x22000000 - 0x22800000

Спасибо за пример, но кто такой этот пресловутый файл at91sam9260.dtb... каково его назначение в системе... ну хотя бы при загрузке. Потому как сейчас собираюсь собирать ядро, но не buildroot, а просто из исходников. Мною найдены такие как at91sam9260ek.dts. Судя по содержимому их назначение понятно (некое аппаратное описание) и если я правильно понял после сборки будет уже at91sam9260ek.dtb. Но как загружаемый код ядра ориентируется на его содержимое, то если я правильно понял, в коде ядра должно быть описание на его размещение. Они все *.etb имеют некий стандартный формат?

Вчера просто так, для интереса, из исходников собирал linux-4.8.6 прямо на raspberry pi 4 в рам диске применяя CROSS_COMPILE=arm-none-eabi-, пока PC был занят - в результате получил Image;zImage;vmlinux ну и *dtb. Правда ошибся и собирал для at91rm9200ek.

Изменено пользователем Овчинников Игорь

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


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

14 minutes ago, Овчинников Игорь said:

Они все *.etb имеют некий стандартный формат?

Да.

 

15 minutes ago, Овчинников Игорь said:

если я правильно понял после сборки будет уже at91sam9260ek.dtb

Верно.

 

16 minutes ago, Овчинников Игорь said:

сейчас собираюсь собирать ядро, но не buildroot, а просто из исходников

И правильно, не надо собирать ядро в buildroot.

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


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

23 hours ago, aaarrr said:

Да.

 

Верно.

 

И правильно, не надо собирать ядро в buildroot.

С Вашей рекомендацией старт произведён, только ругается на отсутствие файловой системы... про которую я совсем забыл.

Спасибо!!!

Но буду дальше копать....

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


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

Доброго времени суток!

Здравствуйте!

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

Собственно вопрос вот в чём:

Какова карта памяти до запуска U-Boot и после. Потому, что надо с помощью U-Boot загрузить кернел и dtb в NAND из zImage и at91sam9260ek.dtb, которые находятся на usb-flash.

Скажу прямо попытка одна, потому как весь набор: bootstrap и u-boot сейчас не при мне. Я конечно всё восстановлю, но это будет уже ближе к ночи, эдак часов через 8.

Спасибо!

Изменено пользователем Овчинников Игорь

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


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

On 10/3/2021 at 8:12 PM, Овчинников Игорь said:

bootcmd=nand read 0x22000000 0x200000 0x300000; bootm

NAND с адреса 200000 и выше можете спокойно портить, не опасаясь грохнуть u-boot.

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


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

Простите меня! Наверное я наглею, стыдно Вас уже отвлекать.

При вышопазанном запуске из USB-FLASH. Вот это фрагмент:

Creating 8 MTD partitions on "atmel_nand":
0x000000000000-0x000000040000 : "bootstrap"
0x000000040000-0x0000000c0000 : "uboot"
0x0000000c0000-0x000000100000 : "env"
0x000000100000-0x000000140000 : "env_redundant"
0x000000140000-0x000000180000 : "spare"
0x000000180000-0x000000200000 : "dtb"
0x000000200000-0x000000800000 : "kernel"
0x000000800000-0x000010000000 : "rootfs"
libphy: Fixed MDIO Bus: probed

В приципе адреса в NAND понятны, но работают только "bootstrap" и "uboot" и они работают.

сама загрузка заершается так:

VFS: Cannot open root device "mtdblock7" or unknown-block(31,7): error -19
Please append a correct "root=" boot option; here are the available partitions:
0100            8192 ram0  (driver?)
0101            8192 ram1  (driver?)
0102            8192 ram2  (driver?)
0103            8192 ram3  (driver?)
1f00             256 mtdblock0  (driver?)
1f01             512 mtdblock1  (driver?)
1f02             256 mtdblock2  (driver?)
1f03             256 mtdblock3  (driver?)
1f04             256 mtdblock4  (driver?)
1f05             512 mtdblock5  (driver?)
1f06            6144 mtdblock6  (driver?)
1f07          253952 mtdblock7  (driver?)
Kernel panic - not syncing: VFS: Unable to mount root fs on unknown-block(31,7)
---[ end Kernel panic - not syncing: VFS: Unable to mount root fs on unknown-block(31,7)
g_serial gadget: full-speed config #2: CDC ACM config
random: crng init done

Размещение 'dtb" и "kernel" в NAND не дают ничего нормального...

сейчас делаю пробы с zImage; vmlinux; Image как с

mkimage -A arm -O linux -T kernel -C gzip -a 0x22000000 -e 0x22000000 -n "Linux Kernel Image" -d zImage zImage.bin

так и без.

Подход совершенно не понятен.

И это:

http://dmilvdv.narod.ru/AT91SAM9260/linux.html

пока не даёт результата

Изменено пользователем Овчинников Игорь

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


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

51 minutes ago, Овчинников Игорь said:

Размещение 'dtb" и "kernel" в NAND не дают ничего нормального...

Так а что делали, и что в результате получилось? Прямо последовательность действий с выхлопом.

 

53 minutes ago, Овчинников Игорь said:

сейчас делаю пробы с zImage; vmlinux; Image

Не надо: если грузится с USB, то зачем делать что-то еще? zImage можно указать как цель при сборке ядра - make ... zImage, чтобы не запускать mkimage вручную.

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


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

1 hour ago, aaarrr said:

Так а что делали, и что в результате получилось? Прямо последовательность действий с выхлопом.

 

Не надо: если грузится с USB, то зачем делать что-то еще? zImage можно указать как цель при сборке ядра - make ... zImage, чтобы не запускать mkimage вручную.

Даже и не знаю как ответить. По опытам ведь том типа "Война и Мир" выйдет... вычленить самое разумное надо, что бы и не так много и покороче. Попробую описать...

Одним словом пересобирать пока не стал, а уткнулся в формирование env путём замены:

bootcmd=nand read 0x22000000 0x200000 0x300000; bootm

на

bootcmd=nand read 0x22000000 0x200000 0x300000; nand read 0x22800000 0x140000 0x4980; bootz 0x22000000 - 0x22800000

Или что-то подобное. При этом заранее разместив zImage по 0x200000, а at91sam9260ek.dtb по адресу 0x140000.

У меня не выходит отредактировать строку из 3-х команд.

Можно конечно разместить их в некой области NAND и згружать одной командой, после чего в этой строке завершить bootz 0x22000000 - NNNN... вот только не придумаю никак.

Не выходит отредактировать - то ошибка, то произврльный старт.

...вот произвольный старт при попытке сохранить промежуточное значение:

U-Boot> 
U-Boot> editenv bootcmd nand read 0x22000000 0x200000 0x300000; bootz 0x22000000
editenv - edit environment variable

Usage:
editenv name
    - edit environment variable 'name'
Kernel image @ 0x22000000 [ 0x000000 - 0x377ad8 ]

Starting kernel ...

Это редактирование чтения из NAND и запуск, а доложно быть просто редактирование.

Изменено пользователем Овчинников Игорь

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


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

потому как введенная строка в uboot:

nand read 0x22000000 0x200000 0x377AD8; nand read 0x22800000 0x140000 0x4980; bootz 0x22000000 - 0x22800000

приводит к этому:

U-Boot> 
U-Boot> 
U-Boot> nand read 0x22000000 0x200000 0x377AD8; nand read 0x22800000 0x140000 0x4980; bootz 0x22000000 - 0x22800000

NAND read: device 0 offset 0x200000, size 0x377ad8
 3635928 bytes read: OK

NAND read: device 0 offset 0x140000, size 0x4980
 18816 bytes read: OK
Kernel image @ 0x22000000 [ 0x000000 - 0x377ad8 ]
## Flattened Device Tree blob at 22800000
   Booting using the fdt blob at 0x22800000
   Loading Device Tree to 23eb2000, end 23eb997f ... OK

Starting kernel ...

Booting Linux on physical CPU 0x0
Linux version 4.8.6 (igor@debianNUC7PJYH) (gcc version 9.3.0 (Buildroot 2021.02.3) ) #1 Sun Oct 3 17:41:32 MSK 2021
CPU: ARM926EJ-S [41069265] revision 5 (ARMv5TEJ), cr=0005317f
CPU: VIVT data cache, VIVT instruction cache
OF: fdt:Machine model: Atmel at91sam9260ek
Memory policy: Data cache writeback
Built 1 zonelists in Zone order, mobility grouping on.  Total pages: 16256
Kernel command line: console=ttyS0,115200 earlyprintk mtdparts=atmel_nand:256k(bootstrap)ro,512k(uboot)ro,256k(env),256k(env_redundant),256k(spare),512k(dtb),6M(kernel)ro,-(rootfs) root=/dev/mtdblock7 rw rootfstype=jffs2
PID hash table entries: 256 (order: -2, 1024 bytes)
Dentry cache hash table entries: 8192 (order: 3, 32768 bytes)
Inode-cache hash table entries: 4096 (order: 2, 16384 bytes)
Memory: 57572K/65536K available (4834K kernel code, 172K rwdata, 1732K rodata, 220K init, 127K bss, 7964K reserved, 0K cma-reserved)
Virtual kernel memory layout:
    vector  : 0xffff0000 - 0xffff1000   (   4 kB)
    fixmap  : 0xffc00000 - 0xfff00000   (3072 kB)
    vmalloc : 0xc4800000 - 0xff800000   ( 944 MB)
    lowmem  : 0xc0000000 - 0xc4000000   (  64 MB)
    modules : 0xbf000000 - 0xc0000000   (  16 MB)
      .text : 0xc0008000 - 0xc04c0c50   (4836 kB)
      .init : 0xc0699000 - 0xc06d0000   ( 220 kB)
      .data : 0xc06d0000 - 0xc06fb080   ( 173 kB)
       .bss : 0xc06fb080 - 0xc071ad04   ( 128 kB)
NR_IRQS:16 nr_irqs:16 16
clocksource: pit: mask: 0x7ffffff max_cycles: 0x7ffffff, max_idle_ns: 9620954980 ns
sched_clock: 32 bits at 128 Hz, resolution 7812500ns, wraps every 16777215996093750ns
Console: colour dummy device 80x30
Calibrating delay loop... 98.72 BogoMIPS (lpj=385024)
pid_max: default: 32768 minimum: 301
Mount-cache hash table entries: 1024 (order: 0, 4096 bytes)
Mountpoint-cache hash table entries: 1024 (order: 0, 4096 bytes)
CPU: Testing write buffer coherency: ok
Setting up static identity map for 0x20008400 - 0x2000847c
devtmpfs: initialized
clocksource: jiffies: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 14931722236523437 ns
pinctrl core: initialized pinctrl subsystem
NET: Registered protocol family 16
DMA: preallocated 256 KiB pool for atomic coherent allocations
AT91: Detected SoC: at91sam9260, revision 2
No ATAGs?
gpio-at91 fffff400.gpio: at address c485a400
gpio-at91 fffff600.gpio: at address c485c600
gpio-at91 fffff800.gpio: at address c485e800
pinctrl-at91 ahb:apb:pinctrl@fffff400: initialized AT91 pinctrl driver
clocksource: tcb_clksrc: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 153935280796 ns
SCSI subsystem initialized
usbcore: registered new interface driver usbfs
usbcore: registered new interface driver hub
usbcore: registered new device driver usb
i2c-gpio i2c-gpio-0: using pins 23 (SDA) and 24 (SCL)
Linux video capture interface: v2.00
Advanced Linux Sound Architecture Driver Initialized.
clocksource: Switched to clocksource tcb_clksrc
NET: Registered protocol family 2
TCP established hash table entries: 1024 (order: 0, 4096 bytes)
TCP bind hash table entries: 1024 (order: 0, 4096 bytes)
TCP: Hash tables configured (established 1024 bind 1024)
UDP hash table entries: 256 (order: 0, 4096 bytes)
UDP-Lite hash table entries: 256 (order: 0, 4096 bytes)
NET: Registered protocol family 1
RPC: Registered named UNIX socket transport module.
RPC: Registered udp transport module.
RPC: Registered tcp transport module.
RPC: Registered tcp NFSv4.1 backchannel transport module.
futex hash table entries: 256 (order: -1, 3072 bytes)
workingset: timestamp_bits=30 max_order=14 bucket_order=0
io scheduler noop registered (default)
fffff200.serial: ttyS0 at MMIO 0xfffff200 (irq = 16, base_baud = 6208000) is a ATMEL_SERIAL
console [ttyS0] enabled
fffb0000.serial: ttyS1 at MMIO 0xfffb0000 (irq = 26, base_baud = 6208000) is a ATMEL_SERIAL
atmel_usart fffb0000.serial: Not supported ip name nor version, set to uart
fffb4000.serial: ttyS2 at MMIO 0xfffb4000 (irq = 27, base_baud = 6208000) is a ATMEL_SERIAL
atmel_usart fffb4000.serial: Not supported ip name nor version, set to uart
[drm] Initialized drm 1.1.0 20060810
brd: module loaded
loop: module loaded
ssc fffbc000.ssc: Atmel SSC device at 0xc4890000 (irq 31)
atmel_nand 40000000.nand: No DMA support for NAND access.
nand: device found, Manufacturer ID: 0xec, Chip ID: 0xda
nand: Samsung NAND 256MiB 3,3V 8-bit
nand: 256 MiB, SLC, erase size: 128 KiB, page size: 2048, OOB size: 64
atmel_nand 40000000.nand: Use On Flash BBT
Bad block table found at page 131008, version 0x01
Bad block table found at page 130944, version 0x01
nand_read_bbt: bad block at 0x000000ea0000
nand_read_bbt: bad block at 0x00000ae40000
8 cmdlinepart partitions found on MTD device atmel_nand
Creating 8 MTD partitions on "atmel_nand":
0x000000000000-0x000000040000 : "bootstrap"
0x000000040000-0x0000000c0000 : "uboot"
0x0000000c0000-0x000000100000 : "env"
0x000000100000-0x000000140000 : "env_redundant"
0x000000140000-0x000000180000 : "spare"
0x000000180000-0x000000200000 : "dtb"
0x000000200000-0x000000800000 : "kernel"
0x000000800000-0x000010000000 : "rootfs"
libphy: Fixed MDIO Bus: probed
macb fffc4000.ethernet: invalid hw address, using random
libphy: MACB_mii_bus: probed
Davicom DM9161A fffc4000.etherne:00: attached PHY driver [Davicom DM9161A] (mii_bus:phy_addr=fffc4000.etherne:00, irq=-1)
macb fffc4000.ethernet eth0: Cadence MACB rev 0x0001010c at 0xfffc4000 irq 28 (fa:59:35:67:75:fb)
ehci_hcd: USB 2.0 'Enhanced' Host Controller (EHCI) Driver
ehci-atmel: EHCI Atmel driver
ohci_hcd: USB 1.1 'Open' Host Controller (OHCI) Driver
ohci-atmel: OHCI Atmel driver
at91_ohci 500000.ohci: USB Host Controller
at91_ohci 500000.ohci: new USB bus registered, assigned bus number 1
at91_ohci 500000.ohci: irq 33, io mem 0x00500000
usb usb1: New USB device found, idVendor=1d6b, idProduct=0001
usb usb1: New USB device strings: Mfr=3, Product=2, SerialNumber=1
usb usb1: Product: USB Host Controller
usb usb1: Manufacturer: Linux 4.8.6 ohci_hcd
usb usb1: SerialNumber: at91
hub 1-0:1.0: USB hub found
hub 1-0:1.0: 2 ports detected
usbcore: registered new interface driver cdc_acm
cdc_acm: USB Abstract Control Model driver for USB modems and ISDN adapters
usbcore: registered new interface driver usb-storage
usbcore: registered new interface driver usbserial
usbcore: registered new interface driver usbserial_generic
usbserial: USB Serial support registered for generic
usbcore: registered new interface driver ftdi_sio
usbserial: USB Serial support registered for FTDI USB Serial Device
usbcore: registered new interface driver pl2303
usbserial: USB Serial support registered for pl2303
udc: at91_udc version 3 May 2006
g_serial gadget: Gadget Serial v2.4
g_serial gadget: g_serial ready
mousedev: PS/2 mouse device common for all mice
rtc-at91sam9 fffffd20.rtc: rtc core: registered fffffd20.rtc as rtc0
rtc-at91sam9 fffffd20.rtc: rtc0: SET TIME!
AT91: Starting after general reset
at91_wdt fffffd40.watchdog: watchdog is disabled
at91_wdt: probe of fffffd40.watchdog failed with error -22
atmel_mci fffa8000.mmc: version: 0x210
atmel_mci fffa8000.mmc: using PDC
atmel_mci fffa8000.mmc: Atmel MCI controller at 0xfffa8000 irq 30, 1 slots
usbcore: registered new interface driver usbhid
usbhid: USB HID core driver
iio iio:device0: Resolution used: 10 bits
iio iio:device0: not support touchscreen in the adc compatible string.
NET: Registered protocol family 10
sit: IPv6, IPv4 and MPLS over IPv4 tunneling driver
NET: Registered protocol family 17
input: gpio_keys as /devices/soc0/gpio_keys/input/input0
rtc-at91sam9 fffffd20.rtc: hctosys: unable to read the hardware clock
ALSA device list:
  No soundcards found.
VFS: Cannot open root device "mtdblock7" or unknown-block(31,7): error -19
Please append a correct "root=" boot option; here are the available partitions:
0100            8192 ram0  (driver?)
0101            8192 ram1  (driver?)
0102            8192 ram2  (driver?)
0103            8192 ram3  (driver?)
1f00             256 mtdblock0  (driver?)
1f01             512 mtdblock1  (driver?)
1f02             256 mtdblock2  (driver?)
1f03             256 mtdblock3  (driver?)
1f04             256 mtdblock4  (driver?)
1f05             512 mtdblock5  (driver?)
1f06            6144 mtdblock6  (driver?)
1f07          253952 mtdblock7  (driver?)
Kernel panic - not syncing: VFS: Unable to mount root fs on unknown-block(31,7)
---[ end Kernel panic - not syncing: VFS: Unable to mount root fs on unknown-block(31,7)
random: fast init done
g_serial gadget: full-speed config #2: CDC ACM config
random: crng init done

ровно так как из USB-FLASH. В принципе всё из флешки.

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


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

43 minutes ago, Овчинников Игорь said:

Не выходит отредактировать - то ошибка, то произврльный старт.

setenv bootcmd 'nand read ...; bootz ...'

 

editenv никогда в жизни не использовал. Поддержка командной строки в u-boot весьма своеобразная, лучше действовать по возможности прямолинейно (совсем даже не зазорно набрать нужное в блокнотике, а затем просто скопировать в окно терминала).

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


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

9 minutes ago, aaarrr said:

setenv bootcmd 'nand read ...; bootz ...'

 

editenv никогда в жизни не использовал. Поддержка командной строки в u-boot весьма своеобразная, лучше действовать по возможности прямолинейно (совсем даже не зазорно набрать нужное в блокнотике, а затем просто скопировать в окно терминала).

Спасибо!!!

Вот это:

setenv bootcmd 'nand read 0x22000000 0x200000 0x377AD8; nand read 0x22800000 0x140000 0x4980; bootz 0x22000000 - 0x22800000'

сработало. Я такое испытывал... и подумать не мог что надо не двойные, а одинарные кавычки. Загрузка пошла.

Осталось, я думаю, rootfs разместить и указать о нем если надо.

Простите, но мне осталось спать менее 4-х часов, а завтра на работу. Простите!!! Я вынужден отключиться.

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


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

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

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

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

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

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

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

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

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

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