1
完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
RK3399适合学习Android,一是网上资料比较多,二是官网适配了Android8.1系统,甚至有学者移植了Android 10系统,比较能跟上现阶段的Android版本。主要从Android8.1深度定制(包括kernel)、uboot定制、开机LOGO/动画定制、多屏显示几个方面学习RK3399,其中应用层以显示系统(我是做Android显示的)为主,其他功能为辅。
1 准备工作 1 首先准备ubuntu系统、sourceInsight等工具,配置自己熟悉的系统环境; 2 然后熟悉RK3399架构、寄存器与指令集、电路图、芯片手册等。 3 官方使用手册:RK3399 官网wiki Android8.1源码在线 相关资料:ARMv8架构 ARMv8指令集 RK3399裸机开发 2 开发工具 2.1 SourceInsight4.0 (1) 护眼背景 Options-->Preferences-->Colors & Fonts-->Windows Background里面设置: 色调:85;饱和度:123;亮度:205, R: 199; G: 237; B: 204; 2.2 VirtualBox 我用的VirtualBox虚拟机软件装的ubuntu18,因为他是免费的,并且操作简单,可以在官网下载。然后使用mobaXterm作为终端通过ssh连接ubuntu。virtualBox安装扩展包 2.3 FillZilla tftp文件传输软件,虽然mobaXterm也有这个功能,但比较慢,推荐这个,在没法使用共享文件夹的时候用这个。VirtualBox可以创建共享文件夹,但我没搞好,用的samba共享文件夹。 2.4 github 可以使用CSDN免费的github: github git clone https://codechina.csdn.net/ZHUYJUN/rk3399.git git add . git commit -m "Initial commit" git push -u origin master 2.5 刷机工具 windows: AndroidTool Android8.1使用的是RK固件,parameter.txt 文件来定义分区,使用脚本show_rk_parameter.sh读取源码分区: show_rk_parameter.sh device/rockchip/rk3399/parameter.txt Rocku*** Mode -------- NAME OFFSET LENGTH uboot 0x00002000 0x00002000 trust 0x00004000 0x00002000 misc 0x00006000 0x00002000 resource 0x00008000 0x00008000 kernel 0x00010000 0x00010000 boot 0x00020000 0x00010000 recovery 0x00030000 0x00020000 backup 0x00050000 0x00038000 security 0x00088000 0x00002000 cache 0x0008a000 0x00100000 system 0x0018a000 0x00500000 metadata 0x0068a000 0x00008000 vendor 0x00692000 0x00100000 oem 0x00794000 0x00100000 frp 0x00894000 0x00000400 userdata 0x00894400 - Maskrom Mode -------- NAME OFFSET LENGTH uboot 0x00004000 0x00002000 trust 0x00006000 0x00002000 misc 0x00008000 0x00002000 resource 0x0000a000 0x00008000 kernel 0x00012000 0x00010000 boot 0x00022000 0x00010000 recovery 0x00032000 0x00020000 backup 0x00052000 0x00038000 security 0x0008a000 0x00002000 cache 0x0008c000 0x00100000 system 0x0018c000 0x00500000 metadata 0x0068c000 0x00008000 vendor 0x00694000 0x00100000 oem 0x00796000 0x00100000 frp 0x00896000 0x00000400 userdata 0x00896400 - 脚本代码: #!/bin/sh [ -f "$PARAMETER_FILE" ] || { echo "Usage: $0 show_table() { echo "$1" echo "--------" printf "%-20s %-10s %sn" "NAME" "OFFSET" "LENGTH" for PARTITION in `cat ${PARAMETER_FILE} | grep '^CMDLINE' | sed 's/ //g' | sed 's/.*:(0x.*[^)])).*/1/' | sed 's/,/ /g'`; do NAME=`echo ${PARTITION} | sed 's/(.*)((.*))/2/'` START=`echo ${PARTITION} | sed 's/.*@(.*)(.*)/1/'` LENGTH=`echo ${PARTITION} | sed 's/(.*)@.*/1/'` START=$((START + $2)) printf "%-20s 0x%08x %sn" $NAME $START $LENGTH done } show_table "Rocku*** Mode" 0 echo show_table "Maskrom Mode" 0x2000 linux:rkdeveloptool / upgrade_tool // 刷机前要进入刷机模式 sudo upgrade_tool ul bootloader.bin # 烧写 bootloader sudo upgrade_tool di -p paramater # 烧写 parameter sudo upgrade_tool di -uboot uboot.img sudo upgrade_tool di -trust trust.img sudo upgrade_tool di -m misc.img sudo upgrade_tool di -baseparameter baseparameter.img sudo upgrade_tool di -b boot.img // Android 内核的内存启动盘 (initrd),是内核启动后最先加载的根文件系统 sudo upgrade_tool di -k kernel.img // Android 内核 sudo upgrade_tool di -resource/-re resource.img // 资源映像,内有内核开机图片和内核设备树信息 (Device Tree Blob) sudo upgrade_tool di -r recovery.img sudo upgrade_tool di -s system.img sudo upgrade_tool di -vendor vendor.img sudo upgrade_tool di -oem oem.img 备注:编译kernel会生成boot.img kernel.img 和 resource.img,但修改驱动一般只烧写kernel.img 官方Android8.1固件分区表: 2.6 Android编译方法 Android8.1编译 ./FFTools/make.sh -k -j8 # 单独编译kernel ./FFTools/make.sh -u -j8 # 单独编译uboot ./FFTools/make.sh -a -j8 # 单独编译android上层 ./FFTools/make.sh -j8 # 同时编译ubooot、kernel、android 2.7 解包RK固件 安装解包软件: git clone https://github.com/TeeFirefly/rk2918_tools.git cd rk2918_tools make sudo cp afptool img_unpack img_maker mkkrnlimg /usr/local/bin 解包官方固件: $ cd /path/to/your/firmware/dir $ img_unpack Firefly-RK3399_20161027.img img rom version: 6.0.1 build time: 2016-10-27 14:58:18 chip: 33333043 checking md5sum....OK 解包update.img: $ cd img $ afptool -unpack update.img update Check file...OK ------- UNPACK ------- package-file 0x00000800 0x00000280 Image/MiniLoaderAll.bin 0x00001000 0x0003E94E Image/parameter.txt 0x00040000 0x00000350 Image/trust.img 0x00040800 0x00400000 Image/uboot.img 0x00440800 0x00400000 Image/misc.img 0x00840800 0x0000C000 Image/resource.img 0x0084C800 0x0003FE00 Image/kernel.img 0x0088C800 0x00F5D00C Image/boot.img 0x017EA000 0x0014AD24 Image/recovery.img 0x01935000 0x013C0000 Image/system.img 0x02CF5000 0x2622A000 RESERVED 0x00000000 0x00000000 UnPack OK! 2.8 合成RK固件[1] (1) 合成 update.img : # 当前的目录仍然为 update/ ,内有 package-file, package-file 所列的文件均存在 # 将参数文件拷贝一份到 paramter, 因为 afptool 默认要用到 $ cp Image/parameter.txt parameter $ afptool -pack . ../update_new.img ------ PACKAGE ------ Add file: ./package-file Add file: ./Image/MiniLoaderAll.bin Add file: ./Image/parameter.txt Add file: ./Image/trust.img Add file: ./Image/uboot.img Add file: ./Image/misc.img Add file: ./Image/resource.img Add file: ./Image/kernel.img Add file: ./Image/boot.img Add file: ./Image/recovery.img Add file: ./Image/system.img Add file: ./RESERVED Add CRC... ------ OK ------ Pack OK! (2) 合成 release_update.img : $ img_maker -rk33 loader.img update_new.img release_update_new.img generate image... append md5sum... success! |
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
基于米尔瑞芯微RK3576核心板/开发板的人脸疲劳检测应用方案
498 浏览 0 评论
768 浏览 1 评论
667 浏览 1 评论
1893 浏览 1 评论
3138 浏览 1 评论
小黑屋| 手机版| Archiver| 德赢Vwin官网 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-22 02:07 , Processed in 0.594324 second(s), Total 72, Slave 54 queries .
Powered by 德赢Vwin官网 网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
德赢Vwin官网 观察
版权所有 © 湖南华秋数字科技有限公司
德赢Vwin官网 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号