玩转RK3506SDK

玩转RK3506SDK 1.合众恒跃RK3506SDK介绍SDK目录介绍目录说明app存放上层应用APP主要是一些应用Demo。buildroot存放 Buildroot 开发的根文件系统。device/rockchip包存放芯片板级配置以及一些编译和打包固件的脚本和文件。docs存放通用开发指导文档、Linux系统开发指南、芯片平台相关文档等。external存放第三方相关仓库包括显示、音视频、摄像头、网络、安全等。kernel存放 Kernel 开发的代码。output存放每次生成的固件信息、编译信息、XML、主机环境等。prebuilts存放交叉编译工具链。rkbin存放 Rockchip 相关二进制和工具。rockdev存放编译输出固件实际软链接到output/firmware。tools存放 Linux 和 Window 操作系统下常用工具。u-boot存放基于 v2017.09 版本进行开发的 U-Boot 代码。yocto存放Yocto开发的根文件系统。1.SDK构建1.1工具链安装玩转SDK需要安装最基础的工具链makegccg等sudo apt install make sudo apt install gcc1.2导入开发板配置并非所有情况下都需要导入配置文件如果你的构建系统为多个目标硬件提供了默认配置那么通常需要先导入一个基础的开发板配置再运行make menuconfig进行定制。解压后的SDK内置了HZ-RK3506_MiniEVM板卡的配置文件编译SDK前需要选择对应文件并进行配置方法如下。1.3SDK定制化配置运行make menuconfig之前需要安装终端图形库ncurses以及解析Kconfig配置脚本的基础编译工具。在Ubuntu下下述命令即可sudo apt-get update sudo apt-get install build-essential libncurses-dev bison flex还可能需要安装flex和bison来生成语法分析器sudo apt install flex bison在SDK下和在kernel下均可以进行make menuconfig通过在SDK下配置可选择不同Rootfs、Loader、Kernel等配置进行各种定制化编译这样就可以灵活地选择和配置系统组件以满足特定的需求。配置相关内容说明Rootfs这里的Rootfs代表“根文件系统”在这里可选择Buildroot、Yocto、Debian等不同的根文件系统配置。Loader (u-boot)这是引导加载器的配置通常是u-boot用于初始化硬件并加载主操作系统。AMP多核异构系统开发配置选项,适用于电力、工控等行业Kernel这里配置内核选项定制适合自己的硬件和应用需求的Linux内核。Boot这里配置Boot分区支持格式。Recovery (based on buildroot)这是基于buildroot的recovery环境的配置用于系统恢复和升级。Security安全功能开启包含Secureboot开启方式、Optee存储方式、烧写Key等。Extra partitions用于配置额外的分区。Firmware在这里配置固件相关选项。Update (Rockchip update image)用于配置Rockchip完整固件的选项。Others configurations其他额外的配置选项。配置完成后使用make savedefconfig命令保存这些配置将临时配置改为持久化配置。make menuconfig //配置文件 make savedefconfig //保存配置1.4编译编译可分为整体编译和Rootfkernelu-boot分别编译同之前RK3568的步骤一样。2.在Ubuntu系统下烧录镜像在Windows下烧录镜像我们使用瑞芯微的工具RKDevTool_v3.37_for_window而在Ubuntu下我们使用工具 upgrade_tool使用命令行的方式进行烧录。2.1准备烧录工具首先我们进入 upgrade_tool所在目录下假设当前目录为SDK根目录cd tools/linux/Linux_Upgrade_Tool/Linux_Upgrade_Tool可以看到烧录工具然后将烧录工具拷贝到 /usr/local/bin下cp upgrade_tool /usr/local/bin2.2镜像烧录首先我们使用USB-Type线连接开发板和PC然后进入 /usr/local/bin 目录下可以通过命令行检测设备upgrade_tool ld我们需要将开发板设为loader模式maskrom先拔下开发板电源Type-c然后按住按键S3再接上Type-c这时应该就可以检测到设备了。最后通过命令烧录sudo upgrade_tool uf /home/haohao/666/rk/SDK/rockdev/update.img3.修改设备树并单独烧录设备树3.1修改设备树当我们想外界新设备并修改设备树时我们首先要知道我们编译时用到的设备树是哪些设备树在路径/SDK/kernel/arch/arm/boot/dts下我们要知道哪个设备树是我们编译用到的可以查看我们的配置文件在第一章中我们已经使用过配置文件所有板级配置文件在目录SDK/device/rockchip/rk3506下我们找到我们需要的并查看即可这样就可以找到我们需要的设备树文件。修改设备树文件一般分为板级设备树和芯片级设备树我们修改的一般是板级设备树芯片级设备树一般不要动。3.2编译并烧录编译编译设备树要在 kernel 目录下编译之前首先要先配置然后编译设备树make dtbs编译设备树后也会生成很大文件我们需要找到哪个是我们需要的我们可以从开发板上查看通过串口连接到开发板然后输入cat /sys/firmware/devicetree/base/compatible找到开发板加载的设备树文件名称这样我们就知道了我们需要的设备树文件设备树文件依然在 SDK/kernel/arch/arm/boot/dts烧录烧录分为两种形式我们可以查看分区表如果存在dtb分区我们就可以直接将dtb烧录的开发板中如果不存在dtb分区只存在boot分区boot.img是 ./build.sh kernel 的结果意思是dtb文件被打包到boot.img中的。查看分区sudo upgrade_tool pl可以观察到我们就是不存在dtb分区的所以我们的设备树文件dtb是在编译内核是时候一起被构建的故而不存在只烧录设备树文件如果更改设备树文件我们是要重新编译kernel的。重新编译kernel之后我们就可以将 boot.img镜像烧录的开发板中sudo upgrade_tool di --boot /home/haohao/666/SDK/rockdev/boot.img