Автор Тема: загрузчик  (Прочитано 1079 раз)

Оффлайн range

загрузчик
« : Май 03, 2019, 10:11:11 pm »
тема неновая. но вопрос уже несложный. основная работа сделана.  но уперся в то, что не могу установить u-boot.
u-boot  был собран из source.   имеется файл u-boot-sunxi-with-spl.bin
делаю

dd dd if=/dev/zero of=/dev/sda bs=1K count=1023 seek=1 -это я освободил место для загрузчика
теперь записываю сам u-boot на sd карту.
dd if= u-boot-sunxi-with-spl.bin of=/dev/sda bs=1024 seek=8

никаких признаков жизни. кажется смещение неправильое . подскажите пожалуйста, каким оно должно быть на orange pi win+

Оффлайн range

Re: загрузчик
« Ответ #1 : Май 09, 2019, 07:45:16 am »
как вообще передать ядро загрузчику? подскажите кто-нибудь

Оффлайн range

Re: загрузчик
« Ответ #2 : Май 09, 2019, 04:47:00 pm »
живые есть?

Оффлайн igzero

Re: загрузчик
« Ответ #3 : Май 10, 2019, 08:43:30 am »
живые есть?
Инфы болле, чем достаточно.
Например:
 - обратиться к первоисточнику
 - почитать у производителя
 - почитать на сайте ua3nbw
 - посмотреть как реализовано в armbian, почитай файл /boot/boot.cmd

Код: /boot/boot.cmd [Выделить]

# DO NOT EDIT THIS FILE
#
# Please edit /boot/armbianEnv.txt to set supported parameters
#

setenv load_addr "0x44000000"
setenv overlay_error "false"
# default values
setenv verbosity "1"
setenv console "both"
setenv disp_mem_reserves "off"
setenv disp_mode "1920x1080p60"
setenv rootfstype "ext4"
setenv docker_optimizations "on"
setenv devnum "0"
setenv rootdev "/dev/mmcblk${devnum}p1"

# Print boot source
itest.b *0x28 == 0x00 && echo "U-boot loaded from SD"
itest.b *0x28 == 0x02 && echo "U-boot loaded from eMMC or secondary SD"
itest.b *0x28 == 0x03 && echo "U-boot loaded from SPI"

# get PARTUUID of first partition on SD/eMMC it was loaded from
# mmc 0 is always mapped to device u-boot (2016.09+) was loaded from
if test "${devtype}" = "mmc"; then
  part uuid mmc ${devnum}:1 partuuid;
  setenv devnum ${mmc_bootdev}
  setenv rootdev "/dev/mmcblk${mmc_bootdev}p1"
fi

echo "Boot script loaded from ${devtype}"

if test -e ${devtype} ${devnum} ${prefix}armbianEnv.txt; then
        load ${devtype} ${devnum} ${load_addr} ${prefix}armbianEnv.txt
        env import -t ${load_addr} ${filesize}
fi

if test "${logo}" = "disabled"; then setenv logo "logo.nologo"; fi

if test "${console}" = "display" || test "${console}" = "both"; then setenv consoleargs "console=ttyS0,115200 console=tty1"; fi
if test "${console}" = "serial"; then setenv consoleargs "console=ttyS0,115200"; fi

setenv bootargs "root=${rootdev} rootwait rootfstype=${rootfstype} ${consoleargs} hdmi.audio=EDID:0 disp.screen0_output_mode=${disp_mode} panic=10 consoleblank=0 loglevel=${verbosity} ubootpart=${partuuid} ubootsource=${devtype} usb-storage.quirks=${usbstoragequirks} ${extraargs} ${extraboardargs}"

if test "${disp_mem_reserves}" = "off"; then setenv bootargs "${bootargs} sunxi_ve_mem_reserve=0 sunxi_g2d_mem_reserve=0 sunxi_fb_mem_reserve=16"; fi
if test "${docker_optimizations}" = "on"; then setenv bootargs "${bootargs} cgroup_enable=memory swapaccount=1"; fi

load ${devtype} ${devnum} ${ramdisk_addr_r} ${prefix}uInitrd
load ${devtype} ${devnum} ${kernel_addr_r} ${prefix}zImage

if test -e ${devtype} ${devnum} "${prefix}.next"; then
        echo "Found mainline kernel configuration"
        load ${devtype} ${devnum} ${fdt_addr_r} ${prefix}dtb/${fdtfile}
        fdt addr ${fdt_addr_r}
        fdt resize 65536
        for overlay_file in ${overlays}; do
                if load ${devtype} ${devnum} ${load_addr} ${prefix}dtb/overlay/${overlay_prefix}-${overlay_file}.dtbo; then
                        echo "Applying kernel provided DT overlay ${overlay_prefix}-${overlay_file}.dtbo"
                        fdt apply ${load_addr} || setenv overlay_error "true"
                fi
        done
        for overlay_file in ${user_overlays}; do
                if load ${devtype} ${devnum} ${load_addr} ${prefix}overlay-user/${overlay_file}.dtbo; then
                        echo "Applying user provided DT overlay ${overlay_file}.dtbo"
                        fdt apply ${load_addr} || setenv overlay_error "true"
                fi
        done
        if test "${overlay_error}" = "true"; then
                echo "Error applying DT overlays, restoring original DT"
                load ${devtype} ${devnum} ${fdt_addr_r} ${prefix}dtb/${fdtfile}
        else
                if load ${devtype} ${devnum} ${load_addr} ${prefix}dtb/overlay/${overlay_prefix}-fixup.scr; then
                        echo "Applying kernel provided DT fixup script (${overlay_prefix}-fixup.scr)"
                        source ${load_addr}
                fi
                if test -e ${devtype} ${devnum} ${prefix}fixup.scr; then
                        load ${devtype} ${devnum} ${load_addr} ${prefix}fixup.scr
                        echo "Applying user provided fixup script (fixup.scr)"
                        source ${load_addr}
                fi
        fi
        bootz ${kernel_addr_r} ${ramdisk_addr_r} ${fdt_addr_r}
else
        echo "Found legacy kernel configuration"
        load ${devtype} ${devnum} ${fdt_addr_r} ${prefix}script.bin
        bootz ${kernel_addr_r} ${ramdisk_addr_r}
fi

# Recompile with:
# mkimage -C none -A arm -T script -d /boot/boot.cmd /boot/boot.scr

« Последнее редактирование: Май 10, 2019, 09:08:13 am от igzero »

Оффлайн range

Re: загрузчик
« Ответ #4 : Май 10, 2019, 10:10:05 am »
я просто хочу запусить ядро с u-boot собрынным из source.  только мало опыта и знаний.
для Вас , если Вы в теме , это займет пару минут. 
ребята, эта тема уже висит не один год. много писали, но все не о том.
просто помогите разобраться, что нужно поместить на флеку.  не спрашиваю, как собрать, из чего собрать. я просто стпрашиваю, что из собранного мною, надо записать на флешку.

допустим у нас есть рабочая плата orange pi win+ c установленной на нее системой armbian. 
есть собранные из source u-boot.  собран правильно.
теперь я просто хочу взять и записать этот собранный u-boot на ту флешку, на которой уже есть armbian. перезаписать , так сказать , u-boot. что мне для этого понадобиться?
 u-boot-sunxi-with-spl.bin?
u-boot.bin ?




Оффлайн igzero

Re: загрузчик
« Ответ #5 : Май 10, 2019, 11:06:44 am »
я просто хочу запусить ядро с u-boot собрынным из source.  только мало опыта и знаний.
для Вас , если Вы в теме , это займет пару минут. 
ребята, эта тема уже висит не один год. много писали, но все не о том.
просто помогите разобраться, что нужно поместить на флеку.  не спрашиваю, как собрать, из чего собрать. я просто стпрашиваю, что из собранного мною, надо записать на флешку.

допустим у нас есть рабочая плата orange pi win+ c установленной на нее системой armbian. 
есть собранные из source u-boot.  собран правильно.
теперь я просто хочу взять и записать этот собранный u-boot на ту флешку, на которой уже есть armbian. перезаписать , так сказать , u-boot. что мне для этого понадобиться?
 u-boot-sunxi-with-spl.bin?
u-boot.bin ?


Никого не хотел обидеть. Я же указал ссылку например на ua3nbw где у него коротко и по делу написано, что записать и как записать
Цитировать
dd if=/dev/zero of=/dev/mmcblk0 bs=1024 seek=544 count=128
dd if=u-boot-sunxi-with-spl.bin of=/dev/mmcblk0 bs=1024 seek=8
reboot
Здесь, первая команда dd предназначена для очистки переменных окружения U-Boot, а вторая, — для записи начального SPL загрузчика и, непосредственно, U-Boot.
подробнее тут.

Оффлайн range

Re: загрузчик
« Ответ #6 : Май 10, 2019, 11:30:20 am »
в том то и дело, что не стартует ядро с новым u-boot.

через uart могу видет что

U-boot spl 2019.04-rc2
dram:2048 mib
Truing to boot frome MMC1
может надо что-то где -то изменить?

Оффлайн igzero

Re: загрузчик
« Ответ #7 : Май 10, 2019, 11:41:11 am »
Могу предположить, что не находит /boot/boot.scr или с ним что-то не так
Проверить не могу, т.к. у меня на платке сейчас идет сборка ядра

Оффлайн igzero

Re: загрузчик
« Ответ #8 : Май 10, 2019, 11:44:15 am »
Кстати, если есть возможность воткните телик в HDMI, есть подозрение что консоль настроена (файл /boot/armbianEnv.txt ) на HDMI

Оффлайн range

Re: загрузчик
« Ответ #9 : Май 10, 2019, 06:21:23 pm »
плата у меня по hdmi подключена к монитору....  вы ядро собираете? блин, вот прям уважение вызывает это.

Оффлайн range

Re: загрузчик
« Ответ #10 : Май 10, 2019, 06:26:36 pm »
опишите пожалуйста действия, как Вы будете передавать ядро загрузчику?  что Вы вообще будете делать? может я на вашем примере пойму. u-boot  должен быть скомпилирован и передан ядру или это не обязательно? или можно собрать ядро, собрать отдельно загрузчик. после установить все по отдельности. так будет работать? 

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

Оффлайн ua3nbw

Re: загрузчик
« Ответ #11 : Май 10, 2019, 07:34:39 pm »
Конечно можно собрать ядро и собрать отдельно загрузчик.
если у вас orange pi win+, для загрузчика нужны два файла sunxi-spl.bin и u-boot.itb
тут  команды для записи u-boot на microSD card
https://github.com/linux-sunxi/u-boot-sunxi/blob/mirror/next/board/sunxi/README.sunxi64

dd if=spl/sunxi-spl.bin of=/dev/sdx bs=8k seek=1
dd if=u-boot.itb of=/dev/sdx bs=8k seek=5
sync


ядро загрузчику можно также передать с помощью файла extlinux.conf, создать в папке boot/extlinux/
пример для Alpine Linux
TIMEOUT 20
PROMPT 1
DEFAULT Alpine Linux

LABEL Alpine Linux
MENU LABEL Alpine Linux
KERNEL /boot/vmlinuz-4.19.20-sunxi
INITRD /boot/initramfs-sunxi
DEVICETREEDIR /boot/dtbs
APPEND bootargs earlyprintk /boot/vmlinuz-4.19.20-sunxi modules=loop,squashfs,sd-mod,usb-storage modloop=/boot/modloop-sunxi console=${console}

Оффлайн range

Re: загрузчик
« Ответ #12 : Май 12, 2019, 10:07:33 am »
тут к сожалению не все так просто.....
чтобы собрать u-boot нам надо

сделать копию blob
dd if=Armbian-5.75_orangepiwin.img of=boot0.bin bs=8k skip=1 count=4
получить  u-boot.img
tar xvf u-boot2019.tar
cd u-boot/

make orangepi_win_defconfig



и  получить bl31.bin

вопрос: как это сделать?

Оффлайн range

Re: загрузчик
« Ответ #13 : Май 12, 2019, 05:05:55 pm »
dd if=u-boot.itb of=/dev/sdx bs=8k seek=5

хоть скажите где взять u-boot.itb   

Оффлайн range

Re: загрузчик
« Ответ #14 : Май 13, 2019, 12:07:29 pm »
Могу предположить, что не находит /boot/boot.scr или с ним что-то не так
Проверить не могу, т.к. у меня на платке сейчас идет сборка ядра

как у Вас успехи?