Browse Source

add rpi3 aarch64 sample, not yet fully working

Waldemar Brodkorb 7 years ago
parent
commit
910cee4c6d

+ 5 - 1
package/bcm28xx-bootloader/Makefile

@@ -11,7 +11,7 @@ PKG_SECTION:=		base/boot
 PKG_URL:=		https://github.com/raspberrypi/firmware
 PKG_SITES:=		https://github.com/raspberrypi/firmware.git
 
-PKG_SYSTEM_DEPENDS:=	raspberry-pi raspberry-pi2 raspberry-pi3
+PKG_SYSTEM_DEPENDS:=	raspberry-pi raspberry-pi2 raspberry-pi3 raspberry-pi3-64
 
 PKG_CHOICES_BCM28XX_BOOTLOADER:=	DEFAULT EXTRA CUTDOWN
 PKGCD_DEFAULT:=		default bootloader
@@ -89,6 +89,10 @@ ifeq ($(ADK_TARGET_HARDWARE_RPI3_SERIAL),y)
 	printf "dtoverlay=pi3-disable-bt.dtb\n" >> \
 		$(IDIR_BCM28XX_BOOTLOADER)/boot/config.txt
 endif
+ifeq ($(ADK_TARGET_SYSTEM_RASPBERRY_PI3_64),y)
+	printf "arm_control=0x200\n" >> \
+		$(IDIR_BCM28XX_BOOTLOADER)/boot/config.txt
+endif
 ifeq ($(ADK_PACKAGE_BCM28XX_DEBUGTOOL),y)
 	$(INSTALL_DIR) $(IDIR_BCM28XX_DEBUGTOOL)/opt/vc/bin
 	$(INSTALL_BIN) ./files/vcdbg \

+ 1 - 1
package/bcm28xx-vc/Makefile

@@ -26,7 +26,7 @@ PKGSC_BCM28XX_VC_GL_LIBS:=libs/video
 PKGSS_BCM28XX_VC_GL_LIBS:=bcm28xx-vc-libs
 PKGSD_BCM28XX_VC_GL_LIBS:=videocore gl library
 
-PKG_SYSTEM_DEPENDS:=	raspberry-pi raspberry-pi2 raspberry-pi3
+PKG_SYSTEM_DEPENDS:=	raspberry-pi raspberry-pi2 raspberry-pi3 raspberry-pi3-64
 
 include $(ADK_TOPDIR)/mk/package.mk
 

+ 9 - 9
scripts/install.sh

@@ -144,7 +144,7 @@ tgt=$2
 src=$3
 
 case $target {
-(banana-pro|pcengines-apu|raspberry-pi|raspberry-pi2|raspberry-pi3|solidrun-imx6|solidrun-clearfog|default) ;;
+(banana-pro|pcengines-apu|raspberry-pi|raspberry-pi2|raspberry-pi3|raspberry-pi3-64|solidrun-imx6|solidrun-clearfog|default) ;;
 (*)
 	print -u2 "Unknown target '$target', exiting"
 	exit 1 ;;
@@ -167,7 +167,7 @@ case $ostype {
 	basedev=$tgt
 	rootpart=${basedev}s1
 	datapart=${basedev}s2
-	if [[ $target = raspberry-pi || $target = raspberry-pi2 || $target = raspberry-pi3 ]]; then
+	if [[ $target = raspberry-pi || $target = raspberry-pi2 || $target = raspberry-pi3 || $target = raspberry-pi3-64 ]]; then
 		bootpart=${basedev}s1
 		rootpart=${basedev}s2
 		datapart=${basedev}s3
@@ -194,7 +194,7 @@ case $ostype {
 	basedev=$tgt
 	rootpart=${basedev}1
 	datapart=${basedev}2
-	if [[ $target = raspberry-pi || $target = raspberry-pi2 || $target = raspberry-pi3 ]]; then
+	if [[ $target = raspberry-pi || $target = raspberry-pi2 || $target = raspberry-pi3 || $target = raspberry-pi3-64 ]]; then
 		bootpart=${basedev}1
 		rootpart=${basedev}2
 		datapart=${basedev}3
@@ -257,7 +257,7 @@ syspartno=0
 # data - flexible (parameter)
 # system - everything else
 
-if [[ $target = raspberry-pi || $target = raspberry-pi2 || $target = raspberry-pi3 ]]; then
+if [[ $target = raspberry-pi || $target = raspberry-pi2 || $target = raspberry-pi3 || $target = raspberry-pi3-64 ]]; then
 	syspartno=1
 	bootfssz=100
 	if (( grub )); then
@@ -314,7 +314,7 @@ fi
 #(( partofs = ((coreendsec / secs) + 1) * secs ))
 # we just use 2048 all the time, since some loaders are longer
 partofs=2048
-if [[ $target = raspberry-pi || $target = raspberry-pi2 || $target = raspberry-pi3 ]]; then
+if [[ $target = raspberry-pi || $target = raspberry-pi2 || $target = raspberry-pi3 || $target = raspberry-pi3-64 ]]; then
 	(( spartofs = partofs + (100 * 2048) ))
 else
 	spartofs=$partofs
@@ -425,7 +425,7 @@ if (( datafssz )); then
 	    dd of="$T/firsttrack" conv=notrunc bs=1 seek=$((0x1CE)) 2>/dev/null
 fi
 
-if [[ $target = raspberry-pi || $target = raspberry-pi2 || $target = raspberry-pi3 ]]; then
+if [[ $target = raspberry-pi || $target = raspberry-pi2 || $target = raspberry-pi3 || $target = raspberry-pi3-64 ]]; then
 	# move system and data partition from #0/#1 to #1/#2
 	dd if="$T/firsttrack" bs=1 skip=$((0x1BE)) count=32 of="$T/x" 2>/dev/null
 	dd of="$T/firsttrack" conv=notrunc bs=1 seek=$((0x1CE)) if="$T/x" 2>/dev/null
@@ -515,7 +515,7 @@ case $target {
 	dd if="$fwdir/SPL" of="$tgt" bs=1024 seek=1 > /dev/null 2>&1
 	dd if="$fwdir/u-boot.img" of="$tgt" bs=1024 seek=69 > /dev/null 2>&1
 	;;
-(raspberry-pi|raspberry-pi2|raspberry-pi3)
+(raspberry-pi|raspberry-pi2|raspberry-pi3|raspberry-pi3-64)
 	(( noformat )) || create_fs "$bootpart" ADKBOOT vfat
 	;;
 }
@@ -532,7 +532,7 @@ if (( datafssz )); then
 	((keep)) || create_fs "$datapart" ADKDATA ext4
 	((keep)) || tune_fs "$datapart"
 	case $target {
-	(raspberry-pi|raspberry-pi2|raspberry-pi3)
+	(raspberry-pi|raspberry-pi2|raspberry-pi3|raspberry-pi3-64)
 		echo "/dev/mmcblk0p3	/data	ext4	rw	0	0" >> "$R"/etc/fstab 
 	;;
 	(banana-pro|solidrun-imx6|solidrun-clearfog)
@@ -542,7 +542,7 @@ if (( datafssz )); then
 fi
 
 case $target {
-(raspberry-pi|raspberry-pi2|raspberry-pi3)
+(raspberry-pi|raspberry-pi2|raspberry-pi3|raspberry-pi3-64)
 	mount_fs "$bootpart" "$B" vfat
 	for x in "$R"/boot/*; do
 		[[ -e "$x" ]] && mv -f "$R"/boot/* "$B/"

+ 20 - 1
target/aarch64/Makefile

@@ -20,6 +20,10 @@ endif
 ifeq ($(ADK_TARGET_FS),archive)
 targethelp:
 	@echo "The RootFS tarball is: $(FW_DIR)/$(ROOTFSTARBALL)"
+ifeq ($(ADK_TARGET_BOARD_BCM28XX),y)
+	@echo "Use following command to install it on SD card:"
+	@echo "sudo ./scripts/install.sh $(ADK_TARGET_SYSTEM) /dev/sdX $(FW_DIR)/$(ROOTFSTARBALL)"
+endif
 ifeq ($(ADK_TARGET_QEMU),y)
 	@echo 'The kernel file is: $(FW_DIR)/${TARGET_KERNEL}'
 	@echo "Use following command to create a QEMU Image:"
@@ -57,9 +61,24 @@ kernel-strip:
 kernel-install: kernel-strip
 	@cp $(BUILD_DIR)/$(TARGET_KERNEL) $(FW_DIR)/$(TARGET_KERNEL)
 
+dtb-install:
+ifeq ($(ADK_TARGET_BOARD_BCM28XX),y)
+	env $(KERNEL_MAKE_ENV) $(MAKE) -C "${LINUX_DIR}" $(KERNEL_MAKE_OPTS) \
+		dtbs $(MAKE_TRACE)
+	mkdir -p $(FW_DIR)/overlays
+	for x in $(LINUX_DIR)/arch/arm64/boot/dts/overlays/*.dtbo; do \
+		[[ -e "$$x" ]] && cp $(LINUX_DIR)/arch/arm64/boot/dts/overlays/*.dtbo $(FW_DIR)/overlays; \
+		break; \
+	done
+	for x in $(LINUX_DIR)/arch/arm64/boot/dts/broadcom/*.dtb; do \
+		[[ -e "$$x" ]] && cp $(LINUX_DIR)/arch/arm64/boot/dts/broadcom/*.dtb $(FW_DIR); \
+		break; \
+	done
+endif
+
 # filesystem specific targets
 ifeq ($(ADK_TARGET_FS),archive)
-imageinstall: $(FW_DIR)/$(ROOTFSTARBALL) targethelp
+imageinstall: dtb-install $(FW_DIR)/$(ROOTFSTARBALL) targethelp
 endif
 ifeq ($(ADK_TARGET_FS),initramfs)
 imageinstall: kernel-install $(FW_DIR)/$(INITRAMFS) targethelp

+ 10 - 0
target/aarch64/kernel/raspberry-pi3-64

@@ -0,0 +1,10 @@
+CONFIG_ARM64=y
+CONFIG_ARCH_BCM2835=y
+CONFIG_BRCM_CHAR_DRIVERS=y
+CONFIG_BCM2708_VCMEM=y
+CONFIG_BCM_VCIO=y
+CONFIG_BCMA=y
+CONFIG_MAILBOX=y
+CONFIG_BCM2835_MBOX=y
+CONFIG_RASPBERRYPI_POWER=y
+CONFIG_RASPBERRYPI_FIRMWARE=y

+ 26 - 0
target/aarch64/systems/raspberry-pi3-64

@@ -0,0 +1,26 @@
+config ADK_TARGET_SYSTEM_RASPBERRY_PI3_64
+	bool "Raspberry PI 3 (AARCH64)"
+	depends on ADK_TARGET_LITTLE_ENDIAN
+	select ADK_TARGET_CPU_AARCH64_CORTEX_A53
+	select ADK_TARGET_BOARD_BCM28XX
+	select ADK_TARGET_WITH_VGA
+	select ADK_TARGET_WITH_SERIAL
+	select ADK_TARGET_WITH_CPU_FREQ
+	select ADK_TARGET_WITH_USB
+	select ADK_TARGET_WITH_INPUT
+	select ADK_TARGET_WITH_SD
+	select ADK_TARGET_WITH_I2C
+	select ADK_TARGET_WITH_SPI
+	select ADK_TARGET_WITH_SMP
+	select ADK_TARGET_WITH_NET
+	select ADK_TARGET_WITH_NETDEVICE
+	select ADK_TARGET_WITH_WIFI
+	select ADK_TARGET_WITH_BLOCK
+	select ADK_TARGET_WITH_SOUND
+	select ADK_TARGET_WITH_SDIO
+	select ADK_PACKAGE_BCM28XX_BOOTLOADER
+	select ADK_TARGET_WITH_ROOT_RW
+	select ADK_TARGET_KERNEL_IMAGE
+	help
+	  Raspberry PI 3 (AARCH64)
+

+ 2 - 2
target/config/Config.in.kernelversion

@@ -232,7 +232,7 @@ config ADK_TARGET_KERNEL_GIT_REPO_NAME
 config ADK_TARGET_KERNEL_GIT
 	string "git version"
 	depends on ADK_TARGET_KERNEL_VERSION_GIT
-	default "cd6413a82a66de6ecce828ce67df4f6e3290ea86" if ADK_TARGET_BOARD_BCM28XX
+	default "72134397d72079a533c8fc742701fdc7f5ae7c5b" if ADK_TARGET_BOARD_BCM28XX
 	default "6a2f2e4198eaff63ee75f6085ce9f966c47b4441" if ADK_TARGET_ARCH_LM32
 	default "1d008423ab5fd12459f53342e4d17585ec63cfe4" if ADK_TARGET_SYSTEM_KINETIS_K70
 	default "902739f3353150ac9eb69ad995098f3079d862a3" if ADK_TARGET_SYSTEM_SOLIDRUN_CLEARFOG
@@ -242,7 +242,7 @@ config ADK_TARGET_KERNEL_GIT
 config ADK_TARGET_KERNEL_GIT_VER
 	string "kernel version"
 	depends on ADK_TARGET_KERNEL_VERSION_GIT
-	default "4.9.17" if ADK_TARGET_BOARD_BCM28XX
+	default "4.9.22" if ADK_TARGET_BOARD_BCM28XX
 	default "3.14.79" if ADK_TARGET_SYSTEM_SOLIDRUN_IMX6
 	default "4.4.37" if ADK_TARGET_SYSTEM_BEAGLEBONE_BLACK
 	default "2.6.33" if ADK_TARGET_SYSTEM_KINETIS_K70