rk3399开发环境的介绍

news2024/12/25 14:47:08

零. 前言

由于Bluez的介绍文档有限,以及对Linux 系统/驱动概念、D-Bus 通信和蓝牙协议都有要求,加上网络上其实没有一个完整的介绍Bluez系列的文档,所以不管是蓝牙初学者还是蓝牙从业人员,都有不小的难度,学习曲线也相对较陡,所以我有了这个想法,专门对Bluez做一个系统性的介绍,尽可能的涵盖所有内容。

-------------------------------------------------------------------------------------------------------------------------

蓝牙视频教程(跟韦东山老师合作), 其中专题22就是专门针对Bluez做的系统介绍

https://item.taobao.com/item.htm?spm=a1z10.1-c-s.w4004-22329603896.20.5aeb41f98e267j&id=693788592796

--------------------------------------------------------------------------------------------------------------------------

一. RK3399开发板介绍

1. 开发板介绍

我们整个用的开发板环境是Firefly的RK3399 PC pro开发板,当然中间也会有一些bt dongle的穿插,也不需要开发板,但是对于kernel space的层面的内容,还是继续要依赖于开发板的。

资料连接如下:

Firefly | 让科技更简单,让生活更智能

发货清单(仅供参考) — Firefly Wiki

当然我们这一系列Bluez的教程,你也可以用其他开发板

整个开发板的参数如下:

2. 蓝牙模组介绍

整个开发板默认的板载BT/Wi-Fi模组是正基的AP6256,

  • AP6256是正基科技推出的一款低成本,低功耗的双模模块。是一款SDIO接口单通道802.11ac双频支持BT5.0 蓝牙WiFi二合一模块。
  • Model:AP6256:SDIO WIFI + UART BT
  • Chip:BCM43456
  • WiFi: 2.4G&5G
  • BT:5.0

pin的定义如下:

3. 主控跟蓝牙模组接线介绍

二. 软件环境

1. image镜像

我这边是用的ubuntu 2004的镜像,下载链接如下:

Firefly | 让科技更简单,让生活更智能

我是用的 Ubuntu 20.04\Public\ROC-RK3399-PC-PLUS_Ubuntu20.04-r240_v2.5.1d_230330 这个版本

2. 烧录介绍

烧写image的链接为:2. 使用USB线缆升级固件 — Firefly Wiki

NOTED: firefly这块资料更新的不好,或者他们资料太多,忘记更新,所以很多地方工具的更新跟文档并不能及时同步,所以导致给人很乱的感觉,所以你就按照我的说法来做就行了,我已经淌过坑。

我使用的是windows的下载方式,方式如下:

a. 安装RK USB驱动

下载 Release_DriverAssistant.zip,解压,然后运行里面的 DriverInstall.exe 。为了所有设备都使用更新的驱动,请先选择驱动卸载,然后再选择驱动安装。

b. 安装AndroidTool

AndroidTools为旧版本叫法,新版本改名为RKDevTool 提取码:1234

下载链接如下:Firefly | 让科技更简单,让生活更智能

如果你用AndridTool就要严格按照版本要求,我是直接使用的事RKDevTool来烧录的

我们烧录的是ubuntu 2004

c. 进入升级模式

通常我们升级固件的模式有两种,分别是Loader模式和MaskRom模式。烧写固件前,我们需要连接好设备,并让板子进入到可升级模式。我们就默认用Loader模式了

Loader模式

硬件方式进入Loader模式

连接设备并通过RECOVERY按键进入Loader升级模式步骤如下:

  • 先断开电源适配器连接
  • Type-C data cable连接好设备和主机。

  • 按住设备上的 RECOVERY (恢复)键并保持。

  • 插上电源
  • 大约两秒钟后,松开 RECOVERY 键。

查看Loader模式

如何确定板子是否进入Loader模式,我们可以通过工具去查看

Windows操作系统

通过AndroidTool工具可以看到下方提示Found One LOADER Device

如果有进行“进入Loader模式”的操作,仍旧没有看到烧写工具提示LOADER,此时可以看一下Windows主机是否有提示发现新硬件并配置驱动。打开设备管理器,会见到新设备 Rockusb Device 出现,如下图。如果没有,可返回上一步重新安装驱动。

d. 下载

通过Firmware选择固件生成路径

通过Upgrade下载

3. 验证

a. debug设置

对于接线我们不一定非要采用firefly的串口小板,你也可以自己选择usb转串口模块。线如下:

ROC-RK3399-PC Pro 使用以下串口参数:

  • 波特率:1500000
  • 数据位:8
  • 停止位:1
  • 奇偶校验:无
  • 流控:无

b. 查看ubuntu版本

cat /etc/os-release

c. 查看内核版本

uname -a

可以看到内核版本是4.4.194

如果你想编辑内核,那么内核的代码为:

Firefly | 让科技更简单,让生活更智能

d. 查看蓝牙Bluez版本

bluetoothd -v

可以看到bluez的版本是5.53

三. 蓝牙enable验证

整个蓝牙使用rfkill来控制,不知道的rfkill的可以去网上查看对应的资料

1. 查看rfkill list

rfkill list

可以看到rfkill一共有三个,0代表bt, 1代表phy, 2代表wifi

2. 查看rfkill的状态

rfkill list

3. 解锁rfkill bluetooth

rfkill unblock 0

4. hciconfig -a

然后就发现蓝牙enable成功了

hciconfig -a

5. 验证搜索

bluetoothctl scan on


 

先不用关注具体的命令行事什么,后面我们慢慢研究

四. 重新整个编译代码

1. 代码路径

Firefly | 让科技更简单,让生活更智能

md5值

$ md5sum rk3399_linux_release_v2.5.1_20210301_split_dir/*firefly_split*
2cf71e64d35eb8083a4a0fc30c256484  rk3399_linux_release_v2.5.1_20210301_split_dir/rk3399_linux_release_v2.5.1_20210301_firefly_split.file0
f0e9292b3816a8f1ce0eb1eeb483ad56  rk3399_linux_release_v2.5.1_20210301_split_dir/rk3399_linux_release_v2.5.1_20210301_firefly_split.file1
c6aaa5d761d0e7917bea1cb78a0e7229  rk3399_linux_release_v2.5.1_20210301_split_dir/rk3399_linux_release_v2.5.1_20210301_firefly_split.file2
16022cc729d06a28fec30ac52885d91c  rk3399_linux_release_v2.5.1_20210301_split_dir/rk3399_linux_release_v2.5.1_20210301_firefly_split.file3
565426354c01d56c7d48479dd7f3c35b  rk3399_linux_release_v2.5.1_20210301_split_dir/rk3399_linux_release_v2.5.1_20210301_firefly_split.file4
313d311f1705fbfb7bfc45b7937ecf24  rk3399_linux_release_v2.5.1_20210301_split_dir/rk3399_linux_release_v2.5.1_20210301_firefly_split.file5

解压:

cat rk3399_linux_release_v2.5.1_20210301_split_dir/*firefly_split* | tar -xzv

#本SDK文件夹内包含一个 .repo 目录,解压之后,在当前目录下执行以下操作
cd rk3399_linux_release_v2.5.1_20210301
ls -al

.repo/repo/repo sync -l
.repo/repo/repo sync -c --no-tags
.repo/repo/repo start firefly --all

更新Linux sdk

.repo/repo/repo sync -c --no-tags

目录

$ tree -L 1
.
├── app
├── buildroot                                               # Buildroot 根文件系统编译目录
├── build.sh -> device/rockchip/common/build.sh             # 编译脚本
├── device                                                  # 编译相关配置文件
├── docs                                                    # 文档
├── envsetup.sh -> buildroot/build/envsetup.sh
├── external
├── kernel
├── Makefile -> buildroot/build/Makefile
├── mkfirmware.sh -> device/rockchip/common/mkfirmware.sh   # 链接脚本
├── prebuilts                                               # 交叉编译工具链
├── rkbin
├── rkflash.sh -> device/rockchip/common/rkflash.sh         # 烧写脚本
├── tools                                                   # 工具目录
├── u-boot
└── yocto

下载rootfs

Firefly | 让科技更简单,让生活更智能

把ubuntu rootfs修改为rk3399_ubuntu_rootfs.img

#解压
7z x rk3399_ubuntu18.04.img.7z

#sdk根目录下
mkdir ubuntu_rootfs
mv rk3399_ubuntu18.04.img ubuntu_rootfs/

#修改roc-rk3399-pc-plus-ubuntu.mk文件

vim device/rockchip/rk3399/roc-rk3399-pc-plus-ubuntu.mk

#把RK_ROOTFS_IMG属性改成ubuntu文件系统镜像得路径(也就是rk3399_ubuntu18.04.img)
RK_ROOTFS_IMG=ubuntu_rootfs/rk3399_ubuntu_rootfs.img

2. 编译

./build.sh roc-rk3399-pc-plus-ubuntu.mk

./build.sh

生成的整个image在rockdev/pack/ROC-RK3399-PC-PLUS_Rk3399_v2.5.1b_240806.img

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2181007.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

中信银行西安分行:“极地来信”沉浸展西安站正式启幕

9月7日,中信银行“极地来信”跨界整合品牌线下巡展西安站在MOMOPARK艺术购物中心正式启幕。本次活动聚焦中国极地考察的冰路征程,以沉浸式展览与艺术创意传递中国极地考察“向南而行”的无畏精神,并将极地考察的探索之路与金融创新的实践之路…

智慧平台 PersonalDayInOutSchoolData SQL注入漏洞

漏洞描述 EDU 某智慧平台 PersonalDayInOutSchoolData 接口存在SQL注入漏洞,未经身份验证的远程攻击者除了可以利用 SQL 注入漏洞获取数据库中的信息(例如,管理员后台密码、站点的用户个人信息)之外,甚至在高权限的情…

OpenCL 学习(1)---- OpenCL 基本概念

目录 Overview异构并行计算OpenCL 架构平台模型执行模型OpenCL 上下文OpenCL 命令队列内核执行编程模型存储器模型存储器对象共享虚拟存储器 Overview OpenCL(Open Computing Language,开放计算语言) 最早由苹果公司提交草案,并于 AMD, IBM ,intel 和 n…

python14_运算符复合赋值

复合赋值缩写 A 7 B 3 C "hello" D "world" E True F False# 加法赋值运算符,7 3 10 def add1(a, b):a b # 等同于a a breturn a# 字符串加法赋值运算符,hello world helloworld def add2(c, d):c d # 等同于字符串拼接,c c dreturn c# …

尚乐代驾重做

微信小程序客户端登陆 一 总体流程 前段携带code发送请求给后端,后端利用微信小程序相关api解析这个code,获取能唯一认证登陆身份的openid。接着先到数据库查询是否有这个id,如果没有就保存用户信息实现注册,并返回token到前端…

百度百科 X-Bk-Token 算法还原

声明 本文章中所有内容仅供学习交流,严禁用于商业用途和非法用途,否则由此产生的一切后果均与作者无关,若有侵权,请私信我立即删除! 文章目录 声明案例地址参数分析X-Bk-Token算法追踪X-Bk-Token后缀算法还原c 值跟踪与算法还原往期逆向文章推荐最近太忙了,博客摆烂了好…

算法题——层序遍历(一层按一组输出)

输入[1,2,3,4,5] 输出[[1],[2,3],[4,5]] (按照一层输出为一组) 思路: 使用队列,在队列内层再加入一层for循环,每层的个数就是队列中当前队列的个数。 python: from collections import dequeclass Solution(Object):def levelO…

VUE a-table 动态拖动修改列宽+固定列

实现效果 实现思路 自定义表头,在标题后面加两个标签,分别用来显示拖拽图标(cursor: col-resize),和蓝色标记线(有的时候鼠标移动过程中不一定会在表内,这个时候不显示图标,只显示蓝…

独立样本t检验及其案例分析

作者简介:热爱数据分析,学习Python、Stata、SPSS等统计语言的小高同学~个人主页:小高要坚强的博客当前专栏:SPSS本文内容:独立样本t检验及其案例分析作者“三要”格言:要坚强、要努力、要学习 目录 一、引…

2024版Clion debug无法查看函数内数组内容 解决办法

参考Clion debug查看数组中的内容,新版本有所变化 众所周知,进入函数的数组debug不显示内容,解决办法如下: 在Evaluate expression中输入 *(int(*)[10])(数组名)

硬件设计基础之闲聊千兆以太网

一、千兆以太网的介绍 常见的以太网有几种形式,10Mbps、100MHz、1000Mbps、10Gbps等,当然还有更高的,接触的少些,暂且不聊。 10Mbps、100Mbps,多见于单片机使用,比如STM32/GD32 1000Mbps、10Gbps&#x…

React学习笔记(3.0)

classnames优化类名控制 classnames是一个简单的JS库&#xff0c;可以非常方便的通过条件动态控制class类名的显示。 安装classnames&#xff1a; npm i classnames 导入&#xff1a; import classNames from classnames <div className{classNames(box3,{box2:11})}&g…

ESXI识别USB设备

步骤&#xff1a; 插入usb设备到服务器。关闭虚拟机&#xff0c;添加USB控制器&#xff0c;根据U盘选择usb 3.0控制器&#xff0c;再添加usb设备如果usb设备灰色&#xff0c;进入主机打开SSH。使用xshell进行连接&#xff0c;运行以下命令&#xff1a; ESXI识别USB设备 - 插入…

浏览器插件的标准项目结构通常包括以下几个目录和文件

浏览器插件的标准项目结构通常包括以下几个目录和文件&#xff1a; my-extension/ ├── manifest.json // 插件的元数据和配置 ├── background.js // 背景脚本 ├── content_scripts/ // 内容脚本目录 │ └── content.js // 内容脚本…

如何使用ssm实现基于在线开放课程的Web前端设计与实现+vue

TOC ssm746基于在线开放课程的Web前端设计与实现vue 绪论 1.1 选题背景 当人们发现随着生产规模的不断扩大&#xff0c;人为计算方面才是一个巨大的短板&#xff0c;所以发明了各种计算设备&#xff0c;从结绳记事&#xff0c;到算筹&#xff0c;以及算盘&#xff0c;到如今…

基于ssm的宠物领养管理系统的设计与实现 (含源码+sql+视频导入教程)

&#x1f449;文末查看项目功能视频演示获取源码sql脚本视频导入教程视频 1 、功能描述 基于ssm的宠物领养管理系统3拥有两种角色 管理员&#xff1a;用户管理、管理员管理、宠物管理、领养管理、评论管理、团队活动管理、志愿者申请管理、领养列表 用户&#xff1a;查看各种…

51单片机应用开发(进阶)---数码管+按键+蜂鸣器(电磁炉显示模拟)

实现目标 1、加强数码管、按键的学习&#xff0c;实现数码显示变量数据&#xff08;四位数的显示&#xff09;&#xff1b; 2、4位数码2个按键无源蜂鸣器实现模拟电磁炉功率调节及显示&#xff1b; 一、内容描述 功能描述&#xff1a;1、开机显示电磁炉功率300&#xff0c;每…

Percona Monitoring and Management

Percona Monitoring and Management (PMM)是一款开源的专用于管理和监控MySQL、MongoDB、PostgreSQL

Java入门3——操作符+String

在入门2中忘了提 String 的事情了&#xff0c;所以这篇就放在开头啦&#xff0c;很有用 话不多说&#xff0c;开始正题~ 一、String 引用数据类型之——String 1.字符串的拼接 在Java中&#xff0c;如果要把两句话合并到一句话的时候&#xff0c;其实是很简单的&#xff0c;…

0109 图解多线程死锁问题

死锁场景 &#x1f92a;举例场景&#xff1a;两个憨憨Tom和Sam去西餐厅吃牛排&#xff0c;桌子上只有一把刀和一把叉&#xff0c;Tom先拿到了叉子&#xff0c;Sam拿到了刀。只有同时拿到刀叉才能吃牛排&#xff0c;于是两个憨憨陷入如下的僵局。 这个场景中&#xff0c;就存在…