怎样做免费网站建设采购系统
怎样做免费网站建设,采购系统,整站优化服务,wordpress 商业版权1. 从零开始#xff1a;认识你的RK3588开发板与Android 12
大家好#xff0c;我是老张#xff0c;在嵌入式开发这块摸爬滚打了十几年#xff0c;从早期的ARM9一路玩到现在的RK3588。今天咱们不聊那些虚头巴脑的理论#xff0c;直接上手#xff0c;把一块崭新的RK3588开发…1. 从零开始认识你的RK3588开发板与Android 12大家好我是老张在嵌入式开发这块摸爬滚打了十几年从早期的ARM9一路玩到现在的RK3588。今天咱们不聊那些虚头巴脑的理论直接上手把一块崭新的RK3588开发板从开箱到跑起你自己的Android 12系统整个过程给你讲透。很多朋友拿到这种高性能的开发板看着一堆资料头就大了其实没那么复杂跟着我的步骤走避开我踩过的那些坑你也能轻松搞定。首先你得知道你手里这块板子是什么。RK3588是瑞芯微推出的一款高性能、高集成度的处理器八核架构性能非常强悍用来做智能终端、边缘计算盒子或者高端平板都非常合适。而我们今天要做的就是在它上面运行谷歌最新的Android 12系统。为什么是Android 12因为它带来了更好的隐私保护、更流畅的UI引擎Material You以及对大屏设备的原生优化这对于开发智能家居中控、商显广告机或者高性能平板来说是绝佳的选择。在开始之前你需要准备好几样东西一台性能还不错的电脑建议Linux系统Ubuntu 20.04或22.04 LTS版本最省心内存最好16G以上硬盘预留200G空间你的RK3588开发板我用的型号是RK_EVB7_RK3588_LP4_V11不同板型后续配置会有细微差别一根USB Type-C数据线用于烧录和调试以及一个稳定的网络环境因为要下载海量的源码。别怕咱们一步一步来就像搭积木一样从搭建环境到编译系统最后烧录进去看到开机画面整个过程我会把每个细节都掰开揉碎了讲。2. 搭建编译环境为你的“厨房”备好锅碗瓢盆想把Android系统这道“大餐”做出来你得先有个像样的“厨房”。这个厨房就是我们的Ubuntu编译环境。很多新手卡在第一步不是依赖包没装全就是权限没设对编译到一半报各种稀奇古怪的错误。我当年也是这么过来的所以下面这些步骤都是我实测下来最稳的配置。2.1 Ubuntu系统与基础依赖安装如果你用的是全新的Ubuntu系统第一件事就是更新软件源并安装一堆必要的工具包。打开终端挨个执行下面的命令。别嫌麻烦这些都是基础少了哪一个后续都可能引发连锁问题。sudo apt-get update sudo apt-get upgrade -y更新完系统后安装编译Android所需的依赖包。这个命令比较长涵盖了从Java开发环境到各种编译工具、库文件。sudo apt-get install -y git-core gnupg flex bison build-essential zip curl zlib1g-dev \ gcc-multilib g-multilib libc6-dev-i386 libncurses5 lib32ncurses5-dev \ x11proto-core-dev libx11-dev lib32z1-dev libgl1-mesa-dev libxml2-utils \ xsltproc unzip fontconfig python3 openjdk-11-jdk这里有个关键点Java版本。Android 12的编译需要OpenJDK 11用其他版本比如8或者17大概率会出错。安装完后可以用java -version确认一下。另外建议把Python的默认版本指向Python 3因为很多脚本已经不再支持Python 2了可以用sudo update-alternatives --config python来设置。2.2 配置Repo工具与磁盘准备Android源码是通过Google的Repo工具管理的它本质上是一个用Python写的、用于管理多个Git仓库的脚本。我们先把它下载到本地并放到系统路径里。mkdir ~/bin curl https://storage.googleapis.com/git-repo-downloads/repo ~/bin/repo chmod ax ~/bin/repo接下来把~/bin目录添加到你的环境变量PATH中。编辑你的~/.bashrc文件在末尾加上一行export PATH~/bin:$PATH然后执行source ~/.bashrc让配置生效。现在在终端里输入repo version应该能看到版本信息了。最后也是非常重要的一步确保你的磁盘空间足够并且文件系统是区分大小写的。Android源码编译需要在一个区分大小写的文件系统上进行否则会编译失败。在Ubuntu下你可以用一个独立的ext4分区或者创建一个区分大小写的磁盘镜像文件。我图省事直接用一个单独的200G ext4分区来存放源码。你可以用df -h命令查看分区情况。3. 获取与同步RK3588专属的Android 12源码源码是“食材”。RK3588的Android 12源码不是从谷歌官方直接拉取的而是瑞芯微在其基础上进行了大量硬件适配和驱动整合后提供的。所以我们需要从瑞芯微指定的服务器获取。这个过程需要一点耐心因为代码量非常大。3.1 解压初始包与身份验证通常瑞芯微会提供一个压缩包比如rk3588_android12_src_20230301.tgz里面包含了Repo的清单文件和部分基础代码。我们先把它解压到我们的工作目录比如~/rk3588_android12。cd ~ tar -xzvf rk3588_android12_src_20230301.tgz cd rk3588_android12解压后你会发现里面有一个名为your_verify.sh的脚本名字可能略有不同。这个脚本是瑞芯微用于验证开发者身份的你需要联系板卡供应商或瑞芯微官方获取执行权限。运行它./your_verify.sh按照提示输入相关信息完成验证。这一步确保了你有权限访问后续的私有代码仓库。3.2 同步代码仓库验证通过后就可以开始同步代码了。首先初始化Repo并拉取清单manifest中定义的代码列表.repo/repo/repo sync -l这个-l参数仅同步本地已有的代码速度较快。接下来进行完整的代码同步这将从服务器拉取所有最新的代码耗时最长非常依赖网络稳定性.repo/repo/repo sync -c -j4这里的-c表示只同步当前分支-j4表示用4个线程并行下载你可以根据你的网络情况调整线程数。这一步是最大的拦路虎。我遇到过无数次因为网络波动导致的失败。有条件的建议找个网络好的环境或者使用一些网络工具来保持连接稳定。如果中途失败重新执行repo sync -c命令即可它会自动断点续传。同步完成后整个rk3588_android12目录的大小应该在100GB左右。恭喜你最耗时的一步已经完成了。4. 编译前的关键配置选对“图纸”才能造对“房子”源码拉下来了但还不能直接编译。我们需要告诉编译系统我们是为哪块具体的开发板编译系统。这就好比盖房子你得有对应户型的设计图DTS文件。配置错了编译出来的系统可能无法启动或者屏幕不亮、网卡不认。4.1 确定设备树DTS文件RK3588的硬件配置信息比如用了哪个型号的DDR内存、屏幕接口是啥、有哪些外设都写在设备树Device Tree文件里。这个文件的后缀是.dts。我们需要根据自己开发板上的丝印就是板子上印的型号文字找到对应的dts文件。文件路径在kernel-5.10/arch/arm64/boot/dts/rockchip/用ls命令看一下这个目录你会发现一堆以rk3588-开头的.dts文件。比如我的板子是RK_EVB7_RK3588_LP4_V11那么对应的基础dts文件很可能就是rk3588-evb7-lp4-v11.dts。这一步至关重要一定要确认清楚。如果不确定可以咨询板卡卖家或查阅开发板附带的资料。4.2 配置编译选项找到正确的dts文件名后我们不需要直接修改它。编译系统会通过环境变量和lunch命令来选择。首先初始化编译环境source build/envsetup.sh这个脚本会设置一堆Android编译所需的环境变量和函数。接着使用lunch命令选择目标设备。对于RK3588通常的选择是lunch rk3588_s-userdebug这里rk3588_s是产品名userdebug是编译类型带有root权限和调试符号适合开发。执行后终端会显示类似TARGET_PRODUCTrk3588_s的信息说明配置成功了。5. 启动编译一场与时间的耐心较量配置妥当终于可以开始编译了。编译整个Android系统是一项计算密集型任务非常消耗时间和CPU资源。对于一台8核16线程、32G内存的电脑完整编译一次可能需要3到6个小时。所以最好挑个你不需要用电脑的时间段比如晚上让它慢慢跑。5.1 执行编译命令最基础的编译命令是./build.sh -AUCKu -d rk3588-evb7-v11我来解释一下这几个参数-A编译AOSP部分。-U编译UBoot引导程序。-C编译内核Kernel。-K编译内核模块。-u在编译完成后打包生成update.img统一烧录镜像。-d rk3588-evb7-v11指定设备树名称这里要换成你之前确定的、不带.dts后缀的文件名基础部分。但是直接这么跑有个风险如果你的SSH连接不稳定或者电脑屏幕休眠导致终端中断编译进程就会戛然而止前功尽弃。所以我强烈推荐使用nohup命令让它在后台运行并把所有输出日志重定向到一个文件里nohup ./build.sh -AUCKu -d rk3588-evb7-v11 build.log 21 这条命令的意思是忽略挂断信号nohup执行编译把标准输出和标准错误21都重定向到build.log文件并且放到后台运行。这样你就可以关掉终端甚至注销用户编译都会继续。你可以随时用tail -f build.log来查看实时的编译日志。5.2 处理编译中断与增量编译编译过程中如果因为服务器问题或意外重启中断了别慌。首先检查一下日志文件build.log的最后几行看报什么错。如果是网络问题导致某个仓库拉取失败可以尝试单独同步那个仓库。如果编译环境本身出了问题可能需要清理一下再重新开始。但注意不要一上来就make clean那会删除所有已编译的中间文件相当于从头再来。可以先尝试只清理出错的那个模块。如果实在不行再使用make clean这会把out/目录清空下次编译就是全新的。好消息是只要源码和配置没变第一次完整编译成功后后续如果你只修改了某个App的代码或某个内核驱动再进行编译就是增量编译速度会快非常多可能几分钟就搞定。编译系统很智能只会重新编译改动过的部分。5.3 验证编译成果编译顺利结束后终端会提示#### build completed successfully。这时所有的系统镜像文件都生成在rockdev/Image-rk3588_s/目录下。你可以进去检查一下关键文件是否齐全ls -lh rockdev/Image-rk3588_s/你应该能看到这些核心镜像文件boot.img内核和初始内存盘ramdisk镜像。dtbo.img设备树叠加层镜像用于动态修改设备树。MiniLoaderAll.bin瑞芯微芯片的一级引导程序。misc.img misc分区镜像包含恢复模式等指令。parameter.txt分区表定义文件。recovery.img恢复模式镜像。super.img动态分区镜像里面包含了system、vendor、product等系统分区。uboot.imgU-Boot引导程序镜像。vbmeta.imgAndroid Verified Boot (AVB) 元数据镜像。最省事的是那个update.img文件它是把所有上述镜像打包成一个的“全家桶”用瑞芯微的烧录工具可以直接烧写这个文件特别方便。如果这个目录里没有update.img可能是编译参数没加-u你可以单独使用./mkimage.sh脚本来生成。6. 烧录镜像让系统在开发板上“活”过来编译出来的镜像还躺在电脑硬盘里现在我们要把它们“烧”进开发板的存储中。这个过程就像给手机刷机需要用到瑞芯微官方的烧录工具RKDevTool。注意这个工具是Windows软件所以你需要一台Windows电脑或者Windows虚拟机来完成烧录。6.1 安装驱动与连接开发板首先去瑞芯微官网下载最新的DriverAssistant驱动助手和RKDevTool。我实测时用的是DriverAssistant V5.1.1和RKDevTool v2.96。安装驱动有个小技巧不管之前装没装过先以管理员身份运行DriverAssistant点击“驱动卸载”然后再点击“驱动安装”。这样可以避免旧驱动残留导致设备识别异常。安装好驱动后用USB Type-C数据线连接开发板和电脑。开发板通常有三种烧录模式Loader模式最常用的模式。开发板先断电然后按住板子上的“Recovery”或“Download”键不放再给开发板上电保持按住几秒后松开电脑就会识别到一个Loader设备。MaskROM模式救砖模式。当Loader损坏无法启动时使用。需要短接板子上特定的“MaskROM”测试点具体位置看原理图然后再上电电脑会识别到一个MaskROM设备。ADB模式系统已经正常启动后的调试模式。对于第一次烧录我们通常使用Loader模式。连接好后打开设备管理器在“通用串行总线设备”或“便携设备”里应该能看到“Rockusb Device”或类似的设备这说明驱动安装成功了。6.2 使用RKDevTool进行烧录打开RKDevTool如果开发板处于Loader模式软件下方会显示“发现一个LOADER设备”。界面上有两个主要区域一个是“固件”按钮用于加载镜像文件另一个是设备状态和操作区。方法一分步烧录更灵活适合调试点击软件右侧的“切换”按钮确保当前是“Loader”模式。在下方各个分区的空白处双击分别选择rockdev/Image-rk3588_s/目录下对应的镜像文件。比如在“Loader”行选择MiniLoaderAll.bin在“Parameter”行选择parameter.txt依此类推。确认所有必要分区尤其是Loader、Parameter、Uboot、Boot、Dtbo、Super都选择正确的文件后直接点击“执行”按钮。工具会按顺序擦除旧分区并烧写新的镜像。方法二一键烧录最省事适合量产或完整升级确保开发板进入Loader模式并被识别。点击RKDevTool上的“固件”按钮。选择我们编译生成的update.img文件。点击“升级”按钮。无论哪种方法烧录开始后进度条会走动下方的日志窗口会显示烧录进度。整个过程大概几分钟。烧录完成后工具会提示“升级完成”。这时先点击“停止”然后给开发板断电拔掉USB线再重新正常上电启动。6.3 首次上电与问题排查激动人心的时刻到了给开发板上电你应该能看到串口调试信息输出需要通过USB转TTL串口线连接开发板的UART调试口到电脑最后进入Android系统的启动动画。如果一切顺利几分钟后你就能看到Android 12的锁屏界面了。如果屏幕没反应别急按顺序排查检查电源确保开发板供电充足RK3588功耗不低建议使用原装12V电源适配器。查看串口日志这是最重要的调试手段。用串口工具如MobaXterm、Putty连接波特率通常设为1500000。看日志停在哪里。如果是卡在Uboot可能是uboot.img或MiniLoaderAll.bin烧录有问题如果卡在“Android”字样启动动画可能是boot.img或dtbo.img不对如果提示找不到系统可能是super.img损坏或分区表parameter.txt不匹配。确认DTS文件回头检查第4步选择的dts文件是否100%匹配你的硬件。这是最常见的问题根源。重新烧录尝试进入MaskROM模式使用RKDevTool重新完整烧录一遍update.img。第一次成功启动后建议你进入系统设置打开“开发者选项”开启“USB调试”。这样以后就可以通过ADB命令来安装应用、抓取日志了开发效率会大大提高。