完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
ROC-RK3288-CC
编译 Android 7.1 准备 硬件配置 编译 Android 7.1 开发环境硬件配置建议: 64 位 CPU 16GB 内存 + 交换内存 30GB 空闲空间用来编译, 源码树另占 8GB 另外可参考 Google 官方文档硬件和软件配置: 软件配置 安装 JDK 8 sudo add-apt-repository ppa:openjdk-r/ppa sudo apt-get update sudo apt-get install openjdk-8-jdk 安装环境包 sudo apt-get install git-core gnupg flex bison gperf libsdl1.2-dev libesd0-dev libwxgtk2.8-dev squashfs-tools build-essential zip curl libncurses5-dev zlib1g-dev pngcrush schedtool libxml2 libxml2-utils xsltproc lzop libc6-dev schedtool g+±multilib lib32z1-dev lib32ncurses5-dev lib32readline-gplv2-dev gcc-multilib libswitch-perl sudo apt-get install gcc-arm-linux-gnueabihf libssl1.0.0 libssl-dev p7zip-full 下载 Android SDK 由于 SDK 较大,请选择以下云盘之一下载 ROC-RK3328-CC_Android7.1.2_git_20171204.7z: Baiduyun Google Drive 下载完成后,在解压前先校验下 MD5 码: $ md5sum /path/to/ROC-RK3328-CC_Android7.1.2_git_20171204.7z 6d34e51fd7d26e9e141e91b0c564cd1f ROC-RK3328-CC_Android7.1.2_git_20171204.7z 然后解压: mkdir -p ~/proj/roc-rk3328-cc cd ~/proj/roc-rk3328-cc 7z x /path/to/ROC-RK3328-CC_Android7.1.2_git_20171204.7z git reset --hard 更新远程仓库: git remote rm origin git remote add gitlab 从 gitlab 处同步源码: 也可以到如下地址查看源码: 使用 Firefly 脚本编译 编译内核 ./FFTools/make.sh -k -j4 编译 U-Boot ./FFTools/make.sh -u -j4 编译 Android ./FFTools/make.sh -a -j4 编译全部 如下指令会编译出内核, U-Boot 以及 Android ./FFTools/make.sh -j4 不使用脚本编译 编译之前请先执行如下命令配置好环境变量: 编译内核 make ARCH=arm64 firefly_defconfig make -j8 ARCH=arm64 rk3328-roc-cc.img make -j8 ARCH=arm64 modules 编译 U-Boot make rk3328_box_defconfig make ARCHV=aarch64 -j4 编译 Android source build/envsetup.sh lunch roc_rk3328_cc_box-userdebug make installclean make -j4 ./mkimage.sh 打包 RK 固件 在 Linux 下打包固件 编译完成后使用 Firefly 官方脚本即可打包所有的分区映像成 RK固件:./FFTools/mkupdate/mkupdate.sh update 最终生成的文件是 rockdev/Image-rk3328_firefly_box/update.img. 在 Windows 下打包固件 在 Windows 下打包 RK 固件 update.img 也是很简单的: 拷贝所有在 rockdev/Image-rk3328_firefly_box/ 目录下编译好的文件到 AndroidTool 的 rockdevImage 目录下。 运行在 AndroidTool 的 rockdev 目录下的 mkupdate.bat 文件。 在 rockdevImage 目录将会生成 update.img。 分区映像 update.img 是发布给最终用户的固件,方便升级开发板。而在实际开发中,更多的时候是修改并烧写单个分区映像文件,这样做大大节省开发时间。 下表总结了在各个编译阶段所生成的分区映像文件: 注意,执行 ./mkimage.sh 后, boot.img 和 system.img 将会被重新编译并打包到目录 out/target/product/rk3328_firefly_box/ 下,所有生成的映像文件将会拷贝到目录 rockdev/Image-rk3328_firefly_box/ 下。 如下是映像文件列表:(.img文件是RK格式固件) boot.img: Android 的 initramfs 映像,包含Android根目录的基础文件系统,它负责初始化和加载系统分区。 system.img: ext4 文件系统格式的 Android 文件系统分区映像。 kernel.img: 内核映像。 resource.img: Resource 映像, 包含启动图片和内核设备树。 misc.img: misc 分区映像, 负责启动模式的切换和急救模式参数的传递。 recovery.img: Recovery 模式映像。 rk3328_loader_v1.08.244.bin: Loader 文件。 uboot.img: U-Boot 映像文件。 trust.img: Arm trusted file (ATF) 映像文件。 parameter.txt: 分区布局和内核命令行。 Uboot 使用 更新时间:2018-05-21 阅读:1790 前言 RK Uboot 是基于开源的 Uboot 进行开发的,Uboot 的工作模式有启动加载模式和下载模式。启动加载模式是 Uboot 的正常工作模式,嵌入式产品发布时,Uboot都工作在此模式下,主要用于开机时把 FLASH 中的内核加载到 SDRAM 中,启动操作系统;下载模式主要用于将固件下载到 FLASH,开机时长按 RECOVERY 键可进入下载模式。本文简单说明 Uboot 的使用,更多 Uboot 相关文档请看 SDK 下面的 RKDocs/Develop reference documents/Rockchip U-Boot 开发指南 V3.7-20160708.pdf。注意,该文档主要是编译基于 Android 7.1 的 Uboot,其中 Android 7.1 的相关 SDK 在链接 Android_7.1_SDK 处下载。 编译 首先 cd 进入 Android 7.1 SDK 源码目录中的 u-boot 目录,编译前把默认配置写入 .config,执行 make rk3328_box_defconfig 如果需要修改相关选项,也可以用 make menuconfig 编译执行 make ARCHV=aarch64 编译后生成 u-boot/uboot.img u-boot/trust.img u-boot/rk3328_loader_v1.08.244.bin 烧录 打开烧录工具,板子接好 USB 双头公对公数据线(具体连接设备请参考 《连接设备》 或者 《Loader 模式》),上电时按住 RECOVERY 键,上电后松开 RECOVERY 键使开发板进入 Uboot 的下载模式,然后在烧录工具中选择编译好的 Loader 文件,点击"执行"按钮即可,如下图 rk3328-uboot使用图1.PNG 烧录工具是AndroidTool 地址 名字 路径 0x0000 0000 loaderddr u-boot/rk3328_loader_ddr786_v1.06.243.bin 0x0000 4000 uboot u-boot/uboot.img 0x0000 6000 trust u-boot/trust.img 注意:该软件默认是英文的,但是将 AndroidTool_Release_v2.39/config 配置文件中的 Selected=2 修改为 Selected=1 并保存,然后重启软件,可以切换为中文界面;其中"地址"、“名字”、"路径"都是可以修改的,这里需要特别注意地址字段的填写,图中显示的是正确的烧录地址。 确认是否正确烧写新的 Loader 如果你已经成功烧写你最新编译的 Loader,在开机的串口输出 log 中可以看到类似如下信息: #Boot ver: 2016-12-19#1.05 如果打印的时间及版本与你编译的一致,说明你成功更新了Loader。 进入 Uboot 命令行模式 由于 Firefly 产品主要用于开发,所以我们默认设置开机时有1秒的倒计时,如果这时候在串口输入任意键即可进入 u-boot命令行模式。 发布的产品是不需要进入 u-boot 命令行模式的,如果需要设置 u-boot 默认不进入命令行模式的,可以做如下修改: 在文件 u-boot/include/configs/rk33plat.h /* mod it to enable console commands. */ #define CONFIG_BOOTDELAY 0 把宏 CONFIG_BOOTDELAY 改为 0 即默认不进入命令行模式。 一级 Loader U-Boot 作为一级 Loader 模式,那么仅支持 eMMC 存储设备,编译完成后生成的镜像: RK3328LoaderU-BOOT_V2.17.01.bin 其中 V2.17.01 是发布的版本号,rockchip 定义 U-Boot loader 的版本,其中 2.17 是根据存储版本定义的,客户务必不要修改这个版本,01 是 U-Boot 定义的小版本,用户根据实际需求在 Makefile 中修改。 二级 Loader U-Boot 作为二级 Loader 模式,那么固件支持所有的存储设备,该模式下,需要 MiniLoader 支持,通过宏CONFIG_MERGER_MINILOADER 进行配置生成。同时引入 Arm Trusted,Firmware 后会生成 trust image,这个通过宏CONFIG_MERGER_TRUSTIMAGE 进行配置生成。 RK3328 使用二级 Loader,编译生成的镜像为: u-boot/uboot.img u-boot/trust.img u-boot/RK3328MiniLoaderAll_V1.05.bin 其中 V1.05 是发布的版本号,rockchip 定义 U-Boot loader 的版本,其中 1.05 是根据存储版本定义的,客户务必不要修改这个版本。 uboot.img 是 U-Boot 作为二级 loader 的打包。 trust.img 是 U-Boot 作为二级 loader 的打包。 / 烧录 /烧录工具 windows系统 SD_Firmware_Tool 烧录文件是update.img(RK固件) // 原始固件,是一种能以逐位复制的方式烧写到存储设备的固件,是存储设备的原始映像。原始固件一般烧写到 SD 卡中,但也可以烧写到 eMMC 中。 烧写原始固件有许多工具可以选用: 烧写 SD 卡 图形界面烧写工具: SDCard Installer (Linux/Windows/Mac) Etcher (Linux/Windows/Mac) 命令行烧写工具 dd (Linux) 烧写 eMMC 图形界面烧写工具: AndroidTool (Windows) 命令行烧写工具: upgrade_tool (Linux) rkdeveloptool (Linux) RK固件(update.img,其他的.img文件也是RK格式),打包 RK 固件,在 Linux 下打包固件编译完成后使用 Firefly 官方脚本即可打包所有的分区映像成 RK固件:./FFTools/mkupdate/mkupdate.sh update,编译过程见上。 windows烧写 RK 固件(./FFTools/mkupdate/mkupdate.sh update),update.img(其他的.img格式文件也是)是以 Rockchip专有格式打包的固件,使用 Rockchip 提供的 upgrade_tool (Linux) 或 AndroidTool (Windows) 工具烧写到eMMC 闪存中。RK 固件是 Rockchip 的传统固件打包格式,常用于 Android 设备上。另外,Android 的 RK 固件也可以使用 SD Firmware Tool 工具烧写到 SD 卡中 SD_Firmware_Tool 选择SD启动,烧写 update.img 使用 AndroidTool 之前, 应先安装 Rocku*** 驱动(是DriverAssitant_v4.5这个文件),然后再安装运行 AndroidTool(以管理员身份),先按着复位键给板子上电(注意USB会供电,要先断开)进入,此时设备处于 Rocku*** 模式,状态行将显示 “发现一个LOADER设备”。点击升级固件->固件-》选择update.img。–>点击升级就下载进emmc了。 linux系统烧写emmc RK 固件 如果开发板原有系统是 RK 固件,那么它使用 parameter 文件作为分区方案,这样就可直接使用分区名称来烧写分区映像: 1. 强制设备进入 Rocku*** 模式,按下按键插上电。 2. 使用 upgrade_tool 烧写分区映像: upgrade_tool wl 0x2000 uboot.img upgrade_tool wl 0x4000 trust.img upgrade_tool di -b boot.img upgrade_tool di -k kernel.img upgrade_tool di -s system.img upgrade_tool di -r recovery.img upgrade_tool di -m misc.img upgrade_tool di resource resource.img upgrade_tool di -p parameter.txt # 烧写 parameter upgrade_tool ul MiniLoaderAll.bin # 烧写 bootloader upgrade_tool wl 0x2000 uboot.img upgrade_tool wl 0x4000 trust.img upgrade_tool wl 0x8000 misc.img upgrade_tool wl 0xa000 parameter.txt upgrade_tool wl 0xa800 resource.img upgrade_tool wl 0x12000 kernel.img upgrade_tool wl 0x22000 boot.img upgrade_tool wl 0x32000 recovery.img upgrade_tool wl 0xac000 system.img 注意: • -b 是 boot 分区的预定义缩写。如果没有缩写可用,请改为分区名称,例如上述例子中的 resource。 • 可根据 《参数文件格式》 这份文档的说明自定义内核参数和分区布局。分区布局更改后,必须先重新烧写该 parameter 文件,方可重新烧写受影响的相应分区。 两种模式下的烧录文件偏移(我按下按键时是进入Rocku*** Mode模式) $ show_rk_parameter.sh device/rockchip/rk3328/parameter.txt Rocku*** Mode NAME OFFSET LENGTH uboot 0x00002000 0x00002000 trust 0x00004000 0x00004000 misc 0x00008000 0x00002000 baseparamer 0x0000a000 0x00000800 resource 0x0000a800 0x00007800 kernel 0x00012000 0x00010000 boot 0x00022000 0x00010000 recovery 0x00032000 0x00010000 backup 0x00042000 0x00020000 cache 0x00062000 0x00040000 metadata 0x000a2000 0x00008000 kpanic 0x000aa000 0x00002000 system 0x000ac000 0x00300000 userdata 0x003ac000 - Maskrom Mode NAME OFFSET LENGTH uboot 0x00004000 0x00002000 trust 0x00006000 0x00004000 misc 0x0000a000 0x00002000 baseparamer 0x0000c000 0x00000800 resource 0x0000c800 0x00007800 kernel 0x00014000 0x00010000 boot 0x00024000 0x00010000 recovery 0x00034000 0x00010000 backup 0x00044000 0x00020000 cache 0x00064000 0x00040000 metadata 0x000a4000 0x00008000 kpanic 0x000ac000 0x00002000 system 0x000ae000 0x00300000 userdata 0x003ae000 - |
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
基于米尔瑞芯微RK3576核心板/开发板的人脸疲劳检测应用方案
937 浏览 0 评论
1138 浏览 1 评论
935 浏览 1 评论
2163 浏览 1 评论
3475 浏览 1 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-28 08:40 , Processed in 0.710514 second(s), Total 74, Slave 56 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号