From 910cee4c6dd1362574acf182419b5d2d2625ee06 Mon Sep 17 00:00:00 2001 From: Waldemar Brodkorb Date: Sun, 16 Apr 2017 18:11:26 +0200 Subject: [PATCH] add rpi3 aarch64 sample, not yet fully working --- package/bcm28xx-bootloader/Makefile | 6 +++++- package/bcm28xx-vc/Makefile | 2 +- scripts/install.sh | 18 +++++++++--------- target/aarch64/Makefile | 21 ++++++++++++++++++++- target/aarch64/kernel/raspberry-pi3-64 | 10 ++++++++++ target/aarch64/systems/raspberry-pi3-64 | 26 ++++++++++++++++++++++++++ target/config/Config.in.kernelversion | 4 ++-- 7 files changed, 73 insertions(+), 14 deletions(-) create mode 100644 target/aarch64/kernel/raspberry-pi3-64 create mode 100644 target/aarch64/systems/raspberry-pi3-64 diff --git a/package/bcm28xx-bootloader/Makefile b/package/bcm28xx-bootloader/Makefile index 2168f5c80..a86b8fea8 100644 --- a/package/bcm28xx-bootloader/Makefile +++ b/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 \ diff --git a/package/bcm28xx-vc/Makefile b/package/bcm28xx-vc/Makefile index 3b3b23582..d7ed69610 100644 --- a/package/bcm28xx-vc/Makefile +++ b/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 diff --git a/scripts/install.sh b/scripts/install.sh index 698a4eaa1..dbdcfa6ad 100755 --- a/scripts/install.sh +++ b/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/" diff --git a/target/aarch64/Makefile b/target/aarch64/Makefile index 34a2b8ecd..c96264c39 100644 --- a/target/aarch64/Makefile +++ b/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 diff --git a/target/aarch64/kernel/raspberry-pi3-64 b/target/aarch64/kernel/raspberry-pi3-64 new file mode 100644 index 000000000..6d9ace351 --- /dev/null +++ b/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 diff --git a/target/aarch64/systems/raspberry-pi3-64 b/target/aarch64/systems/raspberry-pi3-64 new file mode 100644 index 000000000..03f1d755d --- /dev/null +++ b/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) + diff --git a/target/config/Config.in.kernelversion b/target/config/Config.in.kernelversion index fe135aa5b..60c1be2cf 100644 --- a/target/config/Config.in.kernelversion +++ b/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 -- 2.11.4.GIT