RK3399开发准备工作

目录

0 前言

1 准备工作

2 开发工具

2.1 SourceInsight4.0

2.2 VirtualBox

2.3 FillZilla

2.4 github

2.5 刷机工具

2.6 Android编译方法

2.7 解包RK固件

2.8 合成RK固件[1]

0 前言

      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

Rockusb 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

PARAMETER_FILE="$1"
[ -f "$PARAMETER_FILE" ] || { echo "Usage: $0 <parameter_file>"; exit 1; }

show_table() {
    echo "$1"
    echo "--------"
    printf "%-20s %-10s %s\n" "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 %s\n" $NAME $START $LENGTH
    done
}

show_table "Rockusb 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!

参考资料:

[1] 定制Android

 

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
摘要 数字摄影的兴起不可避免地引起了数码相框的发展,因为仅有不到35%的数码照 片被打印。数码相框的基本原理就是采用普通相框的造型,把原来相框中间的照片部分 换成液晶显示屏,配上电源,存储介质等,使得同一个相框内可以循环播放照片,比普 通相框的单一显示功能更有优势。从2007年开始,数码相框的市场关注度开始激增。 在2008年,数码相框市场呈现高速发展的态势,具有极高的潜在市场价值。 本论文以此为出发点,进行数码相框软件的开发研究工作。作为一款嵌入式产品, 核心部件CPU采用了性能价格比、性能功耗比都很高的ARM架构处理器之中的一款 ——三星$3C2440A,显示器采用了支持双精度扫描的液晶显示屏。软件方面,Bootloadcr 采用较为成熟的U.boot.1.1.4,Linux内核的版本为2.6.12,系统命令集由busybOX构成。 利用ARM处理器对Linux系统良好的移植性、自带的LCD控制器、音频控制器、SD 与USB控制器的特点,进行图像显示、音频播放与文件管理。对于目前大部分数码相 框在图片浏览和文件管理功能上的不足,本设计的图像显示功能充分利用了触摸屏功 能,实现了图像的触摸式移动,使用户可以自由的观看放大后的图像;文件管理功能则 设计成了类似windows的文件浏览器,不仅具有丰富的文件管理功能,而且使习惯了 windows的广大用户可以很快的熟悉此功能,并为将来升级为下一代的细分产品——数 码相册做好准备。 本设计的核心是基于ARM平台的系统移植与基于QT的应用程序设计。首先根据 系统的总体设计思路选择合适的硬件组合;然后在此基础上进行U.boot的移植,嵌入式 Linux的移植,QT Embedded/Qtopia的移植,以及最后QT图形界面的设计。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值