RK3399学习

article/2025/8/30 6:58:22

RK3399学习

韦东山rk3399:http://dev.t-firefly.com/forum-460-1.html

firefly官网教程:http://wiki.t-firefly.com/zh_CN/Firefly-RK3399/started.html

firefly官网3399资料:http://dev.t-firefly.com/forum-263-1.html

100ask 3399-pc教程:http://wiki.100ask.org/100ask_roc-rk3399-pc

韦东山全部资料网盘:http://download.100ask.org/?title=Download

如何编译安卓7.1固件:http://wiki.100ask.net/Roc-rk3399-pc_build_Android-7.1

工程建立

编译 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-Industry2. 下载远程bundle仓库
git clone https://gitlab.com/TeeFirefly/rk3399-industry-nougat-bundle.git .bundle3. 若下载仓库失败,目前bundle仓库大约1.4G左右,所以同步的时候可能会出现卡住或失败的问题,可以从下方百度云链接下载并解压到SDK根目录,解压指令如下:7z x rk3399-industry-nougat-bundle.7z  -r -o. && mv rk3399-industry-nougat-bundle/ .bundle/4. 更新SDK,并且后续更新不需要再次拉取远程仓库,直接执行以下命令即可.bundle/update5. 按照提示已经更新内容到 FETCH_HEAD,同步FETCH_HEAD到firefly分支
git rebase FETCH_HEAD
Filefly rk3399 安卓 7.1 编译(踩坑)记录:

第一步是进入root模式

  1. 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_VM_ARGUMENTS="${JACK_SERVER_VM_ARGUMENTS:=-Dfile.encoding=UTF-8 -XX:+TieredCompilation -Xmx4096M}"修改JACK_SERVER_COMMAND,在-cp前面添加 -Xmx4096M	如下:JACK_SERVER_COMMAND="java -Djava.io.tmpdir=$TMPDIR $JACK_SERVER_VM_ARGUMENTS -Xmx4096M -cp $LAUNCHER_JAR $LAUNCHER_NAME"
    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-settingsSERVER_PORT_SERVICE=8386SERVER_PORT_ADMIN=8387
    25. 修改配置文件 vim ~/.jack-server/config.properties   编译的时候才会生成这个配置文件jack.server.service.port=8386jack.server.admin.port=8387
    26. chmod 600 ~/.jack-settingschmod 600 ~/.jack-server/config.properties
    27. jack-admin kill-server
    28. px -xf | grep jack	,查看是否存在jack进程,若存在则 kill -9 进程号   *******************************************************/以上操作全部执行完毕后,才可以开始编译
    
    编译步骤参考官方:http://wiki.t-firefly.com/zh_CN/Firefly-RK3399/compile_android7.1_industry_firmware.html

烧录固件

官网步骤:http://wiki.t-firefly.com/zh_CN/Firefly-RK3399/03-upgrade_firmware.html

1.拷贝编译好的.img文件到烧录工具(AndroidTool_Release_v2.65)目录

将rockdev/Image-rk3399_firefly/文件下的.img文件拷贝到安卓烧录工具AndroidTool_Release_v2.65 , AndroidTool_Release_v2.65\rockdev\Image目录中,之后参照升级文档烧写分区映像即可,这样的好处是 使用默认配置即可,不用修改文件的路径。

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 键

主机应该会提示发现新硬件并配置驱动。打开设备管理器,会见到新设备 Rockusb Device 出现,如下图。如果没有,则需要返回上一步重新安装驱动。

4.烧写固件

以管理员的身份运行AndroidTool_Release_v2.65

下载 AndroidTool(若系统是 Android8.1 则需要 2.54 以上版本),解压,运行 AndroidTool_Release_v2.38 目录里面的 AndroidTool.exe(注意,如果是 Windows 7/8,需要按鼠标右键,选择以管理员身份运行),如下图:

_images/upgrade_firmware_androidtool.jpg

烧写统一固件 update.img

烧写统一固件 update.img 的步骤如下:

  1. 切换至升级固件页。
  2. 固件按钮,打开要升级的固件文件。升级工具会显示详细的固件信息。
  3. 升级按钮开始升级。
  4. 如果升级失败,可以尝试先按擦除 Flash按钮来擦除 Flash,然后再升级。一定要根据《使用USB线烧写须知(重要)》进行擦除烧写

注意:如果你烧写的固件 laoder 版本与原来的机器的不一致,请在升级固件前先执行擦除 Flash

_images/upgrade_firmware_erase_flash.jpg

烧写分区映像

每个固件的分区可能不相同,请注意以下两点:

  1. 使用 Androidtool_2.38 烧写 ubuntu(MBR)Android7.1 固件时使用默认配置即可;

  2. 使用 Androidtool_2.58 烧写 ubuntu(GPT) 使用默认配置即可,烧写 Android8.1 固件请先执行以下操作:

    切换至下载镜像页面; 右键点击表格,选择导入配置; 选择rk3399-Android81.cfg

烧写分区映像的步骤如下:

  1. 切换至下载镜像页。
  2. 勾选需要烧录的分区,可以多选。
  3. 确保映像文件的路径正确,需要的话,点路径右边的空白表格单元格来重新选择。
  4. 点击执行按钮开始升级,升级结束后设备会自动重启。

_images/upgrade_firmware_androidtool.jpg

开发平台建立

参考另一篇文章:https://blog.csdn.net/weixin_43209963/article/details/107995234

1.安装samba 服务器:https://www.linuxidc.com/Linux/2018-11/155466.htm

2.设置ubuntu为静态ip(https://www.cnblogs.com/cnbai/p/12827905.html)

编辑: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 位为 1addresses: [192.168.242.128/24] #设置本机IP及掩码,前三组数字要与网关一致gateway4: 192.168.242.2 #设置网关nameservers:addresses: [114.114.114.114, 8.8.8.8] #设置DNSversion: 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电平,输入输出)

在这里插入图片描述
在这里插入图片描述

我是一个小白,此文章是自己入门linux的文章,持续学习持续更新…


http://chatgpt.dhexx.cn/article/AkGRxDAT.shtml

相关文章

RK3399平台开发系列讲解(内核入门篇)1.53、platform平台设备

🚀返回专栏总目录 文章目录 一、设备配置-非设备树1.1、资源1.2、平台数据1.3、声明平台设备二、设备配置 - DTS沉淀、分享、成长,让自己和他人都能有所收获!😄 📢平台设备在内核中表示为struct platform_device的实例。 有两种方法可以把有关设备所需的资源(IRQ、DMA…

RK3399 Android7.1 编译

RK3399 Android7.1 编译 文章目录 RK3399 Android7.1 编译前言设置 Linux 编译环境安装 JDK可选- 更新默认的 Java 版本 安装所需的程序包(Ubuntu 14.04) 下载 Android SDK 前言 RK官网编译 Android搭建编译环境 设置 Linux 编译环境 使用的环境Linux 16.0.4 安装 JDK 如…

基于RK3399+5G的医用视频终端设计

当前在各种先进的信息通信技术的驱动下,医疗行业已呈现出信息化、移动化、智能化的发展趋势。特别是 5G 通信技术的落地应用推动了智慧医疗行业的 蓬勃发展,涌现出大量基于 5G 技术的医疗健康应用与服务,进一步融合了 5G 、 物联网与大数据…

RK3399平台开发系列讲解(PCI/PCI-E)PCIE相关配置说明

🚀返回专栏总目录 文章目录 一、DTS 配置二、menuconfig 配置三、cmdline 配置沉淀、分享、成长,让自己和他人都能有所收获!😄 📢 本篇将介绍在使用 RK3399 平台 PCIE 时候的配置。 一、DTS 配置 ep-gpios = <&gpio3 13 GPIO_ACTIVE_HIGH>; 此项是设置 PCIe…

RK3399快速上手 | 02-rockchip rk3399 linux sdk的使用(编译内核、编译uboot)

更新时间更新内容2022-09-15增加内核编译方法2022-10-21增加uboot编译方法和sdk开发版配置链路分析一、sdk区别 瑞芯微提供了两套sdk,一套是通过官方git仓库释放,适合于项目使用,另一套是通过github释放,适合于爱好者。 本文中使用从瑞芯微官方释放的正式linux sdk 2.7版…

RK3399平台开发系列讲解(中断篇)中断控制器驱动初始化

🚀返回专栏总目录 文章目录 一、设备树源文件1.1、gic控制器节点1.2、timer节点二、中断控制器匹配表三、中断控制器初始化3.1、函数of_irq_init3.2、函数gicv3_of_init3.3、函数gic_init_bases沉淀、分享、成长,让自己和他人都能有所收获!😄 一、设备树源文件 ARM64架构…

RK3399平台开发系列讲解(内存篇)15.34、 Linux 进程内存布局

🚀返回专栏总目录 文章目录 一、抽象内存布局二、32位机器 Linux 进程内存布局三、64位机器 Linux 进程内存布局沉淀、分享、成长,让自己和他人都能有所收获!😄 📢 我们一起来看下进程内部的虚拟内存布局,或者说单一进程是如何安排自己的各种数据的。 一、抽象内存布…

RK3399平台开发系列讲解(内核调试篇)2.50、嵌入式产品启动速度优化

平台内核版本安卓版本RK3399Linux4.4Android7.1🚀返回专栏总目录 沉淀、分享、成长,让自己和他人都能有所收获!😄 📢启动速度是嵌入式产品一个重要的性能指标,更快的启动速度会让客户有更好的使用体验,在某些方面还会节省能耗,因为可以直接关机而不需要休眠。 启动速…

钉钉F1 RK3399 咸鱼80元板子使用记录

1.简单介绍 12V电源&#xff0c;建议2A&#xff0c; 默认插电不开机&#xff0c;有大佬找到金属罩下的焊盘&#xff0c;短接可上电开机。 在usb旁边的旁边有个端子接口&#xff0c;短接就可以开机&#xff0c;建议找个一样大的接口接个开关&#xff0c;到目前为止还未测试需要…

RK3399平台开发系列讲解(网络篇)7.38、网卡驱动程序数据结构

平台内核版本安卓版本RK3399Linux4.4Android7.1🚀返回专栏总目录 文章目录 一、套接字缓冲区结构:sk_buff二、网络接口结构:net_device沉淀、分享、成长,让自己和他人都能有所收获!😄 📢处理网卡设备时需要使用两种数据结构。 struct sk_buff结构在include/linux/skb…

RK3399平台开发系列讲解(中断篇)中断控制器(Generic Interrupt Controller)

🚀返回专栏总目录 文章目录 一、GIC硬件的实现形态二、主要的功能块三、中断类型四、中断状态沉淀、分享、成长,让自己和他人都能有所收获!😄 📢外围设备不是把中断请求直接发给处理器,而是发给中断控制器,由中断控制器转发给处理器。ARM公司提供了一种标准的中断控制…

RK3399平台开发系列讲解(DMA篇)深刻理解DMA

🚀返回专栏总目录 文章目录 一、什么是DMA二、DMA的产生:背景三、理解 DMA:协处理器沉淀、分享、成长,让自己和他人都能有所收获!😄 📢本篇将带领大家深刻理解DMA。 一、什么是DMA DMA (Direct Memory Access) is used to copy data directly between devices and R…

RK3399——裸机大全

CSDN仅用于增加百度收录权重&#xff0c;排版未优化&#xff0c;日常不维护。请访问&#xff1a;www.hceng.cn 查看、评论。 本博文对应地址: https://hceng.cn/2018/08/16/RK3399——裸机大全/#more 以64位的RK3399为例&#xff0c;实现裸机的启动、中断、串口(printf移植)、…

RK3399平台开发系列讲解(CPU篇)CPUFreq 中央处理器频率调节技术

🚀返回专栏总目录 文章目录 一、CPUFreq组成二、设备树配置三、原理沉淀、分享、成长,让自己和他人都能有所收获!😄 📢中央处理器频率调节(Central Processing Unit frequency,CPUFreq)技术可以降低ARM芯片的功耗,例如在系统对任务压力较小时,通过调整处理器工作频…

RK3399中文简介

1.概述 RK3399是一种低功耗、高性能的处理器&#xff0c;可用于计算、个人移动互联网设备和其他智能设备应用程序。基于大。小架构&#xff0c;它集成了双核心Cortex-A72和四核Cortex-A53与单独的NEON协处理器。 许多嵌入式功能强大的硬件引擎为高端应用程序提供了优化的性能。…

RK3399平台入门到精通系列讲解 - 总目录

总目录 欢迎大家来到内核笔记的《RK3399平台开发入门到精通系列讲解》&#xff0c;开始前博主先列出RK3399平台学习的大纲&#xff0c;同时这也可以作为大家学习RK3399内核与安卓框架的参考。下面蓝字都是传送门&#xff0c;点击进入即可&#xff1a; 更新说明 此系列已更新…

网络渗透测试实验四 CTF实践

实验目的&#xff1a;通过对目标靶机的渗透过程&#xff0c;了解CTF竞赛模式&#xff0c;理解CTF涵盖的知识范围&#xff0c;如MISC、PPC、WEB等&#xff0c;通过实践&#xff0c;加强团队协作能力&#xff0c;掌握初步CTF实战能力及信息收集能力。熟悉网络扫描、探测HTTP web服…

20159302《网络攻击与防范》第五周学习总结

教材内容学习总结 1.基础知识回顾 通过教材内容的学习了解&#xff0c;掌握了基本的网站运行模式&#xff0c;并了解其结构方式。如下图&#xff1a; 运行过程为&#xff1a;首先客户在浏览器端发送请求&#xff0c;将相关的表单、数据交付给服务器&#xff1b;然后服务器根据所…

Kali Linux 2019-4解决安装中文乱码

1、安装KALI2019.4版本后会出现乱码问题 2、更新国内源&#xff0c;使用vim编辑器修改&#xff1a;vim /etc/apt/sources.list添加 #清华大学 [更新源] deb https://mirrors.tuna.tsinghua.edu.cn/kali kali-rolling main contrib non-freedeb-src https://mirrors.tuna.tsing…

计算机网络面试总结

前言 本人准研三&#xff0c;面临秋招压力&#xff0c;遂总结部分计算基础知识&#xff0c;以备不时之需&#xff0c;有些是从大佬博文摘抄的&#xff0c;都附有相应博文链接&#xff0c;如有遗漏&#xff0c;烦请联系本人更改&#xff0c;如有侵权&#xff0c;我会修改矫正。…