mirror of
https://github.com/openwrt/openwrt.git
synced 2024-12-23 07:22:33 +00:00
8dd91b56be
Problem - rapsberry pi 3 b/b+ does not boot with bcm2710 images!
How Raspberry Pi boots Actualy?
When Raspberry is switched on GPU is activated.
1. GPU execute First stage bootloader from ROM.
First stage bootloader mount the FAT boot partition on the SD card
and execute second stage bootloader (bootcode.bin).
2. Second stage bootloader (bootcode.bin) activate SDRAM.
Load the GPU firmware (start.elf).
3. GPU firmware (start.elf)
a) display Rainbow splash.
b) read firmware configuration file config.txt and
split the RAM using fixup.dat.
c) loads a cmdline.txt
d) enables the CPU.
e) loads the kernel image configurable via config.txt
In your target/linux/brcm2708/image/config.txt
493 ## kernel (string)
494 ## Alternative name to use when loading kernel.
495 ##
496 #kernel=""
it is not configured!
But in your target/linux/brcm2708/image/Makefile
75 KERNEL_IMG := kernel8.img
76 DEVICE_TITLE := Raspberry Pi 3B/3B+
you have kernel8.img
GPU Firmware search order by default for a PI 3 is:
kernel8.img if found boot in 64 bit mode
kernel8-32.img if found boot in 32 bit mode
kernel7.img if found boot in 32 bit mode
kernel.img if found boot in 32 bit mode
But a PI 2 will start the search from kernel7.img and
a PI 1 only looks for kernel.img.
Оbviously the kernel has been found.
But something goes wrong and the device is restarted.
In your package/kernel/brcm2708-gpu-fw/Makefile
11 PKG_NAME:=brcm2708-gpu-fw
12 PKG_VERSION:=2017-08-08
13 PKG_RELEASE:=e7ba7ab135f5a68b2c00a919ea9ac8d5528a5d5b
boot loader is 10 monts old.
In conclusion, the best way to solve the problem is
to update the boot loader!
Fixup_cd.dat and start_cd.elf files are not necessary.
These are used when GPU memory is set to 16 MB, which disables
some GPU features.
I did not remove them just in case!
cheers
Signed-off-by: Christo Nedev <christo.nedev@gmail.com>
(backported from c335649629
)
113 lines
3.3 KiB
Makefile
113 lines
3.3 KiB
Makefile
#
|
|
# Copyright (C) 2012-2016 OpenWrt.org
|
|
# Copyright (C) 2017 LEDE project
|
|
#
|
|
# This is free software, licensed under the GNU General Public License v2.
|
|
# See /LICENSE for more information.
|
|
#
|
|
include $(TOPDIR)/rules.mk
|
|
include $(INCLUDE_DIR)/kernel.mk
|
|
|
|
PKG_NAME:=brcm2708-gpu-fw
|
|
PKG_VERSION:=2018-05-16
|
|
PKG_RELEASE:=0f5f899ccec1c2ef8bba02aa49700b4ec19b4199
|
|
|
|
PKG_BUILD_DIR:=$(KERNEL_BUILD_DIR)/$(PKG_NAME)/rpi-firmware-$(PKG_RELEASE)
|
|
|
|
PKG_FLAGS:=nonshared
|
|
|
|
include $(INCLUDE_DIR)/package.mk
|
|
|
|
RPI_FIRMWARE_URL:=@GITHUB/raspberrypi/firmware/$(PKG_RELEASE)/boot/
|
|
RPI_FIRMWARE_FILE:=rpi-firmware-$(PKG_RELEASE)
|
|
|
|
define Download/LICENCE_broadcom
|
|
FILE:=$(RPI_FIRMWARE_FILE)-LICENCE.broadcom
|
|
URL:=$(RPI_FIRMWARE_URL)
|
|
URL_FILE:=LICENCE.broadcom
|
|
HASH:=ba76edfc10a248166d965b8eaf320771c44f4f432d4fce2fd31fd272e7038add
|
|
endef
|
|
$(eval $(call Download,LICENCE_broadcom))
|
|
|
|
define Download/bootcode_bin
|
|
FILE:=$(RPI_FIRMWARE_FILE)-bootcode.bin
|
|
URL:=$(RPI_FIRMWARE_URL)
|
|
URL_FILE:=bootcode.bin
|
|
HASH:=c9eb5258766fabf7127e790b257f106e2717f0ccaaed37544b970b0d113956fc
|
|
endef
|
|
$(eval $(call Download,bootcode_bin))
|
|
|
|
define Download/fixup_dat
|
|
FILE:=$(RPI_FIRMWARE_FILE)-fixup.dat
|
|
URL:=$(RPI_FIRMWARE_URL)
|
|
URL_FILE:=fixup.dat
|
|
HASH:=8a6311e73d0f349be9b8424db0644fd8f48aaf721f3f2f487488c83d7316cbdf
|
|
endef
|
|
$(eval $(call Download,fixup_dat))
|
|
|
|
define Download/fixup_cd_dat
|
|
FILE:=$(RPI_FIRMWARE_FILE)-fixup_cd.dat
|
|
URL:=$(RPI_FIRMWARE_URL)
|
|
URL_FILE:=fixup_cd.dat
|
|
HASH:=973b008aae9711d57ddce4f058354fe5a0b4725dd825673f784a2e2754da1f28
|
|
endef
|
|
$(eval $(call Download,fixup_cd_dat))
|
|
|
|
define Download/start_elf
|
|
FILE:=$(RPI_FIRMWARE_FILE)-start.elf
|
|
URL:=$(RPI_FIRMWARE_URL)
|
|
URL_FILE:=start.elf
|
|
HASH:=8e77c4cce7e44ced609e5046dd55f19cb7656a8ce4694e733b7eb6ecab915fe1
|
|
endef
|
|
$(eval $(call Download,start_elf))
|
|
|
|
define Download/start_cd_elf
|
|
FILE:=$(RPI_FIRMWARE_FILE)-start_cd.elf
|
|
URL:=$(RPI_FIRMWARE_URL)
|
|
URL_FILE:=start_cd.elf
|
|
HASH:=25223b479b7aca1d74c6f7a1829aba69fd14906ca5b25ae12571fe71ea2c5a4a
|
|
endef
|
|
$(eval $(call Download,start_cd_elf))
|
|
|
|
define Package/brcm2708-gpu-fw
|
|
SECTION:=boot
|
|
CATEGORY:=Boot Loaders
|
|
DEPENDS:=@TARGET_brcm2708
|
|
TITLE:=brcm2708-gpu-fw
|
|
DEFAULT:=y if TARGET_brcm2708
|
|
endef
|
|
|
|
define Package/brcm2708-gpu-fw/description
|
|
GPU and kernel boot firmware for brcm2708.
|
|
endef
|
|
|
|
define Build/Prepare
|
|
rm -rf $(PKG_BUILD_DIR)
|
|
mkdir -p $(PKG_BUILD_DIR)
|
|
cp $(DL_DIR)/$(RPI_FIRMWARE_FILE)-LICENCE.broadcom $(PKG_BUILD_DIR)/LICENCE.broadcom
|
|
cp $(DL_DIR)/$(RPI_FIRMWARE_FILE)-bootcode.bin $(PKG_BUILD_DIR)/bootcode.bin
|
|
cp $(DL_DIR)/$(RPI_FIRMWARE_FILE)-fixup.dat $(PKG_BUILD_DIR)/fixup.dat
|
|
cp $(DL_DIR)/$(RPI_FIRMWARE_FILE)-fixup_cd.dat $(PKG_BUILD_DIR)/fixup_cd.dat
|
|
cp $(DL_DIR)/$(RPI_FIRMWARE_FILE)-start.elf $(PKG_BUILD_DIR)/start.elf
|
|
cp $(DL_DIR)/$(RPI_FIRMWARE_FILE)-start_cd.elf $(PKG_BUILD_DIR)/start_cd.elf
|
|
endef
|
|
|
|
define Build/Compile
|
|
true
|
|
endef
|
|
|
|
define Package/brcm2708-gpu-fw/install
|
|
true
|
|
endef
|
|
|
|
define Build/InstallDev
|
|
$(CP) $(PKG_BUILD_DIR)/bootcode.bin $(KERNEL_BUILD_DIR)
|
|
$(CP) $(PKG_BUILD_DIR)/LICENCE.broadcom $(KERNEL_BUILD_DIR)
|
|
$(CP) $(PKG_BUILD_DIR)/start.elf $(KERNEL_BUILD_DIR)
|
|
$(CP) $(PKG_BUILD_DIR)/start_cd.elf $(KERNEL_BUILD_DIR)
|
|
$(CP) $(PKG_BUILD_DIR)/fixup.dat $(KERNEL_BUILD_DIR)
|
|
$(CP) $(PKG_BUILD_DIR)/fixup_cd.dat $(KERNEL_BUILD_DIR)
|
|
endef
|
|
|
|
$(eval $(call BuildPackage,brcm2708-gpu-fw))
|