【RP-RV1126】配置一套简单的板级配置
文章目录
- 官方配置
- 新建一套新配置
- 新建板级pro-liefyuan-rv1126.mk配置文件
- 新建一个Buildroot的defconfigs文件
- 吐槽:RP-RV1126 的SDK奇怪的地方
- make ARCH=arm xxx_defconfig 生成的.config文件位置不一样
- savedefconfig命令直接替换原配置文件
- 坑爹的地方
- Buildroot上增加WiFi和BT
- 增加BT需要确定连接的串口号
- WiFi/BT模块的模块和固件位置
- BT使用过程:
- 进入BT交互模式
- 测试WiFi速度(AP6256)
官方配置
buildroot官方配置完整编译需要30分钟。我想搞一个简单的配置,可以快速编译,快速测试一些简单的功能。
| 命令 | 对应的文件 | 描述 |
|---|---|---|
./build.sh lunch | pro-liefyuan-rv1126.mk | 选择全局配置文件 |
source envset.sh | rockchip_rv1126_rv1109_liefyuan_defconfig | 选择Buildroot配置文件 |
新建一套新配置
新建板级pro-liefyuan-rv1126.mk配置文件
定义一个自己的pro-liefyuan-rv1126.mk文件:
基于原来的文件:./device/rockchip/rv1126_rv1109/pro-rv1126.mk
改为:./device/rockchip/rv1126_rv1109/pro-liefyuan-rv1126.mk
拷贝目录sdk/device/rockchip/rv1126_rv1109/下的pro-rv1126.mk改成自己的名字:pro-liefyuan-rv1126.mk
目前的打算,只修改Buildroot文件系统的配置,Uboot和Kernel的配置不变。
# Buildroot config
export RK_CFG_BUILDROOT=rockchip_rv1126_rv1109_facial_gate
改为:
# Buildroot config
export RK_CFG_BUILDROOT=rockchip_rv1126_rv1109_liefyuan
pro-liefyuan-rv1126.mk 的全部内容:
#!/bin/bash# Target arch
export RK_ARCH=arm
# Uboot defconfig
export RK_UBOOT_DEFCONFIG=rv1126
# Uboot image format type: fit(flattened image tree)
export RK_UBOOT_FORMAT_TYPE=fit
# Kernel defconfig
export RK_KERNEL_DEFCONFIG=rv1126_defconfig
# Kernel defconfig fragment
export RK_KERNEL_DEFCONFIG_FRAGMENT=rv1126-facial-gate.config
# Kernel dts
#export RK_KERNEL_DTS=rv1109-evb-ddr3-v13-facial-gate
export RK_KERNEL_DTS=pro-rv1126
# boot image type
export RK_BOOT_IMG=zboot.img
# kernel image path
export RK_KERNEL_IMG=kernel/arch/arm/boot/zImage
# kernel image format type: fit(flattened image tree)
export RK_KERNEL_FIT_ITS=boot.its
# parameter for GPT table
export RK_PARAMETER=parameter-facial-gate.txt
# Buildroot config
export RK_CFG_BUILDROOT=rockchip_rv1126_rv1109_liefyuan
# Recovery config
export RK_CFG_RECOVERY=rockchip_rv1126_rv1109_recovery
# Recovery image format type: fit(flattened image tree)
export RK_RECOVERY_FIT_ITS=boot4recovery.its
# ramboot config
export RK_CFG_RAMBOOT=
# Pcba config
export RK_CFG_PCBA=
# Build jobs
export RK_JOBS=12
# target chip
export RK_TARGET_PRODUCT=rv1126_rv1109
# Set rootfs type, including ext2 ext4 squashfs
export RK_ROOTFS_TYPE=ext4
# rootfs image path
export RK_ROOTFS_IMG=rockdev/rootfs.${RK_ROOTFS_TYPE}
# rootfs system
export RK_ROOTFS_SYSTEM=buildroot
# Set ramboot image type
export RK_RAMBOOT_TYPE=
# Set oem partition type, including ext2 squashfs
export RK_OEM_FS_TYPE=ext2
# Set userdata partition type, including ext2, fat
export RK_USERDATA_FS_TYPE=ext2
#OEM config
export RK_OEM_DIR=oem_facial_gate
# OEM build on buildroot
export RK_OEM_BUILDIN_BUILDROOT=NO
#userdata config, if not define this, system will format by RK_USERDATA_FS_TYPE
export RK_USERDATA_DIR=userdata_normal
#misc image
export RK_MISC=wipe_all-misc.img
#choose enable distro module
export RK_DISTRO_MODULE=
# Define pre-build script for this board
export RK_BOARD_PRE_BUILD_SCRIPT=app-build.sh
# Define package-file for update.img
export RK_PACKAGE_FILE=rv1126_rv1109-package-file
新建一个Buildroot的defconfigs文件
定义一个自己的Buildroot的configs文件:
基于原来的文件:./buildroot/configs/rockchip_rv1126_rv1109_facial_gate_defconfig
改为:./buildroot/configs/rockchip_rv1126_rv1109_liefyuan_defconfig
$ cp ./buildroot/configs/rockchip_rv1126_rv1109_facial_gate_defconfig ./buildroot/configs/rockchip_rv1126_rv1109_liefyuan_defconfig
原来的Buildroot配置太复杂了我精简到如下:
buildroot/configs/rockchip_rv1126_rv1109_liefyuan_defconfig 文件的全部内容:
#include "base.config"
#include "base_extra.config"
#include "debug.config"
#include "audio.config"
#include "wifi.config"
#include "network.config"
#include "rv1126_rv1109_arm.config"
#include "updateEngine.config"
BR2_PACKAGE_RKWIFIBT_AP6256=y
BR2_PACKAGE_RKWIFIBT_BTUART="ttyS0"
BR2_PACKAGE_DRM_DISPLAY_OUTPUT=y
BR2_PACKAGE_LIBERATION=y
BR2_PACKAGE_SOURCE_HAN_SANS_CN=y
BR2_PACKAGE_QT5BASE_WIDGETS=y
BR2_PACKAGE_QT5BASE_FONTCONFIG=y
BR2_PACKAGE_QT5BASE_GIF=y
BR2_PACKAGE_QT5BASE_JPEG=y
BR2_PACKAGE_QT5BASE_PNG=y
BR2_PACKAGE_QT5BASE_USE_RGA=y
BR2_PACKAGE_QT5BASE_LINUXFB_ARGB32=y
BR2_PACKAGE_QT5MULTIMEDIA=y
BR2_PACKAGE_QT5QUICKCONTROLS=y
BR2_PACKAGE_QT5SERIALPORT=y
BR2_PACKAGE_BLUEZ_TOOLS=y
BR2_PACKAGE_BLUEZ5_UTILS=y
BR2_PACKAGE_BLUEZ5_UTILS_OBEX=y
BR2_PACKAGE_BLUEZ5_UTILS_CLIENT=y
BR2_PACKAGE_BLUEZ5_UTILS_GATTTOOL=y
BR2_PACKAGE_DHCP=y
这里其实就设置了WiFi蓝牙相关和Qt相关的配置,整个编译下来不到8分钟。
吐槽:RP-RV1126 的SDK奇怪的地方
make ARCH=arm xxx_defconfig 生成的.config文件位置不一样
- 一般来说(主线Buildroot),我在Buildroot根目录下运行命令:
make ARCH=arm xxxx_defconfig,会在当前目录下产生一个.config文件,但是Rockchip的不一样,运行了上述命令后,它是会在这里产生该文件:./output/xxxx/.config
savedefconfig命令直接替换原配置文件
liefyuan@ubuntu:~/rv1126/rp_rv1126_sdk/buildroot$ make ARCH=arm savedefconfigGEN /home/liefyuan/rv1126/rp_rv1126_sdk/buildroot/output/rockchip_rv1126_rv1109_liefyuan/Makefile
grep "#include" /home/liefyuan/rv1126/rp_rv1126_sdk/buildroot/configs/rockchip_rv1126_rv1109_liefyuan_defconfig > /home/liefyuan/rv1126/rp_rv1126_sdk/buildroot/configs/rockchip_rv1126_rv1109_liefyuan_defconfig.split || true
cat /home/liefyuan/rv1126/rp_rv1126_sdk/buildroot/configs/rockchip_rv1126_rv1109_liefyuan_defconfig >> /home/liefyuan/rv1126/rp_rv1126_sdk/buildroot/configs/rockchip_rv1126_rv1109_liefyuan_defconfig.split
/home/liefyuan/rv1126/rp_rv1126_sdk/buildroot/build/defconfig_hook.py -s /home/liefyuan/rv1126/rp_rv1126_sdk/buildroot/configs/rockchip_rv1126_rv1109_liefyuan_defconfig.split /home/liefyuan/rv1126/rp_rv1126_sdk/buildroot/configs/rockchip_rv1126_rv1109_liefyuan_defconfig
rm /home/liefyuan/rv1126/rp_rv1126_sdk/buildroot/configs/rockchip_rv1126_rv1109_liefyuan_defconfig.split
/home/liefyuan/rv1126/rp_rv1126_sdk/buildroot/build/defconfig_hook.py -s /home/liefyuan/rv1126/rp_rv1126_sdk/buildroot/configs/rockchip_rv1126_rv1109_liefyuan_defconfig.split /home/liefyuan/rv1126/rp_rv1126_sdk/buildroot/configs/rockchip_rv1126_rv1109_liefyuan_defconfig这句话把我震惊了,我运行命令make ARCH=arm savedefconfig之后它直接保存到原文件了。。。。
坑爹的地方
- 清除
buildroot的编译内容,需要进入sdk/buildroot/目录进行make clean才可以清除。 ./build.sh cleanall并不能清除所有生成文件- 重新编译的顺序:
- 全部清除:
./build.sh cleanall - 删除固件等:
cd ./rockdev然后rm ./* - 重新编译:
./build.sh all - 构建一次完整固件:
./build.sh updateimg
- 全部清除:
Buildroot上增加WiFi和BT
增加BT需要确定连接的串口号


根据以上信息,确认BT串口连接的是UART0,也就是ttyS0。
因此Buildroot里面配置相应的串口号。

WiFi/BT模块的模块和固件位置
开发板上的位置
/system/lib/modules/bcmdhd.ko #驱动ko(如果是ko编译的话)
/system/etc/firmware/fw_bcm43455c0_ag.bin #驱动firmware文件存放位置
/system/etc/firmware/nvram_ap6255.txt #驱动nvram文件存放位置
/system/etc/firmware/BCM4345C0.hcd #蓝牙firmware文件(如果有蓝牙功能)
BT使用过程:
killall brcm_patchram_plus1echo 0 > /sys/class/rfkill/rfkill0/state # 下电
echo 1 > /sys/class/rfkill/rfkill0/state # 上电brcm_patchram_plus1 --bd_addr_rand --enable_hci --no2byt
es --use_baudrate_for_download --tosleep 200000 --baudrate 1500000 --patchram /s
ystem/etc/firmware/bcm43438a1.hcd /dev/ttyS0 &hciconfig -a
hciconfig hci0 uphcitool lescan
hcitool scan
进入BT交互模式
cd /usr/libexec/bluetooth/
./bluetoothd -n -d &bluetoothctl
在bluetoothctl中,我们可以进行手动配对操作。配对时,我们需要提供设备的MAC地址,并且将设备设置为可被发现模式。
$ bluetoothctl
[bluetooth]# power on
[bluetooth]# discoverable on
[bluetooth]# scan on
[bluetooth]# devices
Device 20:13:03:22:66:19 Bose SoundSport Wireless
[bluetooth]# pair 20:13:03:22:66:19
[bluetooth]# trust 20:13:03:22:66:19
[bluetooth]# connect 20:13:03:22:66:19
[bluetooth]# exit
测试WiFi速度(AP6256)
ubuntu端服务器
liefyuan@ubuntu:~/rv1126/rp_rv1126_sdk/buildroot$ iperf -s
------------------------------------------------------------
Server listening on TCP port 5001
TCP window size: 128 KByte (default)
------------------------------------------------------------
[ 4] local 192.168.1.105 port 5001 connected with 192.168.1.111 port 49918
[ ID] Interval Transfer Bandwidth
[ 4] 0.0-10.4 sec 37.6 MBytes 30.3 Mbits/sec
RV1126开发板端:
[root@RV1126_RV1109:/etc]# iperf -c 192.168.1.105 -i 1
------------------------------------------------------------
Client connecting to 192.168.1.105, TCP port 5001
TCP window size: 43.8 KByte (default)
------------------------------------------------------------
[ 3] local 192.168.1.111 port 49918 connected with 192.168.1.105 port 5001
[ ID] Interval Transfer Bandwidth
[ 3] 0.0- 1.0 sec 3.25 MBytes 27.3 Mbits/sec
[ 3] 1.0- 2.0 sec 3.62 MBytes 30.4 Mbits/sec
[ 3] 2.0- 3.0 sec 3.75 MBytes 31.5 Mbits/sec
[ 3] 3.0- 4.0 sec 4.00 MBytes 33.6 Mbits/sec
[ 3] 4.0- 5.0 sec 4.38 MBytes 36.7 Mbits/sec
[ 3] 5.0- 6.0 sec 3.62 MBytes 30.4 Mbits/sec
[ 3] 6.0- 7.0 sec 3.12 MBytes 26.2 Mbits/sec
[ 3] 7.0- 8.0 sec 4.00 MBytes 33.6 Mbits/sec
[ 3] 8.0- 9.0 sec 3.88 MBytes 32.5 Mbits/sec
[ 3] 9.0-10.0 sec 4.00 MBytes 33.6 Mbits/sec
[ 3] 0.0-10.1 sec 37.6 MBytes 31.1 Mbits/sec
测试速度约37.6MByte
相关文章:
【RP-RV1126】配置一套简单的板级配置
文章目录 官方配置新建一套新配置新建板级pro-liefyuan-rv1126.mk配置文件新建一个Buildroot的defconfigs文件 吐槽:RP-RV1126 的SDK奇怪的地方make ARCHarm xxx_defconfig 生成的.config文件位置不一样savedefconfig命令直接替换原配置文件坑爹的地方 Buildroot上增…...
解决uniapp的video标签和transition属性使用时出现错位的问题
template:三个视频都每个占满屏幕,点击按钮滚动最外层bgBox元素, style: 想要加上动画过渡效果: 这是显示第一个视频: 点按钮向上滑动滚动到第二个视频时: 视频错位了 ,因为视频消失又出现的时候…...
电脑校园杂志电脑校园杂志社电脑校园编辑部2023年第9期目录
智慧校园 基于vue.js的“微校园”APP设计 吴秋伟 周慧 董锐 李仙云 余维 邓巧平 彭微1-3 探析AIGC对网络安全的革新:挑战与机遇共存 康良成 张朋4-6 文本信息自动摘要技术综述 滕宇飞7-9《电脑校园》投稿:cn7kantougao163.com 区块链应用于图书馆服务的策…...
NSSCTF做题第十页(1)
[GXYCTF 2019]禁止套娃 看源代码也没什么东西,扫一下看看 发现了git泄露 话不多说直接开整 下载下来了 flag.php 还是代码审计 <?php include "flag.php"; echo "flag在哪里呢?<br>"; if(isset($_GET[exp])){ if (!preg_…...
文件详细操作过程(C语言)
🌞🌞🌞千淘万漉虽辛苦🌞🌞🌞 🌞🌞🌞吹尽狂沙始到金🌞🌞🌞 🌇C语言文件操作 🍊文件的定义🍋什么是文…...
python使用ffmpeg来制作音频格式转换工具(优化版)
简介:一个使用python加上ffmpeg模块来进行音频格式转换的工具。 日志: 20231030:第一版,设置了简单的UI布局和配色,实现音频转为Mp3、AAC、wav、flac四种格式。可解析音频并显示信息,可设置转换后的保存路径 UI界面: 编程平台:visual studio code 编程语言:python 3…...
Debug技巧-不启用前端访问后端
在日常开发中,我们经常会遇到各种问题需要调试,前后端都启动需要耗费一定的时间和内存,方便起见,可以直接用抓包数据访问后端,这里我们需要用到Postman或者ApiFox 抓包数据 在系统前台触发后端请求,在控制…...
由CAB/PAB展开的一些思考
又到了一月保底一篇订阅号文章的时候,上周受到Oracle邀请,参加了在上海Oracle办公室举行的CAB(The 13th Oracle China Customer Advisory Board Metting)/ PAB(The 3th Oracle China Partner Advisory Board Metting&…...
系列十五、idea全局配置
一、全局Maven配置 IDEA启动页面>Customize>All settings>Build,Execution,Deployment>Build Tools>Maven 二、全局编码配置 IDEA启动页面>Customize>All settings>Editor>File Encodings 三、全局激活DevTools配置 IDEA启动页面>Customize>A…...
高德Go生态建设与研发实践
序 高德在构建Go生态演化过程中,已经实现了QPS从0到峰值千万的飞跃,本篇文章主要介绍在此过程中积累的一些技术决策及性能优化和重构经验。阅读本文读者会有以下3点收获: 1.高德Go生态发展历程及现状分析 2.高德云原生Serverless落地情况&…...
SpringCloud中Turbine 1.X版本BUG
错误出现在spring-cloud-turbine-stream 包中,因为这个包会启动一个netty-port容器,并将它的server.port 设置为-1 ,从而关闭了Servlet容器,这是官方包的一个Bug,不过Spring Boot 2.0已修复,要么升级包要么…...
SCSS的用法有哪些?分别举例
SCSS的用法主要有: 1: 变量:在SCSS中,我们可以通过 $ 符号来定义变量。比如,我们可以定义一个颜色变量 $color: red;,然后在我们需要使用这个颜色的时候,直接使用 $color 就可以了。 2&#x…...
Spring controller层请求数据和响应数据的简单方法
记录一些很基本的使用方法。 一、GET请求传参方法: 1.方法一:把参数传到?之后 使用注解RequestParam // 假如传值了current和limit /students?current1&limit20 RequestMapping(value "/students", method RequestMetho…...
中国商界杂志中国商界杂志社中国商界编辑部2023年第10期目录查询
要闻 我国旅游市场步入理性繁荣阶段 赵熠如; 10-11 产业 老国货品牌再迎高光时刻 能否留住流量 涂瀚文; 12-13《中国商界》投稿:cnqikantg126.com 金融集聚有力 促进长三角城市高质量发展 刘盛坤; 14-17 辽宁农贸市场亟待优化升级路径在哪儿&#x…...
记录 vue + vuetify + electron 安装过程
NodeJs 版本: 20 内容来自: Electron Vue.js Vuetify 构建跨平台应用_思月行云的博客-CSDN博客文章浏览阅读61次。Go coding!https://blog.csdn.net/kenkao/article/details/132600542 npm config set registry https://registry.npm.taobao.org np…...
短视频账号矩阵系统saas源码搭建/技术
一、短视频矩阵系统建模----技术api接口--获取用户授权 技术文档分享: 本系统采用MySQL数据库进行存储,数据库设计如下: 1.用户表(user): - 用户ID(user_id) - 用户名(…...
词向量模型Word2Vec
Word2Vec CBOW连续词袋模型例子CBOW模型的embeddings层CBOW模型的线性层 总结 skip-gram跳字模型例子Skip-Gram模型的结构 CBOW和skip-gram的目标都是迭代出词向量字典(嵌入矩阵)——embeddings CBOW连续词袋模型 根据上下文词汇预测目标词汇 例子 使…...
公会发展计划(GAP):经过实战考验的 Web3 任务模式
2020 年 12 月,Yield Guild Games 踏上了一段征程,以表彰兢兢业业的 Web3 游戏玩家所付出的时间和努力,同时为他们提供利用自己的技能促进个人成长的机会。这一旅程的第一步是于 2022 年 7 月推出的公会发展计划(GAP)。…...
网络工程师基础知识(2)
一、端口可以分为系统端口、登记端口、客户端使用端口。 (1) 系统端口。该端口的取值范围为[0,1023]. (2) 登记端口。登记端口是为没有熟知端口号的应用程序使用的,端口范围为[1024,49151]。这些端口必须在 IANA 登记以避免重复。 (3) 客户端使用端口。这类端口仅…...
创建ABAP数据库表和ABAP字典对象-理解表字段02
理解表字段 这一步,您将定义表字段。首先,你需要了解你的需求: 内置的ABAP类型和新定义的字段类型 下面我们将会创建3个字段类型在数据库表中。 ●内置字段类型:最快的方法:应用系统已经提供好的字段类型,基本类型、长度和描述…...
ZygiskFrida:安卓逆向中基于Zygote的零感知Frida注入方案
1. 这不是“又一个 Frida 注入工具”,而是安卓逆向工作流的物理层重构你有没有过这样的经历:在一台已 root 的测试机上调试某个金融类 App,想 hook 它的 SSL Pinning 检查逻辑,结果 Frida Server 启动失败;换用 frida-…...
Bittensor:去中心化AI网络的架构、挑战与激励模型优化
1. 项目概述:当AI遇上去中心化,Bittensor在解决什么核心问题?最近几年,AI模型的能力突飞猛进,但一个越来越明显的趋势是,顶尖的AI能力正快速向少数几家科技巨头集中。无论是训练所需的算力、高质量的数据集…...
AI赋能工程教育:构建个性化、多元化与伦理驱动的学习生态
1. 项目概述:当工程教育遇见AI,我们到底在谈论什么?最近几年,AI这个词快被说烂了。从ChatGPT的横空出世,到各类生成式AI工具的遍地开花,似乎每个行业都在讨论如何“被赋能”。工程教育这个领域也不例外&…...
基于k-可加Choquet积分的SHAP值高效近似与特征交互分析
1. 项目概述:当模型解释遇上博弈论在机器学习项目落地的最后一步,我们常常会遇到一个尴尬的局面:模型预测准确率高达95%,但当业务方或监管方问起“为什么这个客户的贷款申请被拒绝了?”时,我们却只能给出一…...
用Python处理DREAMER脑电数据集:从.mat文件到.npy文件的完整实战教程
用Python处理DREAMER脑电数据集:从.mat文件到.npy文件的完整实战教程在情感计算与神经科学交叉领域,DREAMER数据集因其同时包含脑电信号(EEG)和情感评分而备受研究者青睐。但原始数据以.mat格式存储,这种MATLAB专属格式…...
自动化业务通报系统实现
问题解构:需求核心是构建一个基于Python的自动化业务通报系统,用于从多个.xls报表中提取数据,按团队统计指标完成情况,生成手机适配的通报图片,并通过Web界面展示。系统需支持灵活的配置管理,包括团队信息、…...
设计模式 之 责任链模式
一搜网上讲责任链的写法都感觉好复杂?我用简单实现让你秒懂并马上用到项目里 前言 搜了一圈责任链模式的文章,要么搬出 UML 类图画半天,要么搞一堆 Handler、HandlerChain、AbstractHandler 层层嵌套,看得人头大。 今天分享一个我…...
避开GD32F303 PWM配置的3个常见坑:从时钟使遇到占空比设置
GD32F303 PWM实战避坑指南:从时钟配置到波形调优 第一次接触GD32F303的PWM功能时,我像大多数开发者一样,以为按照手册配置就能顺利输出波形。直到示波器上出现杂乱的信号,才意识到这个看似简单的功能背后藏着不少"坑"。…...
别再死记硬背了!用Python+MATLAB/Simulink,5步搞定自动控制原理的时域分析(附代码)
从理论到代码:用PythonMATLAB玩转自动控制时域分析 为什么我们需要用代码实现控制理论? 翻开任何一本自动控制原理教材,满眼都是微分方程、传递函数和响应曲线。传统学习方法强调手工计算和记忆公式,但现代工程师更需要的是将抽象…...
HermesAgent工具如何快速对接Taotoken的多模型服务提供商
🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 HermesAgent工具如何快速对接Taotoken的多模型服务提供商 基础教程类,本文将指导使用HermesAgent工具的开发者…...
