RP-PX30平台 编译脚本

2024-04-03 23:32
文章标签 编译 平台 脚本 rp px30

本文主要是介绍RP-PX30平台 编译脚本,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

RP-PX30平台编译和原始的原厂编译还是有点不一样的,贴上make.sh

#!/bin/bash

MAKE_THEARD=`cat /proc/cpuinfo | grep "processor" | wc -l`  #获得主机CPU线程数量
MAKE_TOTAL=`cat /proc/meminfo | grep "MemTotal"  |  tr -cd "[0-9]"` #获得内存大小 按KB 算
MAKE_MEM=` expr $MAKE_TOTAL / 1048576` #内存字节数除以1048576 获得多少个G 的内存
#echo $MAKE_MEM


jvm_set_mem()# jvm 设置内存函数  设置 JACK_SERVER_VM_ARGUMENTS 并给出警告,小于8G内存不能编译
{
        if [ $MAKE_MEM -gt 32 ] #如果内存大于32G 
                then
                {
                        export JACK_SERVER_VM_ARGUMENTS="-Dfile.encoding=UTF-8 -XX:+TieredCompilation -Xmx32768m"
                }
        elif [ $MAKE_MEM -gt 16 ]
                then
                {
                        export JACK_SERVER_VM_ARGUMENTS="-Dfile.encoding=UTF-8 -XX:+TieredCompilation -Xmx16384m"
                }
        elif [ $MAKE_MEM -gt 8 ]
                then
                {
                        export JACK_SERVER_VM_ARGUMENTS="-Dfile.encoding=UTF-8 -XX:+TieredCompilation -Xmx8192m"
                }
        elif [ $MAKE_MEM -ge 6 ]
                then
                {
                        export JACK_SERVER_VM_ARGUMENTS="-Dfile.encoding=UTF-8 -XX:+TieredCompilation -Xmx4096m"
                }
        else
                echo "/***************************************************/" 
                echo "memory less than 7GB, can not compile" 
                echo "memory less than 7GB, can not compile" 
                echo "memory less than 7GB, can not compile" 
                echo "memory less than 7GB, can not compile" 
                echo "memory less than 7GB, can not compile" 
                echo "memory less than 7GB, can not compile" 
                echo "memory less than 7GB, can not compile" 
                echo "memory less than 7GB, can not compile" 
                echo "memory less than 7GB, can not compile" 
                echo "memory less than 7GB, can not compile" 
                echo "memory less than 7GB, can not compile" 
                echo "memory less than 7GB, can not compile" 
                echo "memory less than 7GB, can not compile" 
                echo "memory less than 7GB, can not compile" 
                echo "memory less than 7GB, can not compile" 
                echo "memory less than 7GB, can not compile" 
                echo "memory less than 7GB, can not compile" 
                echo "/***************************************************/" 
                exit 1
        fi
#./prebuilts/sdk/tools/jack-admin start-server
}

path_set()# 设置JDK路径 的 函数 source 一下编译环境envsetup.sh lunch 为 rk3326_evb-userdebug
{
    export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64
#    export JRE_HOME=/usr/lib/jvm/java-8-openjdk-amd64/jre
    export PATH=$JAVA_HOME/bin:$PATH
    export CLASSPATH=.:$JAVA_HOME/lib:$JAVA_HOME/lib/tools.jar

    source build/envsetup.sh
    lunch rk3326_evb-userdebug
}

if [ $1 == "clean" ]#如果第一个参数是 clean, 比如make.sh clean
    then
    {
        if [ $2 == "u-boot"  -o $2 == "u-boot/" -o $2 == "uboot" ]#怕你多打少打,让你兼容一下
            then
            {
                echo make clean u-boot
                pushd u-boot/
                make distclean
                popd
                pushd linux_update/rockdev/
                rm MiniLoaderAll.bin
                popd
                pushd linux_update/rockdev/Image/
                rm trust.img uboot.img
                popd
        }
        elif [ $2 == "kernel" -o $2 == "kernel/" ]#怕你多打少打,让你兼容一下
            then
            {
                    echo make clean kernel
                pushd kernel/
                make clean
                popd
                pushd linux_update/rockdev/Image/
                rm kernel.img resource.img
                popd
        }
        elif [ $2 == "android" -o $2 == "android/" ]#怕你多打少打,让你兼容一下
            then
            {
                    echo make clean android
                path_set
                make clean
                pushd linux_update/rockdev/Image/
                rm misc.img boot.img recovery.img system.img
                popd    
                rm out -rf
            }
        else#如果你执行./make.sh clean 那全干掉
            {
                    echo make clean u-boot
                pushd u-boot/
                make distclean
                popd
                    echo make clean kernel
                pushd kernel/
                make clean
                popd
                    echo make clean android
                path_set
                make clean
                rm out -rf
                pushd rockdev/Image-rk3326_evb/
                rm *.img
                popd
                popd linux_update/rockdev/
                rm MiniLoaderAll.bin update.img
                popd
                pushd linux_update/rockdev/Image/
                rm kernel.img resource.img misc.img boot.img recovery.img system.img update.img trust.img uboot.img
                popd
                echo clean Img oK
            }
        fi
    }
elif [ $1 == "u-boot" -o $1 == "u-boot/"  -o $1 == "uboot" ]#如果是执行uboot编译
    then
    {
        pushd u-boot/
        make mrproper #清配置,清编译文件
        ./make.sh evb-px30 -j8 #编译, 这里怎么把线程加进去了,这如果是4线程的CPU呢
        if [ $? -eq 0 ]; then #如果编译没报错
            echo "Build uboot ok!"
        else
            echo "Build uboot failed!"
            exit 1
        fi
        popd
    }
elif [ $1 == "kernel" -o $1 == "kernel/" ] #如果是执行内核编译
    then
    {
        pushd kernel/

        if [ ! -e .config ]; then #如果没有配置文件,加载默认配置文件
            make ARCH=arm64 rpdzkj_px30_defconfig 
        fi

        make ARCH=arm64 rp-px30.img -j$MAKE_THEARD #多线程编译
        #make ARCH=arm64 px30-evb-ddr3-v10.img -j8
        if [ $? -eq 0 ]; then  #如果编译没报错
            echo "Build kernel ok!"
        else
            echo "Build kernel failed!"
            exit 1
        fi
        popd
        cp kernel/resource.img rockdev/Image-rk3326_evb/
        cp kernel/kernel.img rockdev/Image-rk3326_evb/
        #path_set
        #./mkimage.sh
    }
elif [ $1 == "android" -o $1 == "android/" ] #如果编译安卓
    then
    {
        jvm_set_mem #配置java 参数
        path_set #配置java路径
        make -j $MAKE_THEARD  #多线程编译
        if [ $? -eq 0 ]; then #如果编译没有报错 
            echo "Build android ok!"
        else
            echo "Build android failed!"
            exit 1
        fi
        cp kernel/drivers/net/wireless/rockchip_wlan/rtl8723bu/wlan.ko out/target/product/rk3326_evb/vendor/lib/modules/wifi/8723bu.ko
        ./mkimage.sh 
    }
elif [ $1 == "ota" ] #如果编译OTA
    then
    {
        path_set
        ./mkimage.sh ota
    }
else #如果只执行 ./make.sh 那么全部编译到底
    {
        pushd u-boot/
        make mrproper
        ./make.sh evb-px30 -j8
        if [ $? -eq 0 ]; then
            echo "Build uboot ok!"
        else
            echo "Build uboot failed!"
            exit 1
        fi
        popd
        
        pushd kernel/
        if [ ! -e .config ]; then
            make ARCH=arm64 rpdzkj_px30_defconfig 
        fi
        make ARCH=arm64 rp-px30.img -j $MAKE_THEARD
        #make ARCH=arm64 px30-evb-ddr3-v10.img -j8
        if [ $? -eq 0 ]; then
            echo "Build kernel ok!"
        else
            echo "Build kernel failed!"
            exit 1
        fi
        popd
        jvm_set_mem
        path_set
        make -j $MAKE_THEARD  
        if [ $? -eq 0 ]; then
            echo "Build android ok!"
        else
            echo "Build android failed!"
            exit 1
        fi
        cp kernel/drivers/net/wireless/rockchip_wlan/rtl8723bu/wlan.ko out/target/product/rk3326_evb/vendor/lib/modules/wifi/8723bu.ko
        ./mkimage.sh 
        . rpupdate.sh #生成update.img
    }
fi

 

 

 

 

 

这篇关于RP-PX30平台 编译脚本的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/874259

相关文章

微信公众号脚本-获取热搜自动新建草稿并发布文章

《微信公众号脚本-获取热搜自动新建草稿并发布文章》本来想写一个自动化发布微信公众号的小绿书的脚本,但是微信公众号官网没有小绿书的接口,那就写一个获取热搜微信普通文章的脚本吧,:本文主要介绍微信公众... 目录介绍思路前期准备环境要求获取接口token获取热搜获取热搜数据下载热搜图片给图片加上标题文字上传图片

Java编译生成多个.class文件的原理和作用

《Java编译生成多个.class文件的原理和作用》作为一名经验丰富的开发者,在Java项目中执行编译后,可能会发现一个.java源文件有时会产生多个.class文件,从技术实现层面详细剖析这一现象... 目录一、内部类机制与.class文件生成成员内部类(常规内部类)局部内部类(方法内部类)匿名内部类二、

通过Python脚本批量复制并规范命名视频文件

《通过Python脚本批量复制并规范命名视频文件》本文介绍了如何通过Python脚本批量复制并规范命名视频文件,实现自动补齐数字编号、保留原始文件、智能识别有效文件等功能,听过代码示例介绍的非常详细,... 目录一、问题场景:杂乱的视频文件名二、完整解决方案三、关键技术解析1. 智能路径处理2. 精准文件名

web网络安全之跨站脚本攻击(XSS)详解

《web网络安全之跨站脚本攻击(XSS)详解》:本文主要介绍web网络安全之跨站脚本攻击(XSS)的相关资料,跨站脚本攻击XSS是一种常见的Web安全漏洞,攻击者通过注入恶意脚本诱使用户执行,可能... 目录前言XSS 的类型1. 存储型 XSS(Stored XSS)示例:危害:2. 反射型 XSS(Re

Python3脚本实现Excel与TXT的智能转换

《Python3脚本实现Excel与TXT的智能转换》在数据处理的日常工作中,我们经常需要将Excel中的结构化数据转换为其他格式,本文将使用Python3实现Excel与TXT的智能转换,需要的可以... 目录场景应用:为什么需要这种转换技术解析:代码实现详解核心代码展示改进点说明实战演练:从Excel到

Python脚本实现图片文件批量命名

《Python脚本实现图片文件批量命名》这篇文章主要为大家详细介绍了一个用python第三方库pillow写的批量处理图片命名的脚本,文中的示例代码讲解详细,感兴趣的小伙伴可以了解下... 目录前言源码批量处理图片尺寸脚本源码GUI界面源码打包成.exe可执行文件前言本文介绍一个用python第三方库pi

shell脚本自动删除30天以前的文件(最新推荐)

《shell脚本自动删除30天以前的文件(最新推荐)》该文章介绍了如何使用Shell脚本自动删除指定目录下30天以前的文件,并通过crontab设置定时任务,此外,还提供了如何使用Shell脚本删除E... 目录shell脚本自动删除30天以前的文件linux按照日期定时删除elasticsearch索引s

IDEA编译报错“java: 常量字符串过长”的原因及解决方法

《IDEA编译报错“java:常量字符串过长”的原因及解决方法》今天在开发过程中,由于尝试将一个文件的Base64字符串设置为常量,结果导致IDEA编译的时候出现了如下报错java:常量字符串过长,... 目录一、问题描述二、问题原因2.1 理论角度2.2 源码角度三、解决方案解决方案①:StringBui

10个Python自动化办公的脚本分享

《10个Python自动化办公的脚本分享》在日常办公中,我们常常会被繁琐、重复的任务占据大量时间,本文为大家分享了10个实用的Python自动化办公案例及源码,希望对大家有所帮助... 目录1. 批量处理 Excel 文件2. 自动发送邮件3. 批量重命名文件4. 数据清洗5. 生成 PPT6. 自动化测试

使用Java实现一个解析CURL脚本小工具

《使用Java实现一个解析CURL脚本小工具》文章介绍了如何使用Java实现一个解析CURL脚本的工具,该工具可以将CURL脚本中的Header解析为KVMap结构,获取URL路径、请求类型,解析UR... 目录使用示例实现原理具体实现CurlParserUtilCurlEntityICurlHandler