From f070c462a936f401b7ab915b42dea4e0f662bb81 Mon Sep 17 00:00:00 2001 From: android <android@lingyun.com> Date: Sun, 16 Jun 2024 19:39:01 +0800 Subject: [PATCH] Add Linux SDK build shell script --- config.json | 14 + linux_sdk/build.sh | 178 ++++++++++++++++++++++ linux_sdk/patches/kernel.patch | 267 +++++++++++++++++++++++++++++++++ 3 files changed, 459 insertions(+), 0 deletions(-) diff --git a/config.json b/config.json new file mode 100644 index 0000000..71cbd85 --- /dev/null +++ b/config.json @@ -0,0 +1,14 @@ +{ + "board":"IGKBoard-RK3568", + "linux": + { + "sdk_ver":"sdkv1.4.0_linux5.10", + "sdk_path":"/srv/ftp/rockchip/bsp/rk3568_linuxsdk/", + "distro":"buildroot" + }, + "android": + { + "sdk_ver":"android-13.0-mid-rkr6", + "sdk_path":"/srv/ftp/rockchip/bsp/rk3568_android/android13_sdk/" + } +} diff --git a/linux_sdk/build.sh b/linux_sdk/build.sh new file mode 100755 index 0000000..bbbb060 --- /dev/null +++ b/linux_sdk/build.sh @@ -0,0 +1,178 @@ +#!/bin/bash + +# this project absolute path +PRJ_PATH=$(cd $(dirname "${BASH_SOURCE[0]}") && pwd) + +# top project absolute path +TOP_PATH=$(realpath $PRJ_PATH/..) + +# SDK build workspace +SDK_DIR=sdk_build + +# binaries build prefix install path +PRFX_PATH=$PRJ_PATH/install + +# binaries finally install path if needed +#INST_PATH=/tftp + +# download taballs path +TARBALL_PATH=$PRJ_PATH/tarballs + +# config file path +CONF_FILE=$TOP_PATH/config.json + +# shell script will exit once get command error +set -e + +#+-------------------------+ +#| Shell script functions | +#+-------------------------+ + +function pr_error() { + echo -e "\033[40;31m $1 \033[0m" +} + +function pr_warn() { + echo -e "\033[40;33m $1 \033[0m" +} + +function pr_info() { + echo -e "\033[40;32m $1 \033[0m" +} + +# decompress a packet to destination path +function do_unpack() +{ + tarball=$1 + dstpath=`pwd` + + if [[ $# == 2 ]] ; then + dstpath=$2 + fi + + pr_info "decompress $tarball => $dstpath" + + mkdir -p $dstpath + case $tarball in + *.tar.gz) + tar -xzf $tarball -C $dstpath + ;; + + *.tgz) + tar -xzf $tarball -C $dstpath + ;; + + *.tar.bz2) + tar -xjf $tarball -C $dstpath + ;; + + *.tar.xz) + tar -xJf $tarball -C $dstpath + ;; + + *.tar.zst) + tar -I zstd -xf $tarball -C $dstpath + ;; + + *.tar) + tar -xf $tarball -C $dstpath + ;; + + *.zip) + unzip -qo $tarball -d $dstpath + ;; + + *) + pr_error "decompress Unsupport packet: $tarball" + return 1; + ;; + esac +} + +# parser configure file and export environment variable +function export_env() +{ + export BOARD=`jq -r ".board" $CONF_FILE | tr 'A-Z' 'a-z'` + export SDK_VER=`jq -r ".linux.sdk_ver" $CONF_FILE` + export SDK_PATH=`jq -r ".linux.sdk_path" $CONF_FILE` + export DISTRO=`jq -r ".linux.distro" $CONF_FILE | tr 'A-Z' 'a-z'` + + export ARCH=arm64 + + if [[ $BOARD =~ igkboard-rk3568 ]] ; then + LUNCH_BOARD=rockchip_rk3568_evb1_ddr4_v10_defconfig + fi + + PYTHON_VERSION=$(python --version 2>&1 | awk '{print $2}' | cut -d. -f1) + if [ $PYTHON_VERSION != "3" ] ; then + PYTHON_VERSION=$(python --version 2>&1) + pr_error "ERROR: This SDK build need Python3, current version is $PYTHON_VERSION" + pr_warn "You can use 'sudo update-alternatives --config python' command to switch it" + exit + fi +} + +function do_fetch() +{ + SDK_FPATH=$SDK_PATH/$SDK_VER + + PATCH_FLAG="$SDK_DIR/kernel/arch/arm64/configs/rockchip_linux_defconfig" + + if [ -e $PATCH_FLAG ] ; then + pr_warn "SDK source code fetched already, skip do fetch" + return ; + fi + + if [ ! -d $SDK_DIR/.repo ] ; then + + SDK_FILE=`ls $SDK_FPATH/*.tar.bz2 | head -n 1` + + if [ ! -d $SDK_FPATH ] ; then + pr_error "ERROR: SDK package folder '$SDK_FPATH' doesn't exist!" + exit + fi + + pr_info "decompress SDK tarball $SDK_FILE..." + + do_unpack $SDK_FILE $SDK_DIR + fi + + cd $SDK_DIR + + if [ ! -e $PATCH_FLAG ] ; then + pr_info "repo sync to checkout source code..." + ./.repo/repo/repo sync -l + fi + + if ! grep -q '^CONFIG_CAN=y' $PATCH_FLAG ; then + pr_info "patch for linux kernel..." + cd kernel + patch -p1 < $PRJ_PATH/patch/kernel.patch + fi +} + +function do_build() +{ + pr_info "Choose your board" + + cd $SDK_DIR + + ./build.sh lunch:${LUNCH_BOARD} + + RK_ROOTFS_SYSTEM=$DISTRO ./build.sh + + pr_info "System image will be installed to $PRJ_PATH/$SDK_DIR/rockdev" + ls ./rockdev +} + +#+-------------------------+ +#| Shell script body entry | +#+-------------------------+ + +export_env + +pr_warn "start build linux kernel for ${BOARD}" + +do_fetch + +do_build diff --git a/linux_sdk/patches/kernel.patch b/linux_sdk/patches/kernel.patch new file mode 100644 index 0000000..037fe05 --- /dev/null +++ b/linux_sdk/patches/kernel.patch @@ -0,0 +1,267 @@ +diff --git a/arch/arm64/boot/dts/rockchip/rk3568-evb.dtsi b/arch/arm64/boot/dts/rockchip/rk3568-evb.dtsi +index f13c2387f1d2..df730a87027e 100644 +--- a/arch/arm64/boot/dts/rockchip/rk3568-evb.dtsi ++++ b/arch/arm64/boot/dts/rockchip/rk3568-evb.dtsi +@@ -348,7 +348,7 @@ wireless_wlan: wireless-wlan { + rockchip,grf = <&grf>; + wifi_chip_type = "ap6398s"; + WIFI,poweren_gpio = <&gpio3 RK_PD5 GPIO_ACTIVE_HIGH>; +- status = "okay"; ++ status = "disabled"; + }; + + wireless_bluetooth: wireless-bluetooth { +@@ -363,7 +363,7 @@ wireless_bluetooth: wireless-bluetooth { + BT,reset_gpio = <&gpio3 RK_PA0 GPIO_ACTIVE_HIGH>; + BT,wake_gpio = <&gpio3 RK_PA1 GPIO_ACTIVE_HIGH>; + BT,wake_host_irq = <&gpio3 RK_PA2 GPIO_ACTIVE_HIGH>; +- status = "okay"; ++ status = "disabled"; + }; + + test-power { +@@ -681,15 +681,15 @@ dsi0_panel: panel@0 { + disp_timings0: display-timings { + native-mode = <&dsi0_timing0>; + dsi0_timing0: timing0 { +- clock-frequency = <132000000>; +- hactive = <1080>; +- vactive = <1920>; +- hfront-porch = <15>; +- hsync-len = <2>; +- hback-porch = <30>; +- vfront-porch = <15>; +- vsync-len = <2>; +- vback-porch = <15>; ++ clock-frequency = <149600000>; ++ hactive = <1920>; ++ vactive = <1080>; ++ hfront-porch = <48>; ++ hsync-len = <32>; ++ hback-porch = <147>; ++ vfront-porch = <3>; ++ vsync-len = <6>; ++ vback-porch = <51>; + hsync-active = <0>; + vsync-active = <0>; + de-active = <0>; +@@ -1375,13 +1375,15 @@ rk809_codec: codec { + &i2c1 { + status = "okay"; + +- gt1x: gt1x@14 { +- compatible = "goodix,gt1x"; +- reg = <0x14>; ++ ili251x@41 { ++ compatible = "ilitek,ili251x"; ++ reg = <0x41>; + pinctrl-names = "default"; + pinctrl-0 = <&touch_gpio>; +- goodix,rst-gpio = <&gpio0 RK_PB6 GPIO_ACTIVE_HIGH>; +- goodix,irq-gpio = <&gpio0 RK_PB5 IRQ_TYPE_LEVEL_LOW>; ++ interrupt-parent = <&gpio0>; ++ interrupts = <13 IRQ_TYPE_EDGE_FALLING>; ++ reset-gpios = <&gpio0 RK_PB6 GPIO_ACTIVE_LOW>; ++ max-fingers = <6>; + }; + }; + +@@ -1545,9 +1547,9 @@ &pmu_io_domains { + pmuio2-supply = <&vcc3v3_pmu>; + vccio1-supply = <&vccio_acodec>; + vccio3-supply = <&vccio_sd>; +- vccio4-supply = <&vcc_3v3>; ++ vccio4-supply = <&vcc_1v8>; + vccio5-supply = <&vcc_3v3>; +- vccio6-supply = <&vcc_3v3>; ++ vccio6-supply = <&vcc_1v8>; + vccio7-supply = <&vcc_3v3>; + }; + +diff --git a/arch/arm64/boot/dts/rockchip/rk3568-evb1-ddr4-v10-linux.dts b/arch/arm64/boot/dts/rockchip/rk3568-evb1-ddr4-v10-linux.dts +index b6b618bb561a..36cd17a68309 100644 +--- a/arch/arm64/boot/dts/rockchip/rk3568-evb1-ddr4-v10-linux.dts ++++ b/arch/arm64/boot/dts/rockchip/rk3568-evb1-ddr4-v10-linux.dts +@@ -15,3 +15,50 @@ &vp0 { + &vp1 { + cursor-win-id = <ROCKCHIP_VOP2_CLUSTER1>; + }; ++ ++&uart3{ ++ dma-names = "tx", "rx"; ++ pinctrl-names = "default"; ++ pinctrl-0 = <&uart3m1_xfer>; ++ status = "okay"; ++}; ++ ++&uart4{ ++ dma-names = "tx", "rx"; ++ pinctrl-names = "default"; ++ pinctrl-0 = <&uart4m1_xfer>; ++ status = "okay"; ++}; ++ ++&uart9 { ++ pinctrl-names = "default"; ++ pinctrl-0 = <&uart9m1_xfer &rs485_ctrl>; ++ status = "okay"; ++}; ++ ++&can0 { ++ compatible = "rockchip,rk3568-can-2.0"; ++ assigned-clocks = <&cru CLK_CAN0>; ++ assigned-clock-rates = <150000000>; ++ pinctrl-names = "default"; ++ pinctrl-0 = <&can0m1_pins>; ++ status = "okay"; ++}; ++ ++&can1 { ++ compatible = "rockchip,rk3568-can-2.0"; ++ assigned-clocks = <&cru CLK_CAN1>; ++ assigned-clock-rates = <150000000>; ++ pinctrl-names = "default"; ++ pinctrl-0 = <&can1m1_pins>; ++ status = "okay"; ++}; ++ ++&pinctrl { ++ ++ rs485 { ++ rs485_ctrl: rs485-ctrl { ++ rockchip,pins = <4 RK_PD2 RK_FUNC_GPIO &pcfg_pull_none>; ++ }; ++ }; ++}; +diff --git a/arch/arm64/boot/dts/rockchip/rk3568-evb1-ddr4-v10.dtsi b/arch/arm64/boot/dts/rockchip/rk3568-evb1-ddr4-v10.dtsi +index dc9ad4236dd3..ec5a5f7bcf6c 100644 +--- a/arch/arm64/boot/dts/rockchip/rk3568-evb1-ddr4-v10.dtsi ++++ b/arch/arm64/boot/dts/rockchip/rk3568-evb1-ddr4-v10.dtsi +@@ -186,15 +186,15 @@ &dsi1_panel { + + &edp { + hpd-gpios = <&gpio0 RK_PC2 GPIO_ACTIVE_HIGH>; +- status = "okay"; ++ status = "disabled"; + }; + + &edp_phy { +- status = "okay"; ++ status = "disabled"; + }; + + &edp_in_vp0 { +- status = "okay"; ++ status = "disabled"; + }; + + &edp_in_vp1 { +@@ -259,10 +259,11 @@ &gmac1m1_rgmii_clk + * power-supply should switche to vcc3v3_lcd1_n + * when mipi panel is connected to dsi1. + */ ++/* + >1x { + power-supply = <&vcc3v3_lcd0_n>; + }; +- ++*/ + &i2c4 { + status = "okay"; + gc8034: gc8034@37 { +@@ -356,13 +357,13 @@ &video_phy1 { + }; + + &pcie30phy { +- status = "okay"; ++ status = "disabled"; + }; + + &pcie3x2 { + reset-gpios = <&gpio2 RK_PD6 GPIO_ACTIVE_HIGH>; + vpcie3v3-supply = <&vcc3v3_pcie>; +- status = "okay"; ++ status = "disabled"; + }; + + &pinctrl { +@@ -424,7 +425,7 @@ &route_dsi0 { + }; + + &route_edp { +- status = "okay"; ++ status = "disabled"; + connect = <&vp0_out_edp>; + }; + +@@ -489,5 +490,5 @@ &wireless_bluetooth { + BT,reset_gpio = <&gpio3 RK_PA0 GPIO_ACTIVE_HIGH>; + BT,wake_gpio = <&gpio3 RK_PA2 GPIO_ACTIVE_HIGH>; + BT,wake_host_irq = <&gpio3 RK_PA1 GPIO_ACTIVE_HIGH>; +- status = "okay"; ++ status = "disabled"; + }; +diff --git a/arch/arm64/configs/rockchip_linux_defconfig b/arch/arm64/configs/rockchip_linux_defconfig +index 688203de6bae..47da208d49e3 100644 +--- a/arch/arm64/configs/rockchip_linux_defconfig ++++ b/arch/arm64/configs/rockchip_linux_defconfig +@@ -60,13 +60,10 @@ CONFIG_ARMV8_DEPRECATED=y + CONFIG_SWP_EMULATION=y + CONFIG_CP15_BARRIER_EMULATION=y + CONFIG_SETEND_EMULATION=y +-# CONFIG_ARM64_PTR_AUTH is not set + # CONFIG_ARM64_AMU_EXTN is not set +-# CONFIG_ARM64_TLB_RANGE is not set + # CONFIG_ARM64_BTI is not set + # CONFIG_ARM64_E0PD is not set + # CONFIG_ARCH_RANDOM is not set +-# CONFIG_ARM64_MTE is not set + # CONFIG_ARM64_SVE is not set + CONFIG_ARM64_PSEUDO_NMI=y + CONFIG_PM_DEBUG=y +@@ -120,6 +117,9 @@ CONFIG_SYN_COOKIES=y + CONFIG_NETFILTER=y + CONFIG_IP_NF_IPTABLES=y + CONFIG_IP_NF_MANGLE=y ++CONFIG_CAN=y ++CONFIG_CAN_ROCKCHIP=y ++CONFIG_CANFD_ROCKCHIP=y + CONFIG_BT=y + CONFIG_BT_RFCOMM=y + CONFIG_BT_HIDP=y +@@ -212,8 +212,19 @@ CONFIG_STMMAC_ETH=y + CONFIG_MOTORCOMM_PHY=y + CONFIG_ROCKCHIP_PHY=y + CONFIG_RK630_PHY=y ++CONFIG_PPP=y ++CONFIG_PPP_BSDCOMP=y ++CONFIG_PPP_DEFLATE=y ++CONFIG_PPP_FILTER=y ++CONFIG_PPP_MPPE=y ++CONFIG_PPP_MULTILINK=y ++CONFIG_PPPOE=y ++CONFIG_PPP_ASYNC=y ++CONFIG_PPP_SYNC_TTY=y + CONFIG_USB_RTL8150=y + CONFIG_USB_RTL8152=y ++CONFIG_USB_USBNET=y ++CONFIG_USB_NET_CDC_MBIM=y + CONFIG_WL_ROCKCHIP=y + CONFIG_WIFI_BUILD_MODULE=y + CONFIG_AP6XXX=m +@@ -230,6 +241,7 @@ CONFIG_INPUT_TOUCHSCREEN=y + CONFIG_TOUCHSCREEN_ATMEL_MXT=y + CONFIG_TOUCHSCREEN_GSL3673=y + CONFIG_TOUCHSCREEN_GT1X=y ++CONFIG_TOUCHSCREEN_ILI210X=y + CONFIG_TOUCHSCREEN_ELAN=y + CONFIG_TOUCHSCREEN_USB_COMPOSITE=y + CONFIG_ROCKCHIP_REMOTECTL=y +@@ -628,7 +640,6 @@ CONFIG_CRYPTO_USER_API_HASH=y + CONFIG_CRYPTO_USER_API_SKCIPHER=y + CONFIG_CRYPTO_DEV_ROCKCHIP=y + CONFIG_CRYPTO_DEV_ROCKCHIP_DEV=y +-CONFIG_CRC_CCITT=y + CONFIG_CRC_T10DIF=y + CONFIG_CRC7=y + # CONFIG_XZ_DEC_X86 is not set -- Gitblit v1.9.1