瑞芯微Rockchip开发者社区
登录
直播中
而无返还
8年用户
1182经验值
擅长:光电显示
私信
关注
[问答]
Filefly rk3399 Android7.1编译(踩坑)记录
开启该帖子的消息推送
嵌入式
RK3399
如何对Filefly rk3399 Android7.1进行编译呢?有哪些编译过程呢?
RK3399学习.pdf
(2022-3-9 08:10 上传)
1.51 MB, 下载次数: 2
回帖
(1)
李雯婷
2022-3-9 10:47:21
RK3399学习
工程建立
编译 Android7.1 industry 固件
编译准备:
下载 Android SDK
Android SDK 源码包比较大,可以去下载页面来获取Android7.1源码包
下载完成后先验证一下 MD5 码:
$ md5sum /path/to/rk3399-firefly-industry-71-20190926.7z.001
afb279a7d2966908bcf53ce2c2c05edc rk3399-firefly-industry-71-20190926.7z.001
$md5sum /path/to/rk3399-firefly-industry-71-20190926.7z.002
2bc5a41fd1056f1d1ab1f7e84f666bee rk3399-firefly-industry-71-20190926.7z.002
确认无误后,就可以解压:
mkdir -p ~/proj/firefly-rk3399-Industry
cd ~/proj/firefly-rk3399-Industry
7z x /path/to/rk3399-firefly-industry-71-20190926.7z.001 -r -o.
git reset --hard
注意:解压后务必要先更新下远程仓库。 以下为从 gitlab 处更新的方法:
1. 进入SDK根目录
cd ~/proj/firefly-rk3399-Industry
2. 下载远程bundle仓库
3. 若下载仓库失败,目前bundle仓库大约1.4G左右,所以同步的时候可能会出现卡住或失败的问题,可以从下方百度云链接下载并解压到SDK根目录,解压指令如下:
7z x rk3399-industry-nougat-bundle.7z -r -o. && mv rk3399-industry-nougat-bundle/ .bundle/
4. 更新SDK,并且后续更新不需要再次拉取远程仓库,直接执行以下命令即可
.bundle/update
5. 按照提示已经更新内容到 FETCH_HEAD,同步FETCH_HEAD到firefly分支
git rebase FETCH_HEAD
Filefly rk3399 安卓 7.1 编译(踩坑)记录:
第一步是进入root模式
1. sudo apt-get install openjdk-8-jre
2. sudo apt-get install openjdk-8-jdk
3. export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64
4. export PATH=$JAVA_HOME/bin:$PATH
5. export CLASSPATH=.:$JAVA_HOME/lib:$JAVA_HOME/lib/tools.jar
6. sudo apt install g++-multilib
7. sudo apt install gperf
8. sudo apt install libxml2-utils
9. sudo apt install curl
10. sudo apt-get install libc6:i386 libncurses5:i386 libstdc++6:i386
11. sudo apt-get install m4
工程目录下
12. vim build/envsetup.sh 脚本最后添加一句话 export LC_ALL=C
13. . build/envsetup.sh 重新执行一下脚本
路径 /home/book/proj/firefly-rk3399-Industry/prebuilts/sdk/tools
14. vim jack-admin
修改变量JACK_SERVER_VM_ARGUMENTS,添加参数 -Xmx4096M
如下:
修改JACK_SERVER_COMMAND,在-cp前面添加 -Xmx4096M
如下:
15. ./jack-admin start-server
16. ./jack-admin kill-server
17. ./jack-admin list-server
18. ./jack-admin uninstall-server
19. mm -j32 showcommands &> mm.out
20. ./jack-admin install-server jack-launcher.jar jack-server-4.8.ALPHA.jar
21. ./jack-admin dump-report
22. ./jack-admin dump-re
23. ./jack-admin dump-re
##### 编译jack有问题时,做一下修改
/******************************************************
24. 修改配置文件 vim ~/.jack-settings
SERVER_PORT_SERVICE=8386
SERVER_PORT_ADMIN=8387
25. 修改配置文件 vim ~/.jack-server/config.properties 编译的时候才会生成这个配置文件
jack.server.service.port=8386
jack.server.admin.port=8387
26. chmod 600 ~/.jack-settings
chmod 600 ~/.jack-server/config.properties
27. jack-admin kill-server
28. px -xf | grep jack ,查看是否存在jack进程,若存在则 kill -9 进程号
*******************************************************/
以上操作全部执行完毕后,才可以开始编译
烧录固件
1.拷贝编译好的.img文件到烧录工具(AndroidTool_Release_v2.65)目录
将rockdev/Image-rk3399_firefly/文件下的.img文件拷贝到安卓烧录工具AndroidTool_Release_v2.65 , AndroidTool_Release_v2.65rockdevImage目录中,之后参照升级文档烧写分区映像即可,这样的好处是 使用默认配置即可,不用修改文件的路径。
update.img 方便固件的发布,供终端用户升级系统使用。一般开发时使用分区映像比较方便。
2.下载安卓RK USB驱动
下载
Release_DriverAssistant.zip
,解压,然后运行里面的 DriverInstall.exe 。为了所有设备都使用更新的驱动,请先选择驱动卸载,然后再选择驱动安装。
3.链接设备
设备进入升级模式的方式如下:
一种方法是设备先断开电源适配器和 Type-C 数据线的连接:
USB 一端连接主机,Type-C 一端连接开发板 Type-C 母口
按住设备上的 RECOVERY (恢复)键并保持
接上电源
大约两秒钟后,松开 RECOVERY 键
另一种方法,无需断开电源适配器和 Type-C 数据线的连接:
USB 一端连接主机,Type-C 一端连接开发板 Type-C 母口
按住设备上的 RECOVERY (恢复)键并保持
短按一下 RESET(复位)键
大约两秒钟后,松开 RECOVERY 键
主机应该会提示发现新硬件并配置驱动。打开设备管理器,会见到新设备 Rocku*** Device 出现,如下图。如果没有,则需要返回上一步重新安装驱动。
4.烧写固件
以管理员的身份运行AndroidTool_Release_v2.65
下载
AndroidTool
(
若系统是 Android8.1 则需要 2.54 以上版本
),解压,运行 AndroidTool_Release_v2.38 目录里面的 AndroidTool.exe(注意,如果是 Windows 7/8,需要按鼠标右键,选择以管理员身份运行),如下图:
烧写统一固件 update.img
烧写统一固件 update.img 的步骤如下:
切换至升级固件页。
按固件按钮,打开要升级的固件文件。升级工具会显示详细的固件信息。
按升级按钮开始升级。
如果升级失败,可以尝试先按擦除 Flash按钮来擦除 Flash,然后再升级。
注意:如果你烧写的固件 laoder 版本与原来的机器的不一致,请在升级固件前先执行擦除 Flash。
烧写分区映像
每个固件的分区可能不相同,请注意以下两点:
使用 Androidtool_2.38 烧写 ubuntu(MBR) 和 Android7.1 固件时使用默认配置即可;
使用 Androidtool_2.58 烧写 ubuntu(GPT) 使用默认配置即可,烧写 Android8.1 固件请先执行以下操作:
切换至下载镜像页面; 右键点击表格,选择导入配置; 选择rk3399-Android81.cfg
烧写分区映像的步骤如下:
切换至下载镜像页。
勾选需要烧录的分区,可以多选。
确保映像文件的路径正确,需要的话,点路径右边的空白表格单元格来重新选择。
点击执行按钮开始升级,升级结束后设备会自动重启。
开发平台建立
编辑:vi /etc/netplan/50-cloud-init.yaml
network:
ethernets:
网卡名
ens33:
# DHCP:自动分配 IP地址,租期到了会自动续约,IP会变
dhcp4: no #dhcp4关闭
dhcp6: no #dhcp6关闭
# 24 代表子网掩码 255.255.255.0 ,32 个二进制数前 24 位为 1
addresses: [192.168.242.128/24] #设置本机IP及掩码,前三组数字要与网关一致
gateway4: 192.168.242.2 #设置网关
nameservers:
addresses: [114.114.114.114, 8.8.8.8] #设置DNS
version: 2
保存,输入指令:netplan apply
驱动开发
1.驱动设计思想
参考伟东山《嵌入式Linux应用开发完全手册》第5篇8.9章,了解清楚驱动框架,设备树应用。
总结3种写驱动的方法
思考几个问题:
1.设备树信息如何匹配device_driver信息?
2.platform_device如何与platform_driver匹配?
具体参考《嵌入式Linux应用开发完全手册》第5篇11章
一张图可以表达清楚
3.怎么使用设备树写驱动程序?
编程edg:
第一步:
设备树目录一般位于:内核源码目录中arch/arm/boot/dts/xxxx.dts ,修改、编译后得到 arch/arm/boot/dts/xxx.dtb 文件。
第二步:
修改plarform_driverde 源码
具体参考《嵌入式Linux应用开发完全手册》第5篇12章
第三步:
在设备树中指定GPIO 引脚,具体看下一节内容《GPIO和Pinctrl子系统的使用》
GPIO和Pinctrl子系统的使用
Pinctrl:(选择io功能)
概念:
两个相关结构体pincontroller,device
代码中引用pinctrl
GPIO:(选择io电平,输入输出)
RK3399学习
工程建立
编译 Android7.1 industry 固件
编译准备:
下载 Android SDK
Android SDK 源码包比较大,可以去下载页面来获取Android7.1源码包
下载完成后先验证一下 MD5 码:
$ md5sum /path/to/rk3399-firefly-industry-71-20190926.7z.001
afb279a7d2966908bcf53ce2c2c05edc rk3399-firefly-industry-71-20190926.7z.001
$md5sum /path/to/rk3399-firefly-industry-71-20190926.7z.002
2bc5a41fd1056f1d1ab1f7e84f666bee rk3399-firefly-industry-71-20190926.7z.002
确认无误后,就可以解压:
mkdir -p ~/proj/firefly-rk3399-Industry
cd ~/proj/firefly-rk3399-Industry
7z x /path/to/rk3399-firefly-industry-71-20190926.7z.001 -r -o.
git reset --hard
注意:解压后务必要先更新下远程仓库。 以下为从 gitlab 处更新的方法:
1. 进入SDK根目录
cd ~/proj/firefly-rk3399-Industry
2. 下载远程bundle仓库
3. 若下载仓库失败,目前bundle仓库大约1.4G左右,所以同步的时候可能会出现卡住或失败的问题,可以从下方百度云链接下载并解压到SDK根目录,解压指令如下:
7z x rk3399-industry-nougat-bundle.7z -r -o. && mv rk3399-industry-nougat-bundle/ .bundle/
4. 更新SDK,并且后续更新不需要再次拉取远程仓库,直接执行以下命令即可
.bundle/update
5. 按照提示已经更新内容到 FETCH_HEAD,同步FETCH_HEAD到firefly分支
git rebase FETCH_HEAD
Filefly rk3399 安卓 7.1 编译(踩坑)记录:
第一步是进入root模式
1. sudo apt-get install openjdk-8-jre
2. sudo apt-get install openjdk-8-jdk
3. export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64
4. export PATH=$JAVA_HOME/bin:$PATH
5. export CLASSPATH=.:$JAVA_HOME/lib:$JAVA_HOME/lib/tools.jar
6. sudo apt install g++-multilib
7. sudo apt install gperf
8. sudo apt install libxml2-utils
9. sudo apt install curl
10. sudo apt-get install libc6:i386 libncurses5:i386 libstdc++6:i386
11. sudo apt-get install m4
工程目录下
12. vim build/envsetup.sh 脚本最后添加一句话 export LC_ALL=C
13. . build/envsetup.sh 重新执行一下脚本
路径 /home/book/proj/firefly-rk3399-Industry/prebuilts/sdk/tools
14. vim jack-admin
修改变量JACK_SERVER_VM_ARGUMENTS,添加参数 -Xmx4096M
如下:
修改JACK_SERVER_COMMAND,在-cp前面添加 -Xmx4096M
如下:
15. ./jack-admin start-server
16. ./jack-admin kill-server
17. ./jack-admin list-server
18. ./jack-admin uninstall-server
19. mm -j32 showcommands &> mm.out
20. ./jack-admin install-server jack-launcher.jar jack-server-4.8.ALPHA.jar
21. ./jack-admin dump-report
22. ./jack-admin dump-re
23. ./jack-admin dump-re
##### 编译jack有问题时,做一下修改
/******************************************************
24. 修改配置文件 vim ~/.jack-settings
SERVER_PORT_SERVICE=8386
SERVER_PORT_ADMIN=8387
25. 修改配置文件 vim ~/.jack-server/config.properties 编译的时候才会生成这个配置文件
jack.server.service.port=8386
jack.server.admin.port=8387
26. chmod 600 ~/.jack-settings
chmod 600 ~/.jack-server/config.properties
27. jack-admin kill-server
28. px -xf | grep jack ,查看是否存在jack进程,若存在则 kill -9 进程号
*******************************************************/
以上操作全部执行完毕后,才可以开始编译
烧录固件
1.拷贝编译好的.img文件到烧录工具(AndroidTool_Release_v2.65)目录
将rockdev/Image-rk3399_firefly/文件下的.img文件拷贝到安卓烧录工具AndroidTool_Release_v2.65 , AndroidTool_Release_v2.65rockdevImage目录中,之后参照升级文档烧写分区映像即可,这样的好处是 使用默认配置即可,不用修改文件的路径。
update.img 方便固件的发布,供终端用户升级系统使用。一般开发时使用分区映像比较方便。
2.下载安卓RK USB驱动
下载
Release_DriverAssistant.zip
,解压,然后运行里面的 DriverInstall.exe 。为了所有设备都使用更新的驱动,请先选择驱动卸载,然后再选择驱动安装。
3.链接设备
设备进入升级模式的方式如下:
一种方法是设备先断开电源适配器和 Type-C 数据线的连接:
USB 一端连接主机,Type-C 一端连接开发板 Type-C 母口
按住设备上的 RECOVERY (恢复)键并保持
接上电源
大约两秒钟后,松开 RECOVERY 键
另一种方法,无需断开电源适配器和 Type-C 数据线的连接:
USB 一端连接主机,Type-C 一端连接开发板 Type-C 母口
按住设备上的 RECOVERY (恢复)键并保持
短按一下 RESET(复位)键
大约两秒钟后,松开 RECOVERY 键
主机应该会提示发现新硬件并配置驱动。打开设备管理器,会见到新设备 Rocku*** Device 出现,如下图。如果没有,则需要返回上一步重新安装驱动。
4.烧写固件
以管理员的身份运行AndroidTool_Release_v2.65
下载
AndroidTool
(
若系统是 Android8.1 则需要 2.54 以上版本
),解压,运行 AndroidTool_Release_v2.38 目录里面的 AndroidTool.exe(注意,如果是 Windows 7/8,需要按鼠标右键,选择以管理员身份运行),如下图:
烧写统一固件 update.img
烧写统一固件 update.img 的步骤如下:
切换至升级固件页。
按固件按钮,打开要升级的固件文件。升级工具会显示详细的固件信息。
按升级按钮开始升级。
如果升级失败,可以尝试先按擦除 Flash按钮来擦除 Flash,然后再升级。
注意:如果你烧写的固件 laoder 版本与原来的机器的不一致,请在升级固件前先执行擦除 Flash。
烧写分区映像
每个固件的分区可能不相同,请注意以下两点:
使用 Androidtool_2.38 烧写 ubuntu(MBR) 和 Android7.1 固件时使用默认配置即可;
使用 Androidtool_2.58 烧写 ubuntu(GPT) 使用默认配置即可,烧写 Android8.1 固件请先执行以下操作:
切换至下载镜像页面; 右键点击表格,选择导入配置; 选择rk3399-Android81.cfg
烧写分区映像的步骤如下:
切换至下载镜像页。
勾选需要烧录的分区,可以多选。
确保映像文件的路径正确,需要的话,点路径右边的空白表格单元格来重新选择。
点击执行按钮开始升级,升级结束后设备会自动重启。
开发平台建立
编辑:vi /etc/netplan/50-cloud-init.yaml
network:
ethernets:
网卡名
ens33:
# DHCP:自动分配 IP地址,租期到了会自动续约,IP会变
dhcp4: no #dhcp4关闭
dhcp6: no #dhcp6关闭
# 24 代表子网掩码 255.255.255.0 ,32 个二进制数前 24 位为 1
addresses: [192.168.242.128/24] #设置本机IP及掩码,前三组数字要与网关一致
gateway4: 192.168.242.2 #设置网关
nameservers:
addresses: [114.114.114.114, 8.8.8.8] #设置DNS
version: 2
保存,输入指令:netplan apply
驱动开发
1.驱动设计思想
参考伟东山《嵌入式Linux应用开发完全手册》第5篇8.9章,了解清楚驱动框架,设备树应用。
总结3种写驱动的方法
思考几个问题:
1.设备树信息如何匹配device_driver信息?
2.platform_device如何与platform_driver匹配?
具体参考《嵌入式Linux应用开发完全手册》第5篇11章
一张图可以表达清楚
3.怎么使用设备树写驱动程序?
编程edg:
第一步:
设备树目录一般位于:内核源码目录中arch/arm/boot/dts/xxxx.dts ,修改、编译后得到 arch/arm/boot/dts/xxx.dtb 文件。
第二步:
修改plarform_driverde 源码
具体参考《嵌入式Linux应用开发完全手册》第5篇12章
第三步:
在设备树中指定GPIO 引脚,具体看下一节内容《GPIO和Pinctrl子系统的使用》
GPIO和Pinctrl子系统的使用
Pinctrl:(选择io功能)
概念:
两个相关结构体pincontroller,device
代码中引用pinctrl
GPIO:(选择io电平,输入输出)
举报
更多回帖
rotate(-90deg);
回复
相关问答
嵌入式
RK3399
如何对
RK3399
Android7.1
进行
编译
呢
2022-03-09
1042
RK3399
编译
Android7.1
时jackserver服务未运行是什么原因呢
2022-03-07
1183
如何去隐藏
RK3399
Android7.1
的导航栏呢
2022-03-04
2283
在
RK3399
Android7.1
上怎样使用adb命令进行ota升级呢
2022-03-09
1778
怎样去修改
RK3399
Android7.1
的屏幕显示方向呢
2022-03-04
2799
RK3399
在
Android7.1
中使用ll命令发现无法使用怎么解决?
2022-03-07
1312
RK3399
android7.1
打包固件出现错误怎么解决?
2022-03-07
1694
怎样去解决
RK3399
Android7.1
强制使用32位库的问题呢
2022-03-09
1499
怎样去修改
RK3399
Android7.1
的壁纸呢
2022-03-07
1419
怎样去修改
RK3399
Android7.1
的自定义壁纸呢
2022-03-08
1233
发帖
登录/注册
20万+
工程师都在用,
免费
PCB检查工具
无需安装、支持浏览器和手机在线查看、实时共享
查看
点击登录
登录更多精彩功能!
首页
论坛版块
小组
免费开发板试用
ebook
直播
搜索
登录
×
20
完善资料,
赚取积分