RK3399

2024/4/11 15:16:52

08.音频系统:第003课_Linux音频驱动程序:第004节_声卡控制之kcontrol

一个芯片之中有多个寄存器,一个寄存器里,某些位用来表示某个功能。如下,那我们要分析的kcontrol是表示一个功能,还是表示一个寄存器呢?当然使用kcontrol表示一个功能比较好,如下: 在打开某个功…

08.音频系统:第003课_Linux音频驱动程序:第001节_alsa音频驱动框架

在上小节我们分析了Adndroid系统音频的框架,这么一个复杂的系统我们怎么去学习呢?我们从下往上学,先分析音频的驱动程序,看看linux系统中驱动程序是怎么编写的,他的结构是怎么样的,然后在琢磨Tinyalsa&…

rk3399 pip安装第三方库报错-[Errno 28] No space left on device

目录 简介 原因 查看磁盘剩余容量 解决方法1

05.Binder系统:第8课第5节_Binder系统_JAVA实现_内部机制_Client端

上小节讲解了Binder系统的分层,该小节我们讲解Binder系统的内部机制,在上小节我们遗留了很多问题没有接到。 1.应用程序是java编写的,binder系统是C程序,那么java程序是如何调用C程序的呢? 我们先来回到这个问题&#…

08.音频系统:第002节_Android音频系统框架简述

该小节我们来讲解Android音频系统框架,了解了框架之后,我们才能更加容易的去查看以及分析源码,有了框架才不会遗失方向。 下面是一个大框图,该小节我们将围绕下面的图示进行讲解: 以前总提到,写应用程序的…

05.Binder系统:第7课第5节_Binder系统_c++实现_内部机制_数据传输

binder系统进程间的通信,其都是在驱动binder中实现的,也就是说,无论你的应用程序多么的复杂,最终还是通过ioctl这些标准的接口使用驱动程序,我们可以根据open,ioctl等等的调用过程分析C程序的内部机制&…

08.音频系统:第003课_Linux音频驱动程序:第002节_在状态栏显示耳麦图标

在上小节编写了一个耳麦插拔的驱动程序,按理说接上耳麦的时候,我们应该声音通道,让声音从耳机中输出出来,我们需改修改一下源代码,让他在状态栏显示耳麦的图标。我们需要做以下事情: 1.确定在状态栏上图标的…

基于RK3399配置并测试—惯性导航IMU

目录 一、简介: 二、编译安装惯性导航功能包

rk3399 实现深度相机realsense-ros

目录 一、简介 二、第一种安装ROS功能包

基于RK3399配置并测试—单线激光雷达

文章目录 一、简介: 二、安装wireshark

08.音频系统:第004课_Android音频系统详解:第004节_AudioPolicyService启动过程分析

经过前面小节的学习我们知道android音频系统中有两个服务:AudioFlinger与AudioPolicyService。该小节我们讲解AudioPolicyService,他会做哪些事情呢? 比如应用程序要播放声音,那么这个声音从哪个设备播放出来,其就是通…

08.音频系统:第004课_Android音频系统详解:第005节_AudioFlinger启动过程分析

该小节讲解AudioFlinger启动的过程,作为一个硬件访问服务,其启动过程十分的简单,只需要向系统注册服务就可以了,然后被动的等待其他的客户端来访问。 在上一小节讲解了AudioPolicyService的启动过程,其除了注册本身的服…

08.音频系统:第004课_Android音频系统详解:第007节_AudioPolicyManager堪误与回顾

上小节我们对AudioTrack创建作了一些概述,知道其大概会做如下事情: 1 使用AudioTrack的属性, 根据AudioPolicy找到对应的output、playbackThread 2 在playbackThread中创建对应的track 3 APP的AudioTrack 和 playbackThread的mTracks中的track之间建立共…

08.音频系统:第003课_Linux音频驱动程序:第008节_DAPM的情景分析_使用过程

该小节我们讲解DAPM的情景分析的构造过程,我们先回顾一下widget上电的过程,如下是一条上电路线: 从LINPUT1经过两个Mixer到达ADC,从图上可以看出,控制接口共六个部分,只要其中有一个部分没有打开&#xff…

08.音频系统:第004课_Android音频系统详解:第011节_PlaybackThread处理流程

上小节我们讲解了音频数据的传输,应用程序会创建一个AudioTrack,然后会到时其与playbackThread之间创建一个共享内存,当然这个共享可以是应用程序创建,也可以是playbackThread创建。应用程序只要把数据写入到共享内存,…

[RK-Linux] 移植Linux-5.10到RK3399(五)| 检查PCIe并识别M.2 NVMe SSD

ROC-RK3399-PC Pro 引出了 PCIe 座子,用于装载 M.2 NGFF M-Key 接口的 SSD。 文章目录 一、PCIe二、NVMe三、调试一、PCIe PCIe(Peripheral Component Interconnect Express)是一种高速串行总线接口,用于连接计算机系统中的各种外部设备。它是传统PCI总线的进化版本,提供…

Python的matplotlib库安装失败的一种方法,报错certifi>=2020.06.20

一般我们在安装matplotlib库的时候,都是直接pip3 install matplotlib,但是有时候会报错,比如 其中一种解决办法是: 升级pip3 python3 -m pip install --upgrade pip -i https://pypi.douban.com/simple 后面开始就是一直自动尝试…

rk3399运行奥比中光深度相机之问题总结

目录 一、简介 二、安装依赖 三、单独编译 astra_camera功能包 四、安装驱动并查看端口

08.音频系统:第003课_Linux音频驱动程序:第007节_route_path添加过程分析

该小节我们讲解route与path添加过程分析。会使用一些例子,把这个过程讲解清楚。 打开源码文件rt5651.c,根据之前的分析我们知道: static const struct snd_soc_dapm_route rt5651_dapm_routes[] {......{"IN1P", NULL, "LD…

基于RK3399配置并测试—超声波-485协议

目录 一、简介: 二、Windows配置超声波地址编号 2.1 超声波基本配置参数: 2.2 配置一个超声波USB转RS485模块

RK3399安装pyrealsense2——及解决问题总结

文章目录 简介 一、编译预处理 二、编译 三、安装

RK3399使用D435i+YOLO V5结合进行人物目标检测之总结

文章目录 一、简介 二、新建文件夹并文件传输 三、安装依赖

rk3399 安装numpy报错-RuntimeError: Running cythonize failed

在运行如下安装命令时: pip3 install numpy 报错: RuntimeError: Running cythonize failed! Command "/usr/bin/python3 -u -c "import setuptools, tokenize;__file__/tmp/pip- build-j1mbj8zb/numpy/setup.py;fgetattr(tokenize, o…

08.音频系统:第004课_Android音频系统详解:第008节_AudioTrack创建过程_选择output

应用程序创建的AudioTrack怎么去选择output呢?下面是上小节的图: 首先应用程序传入声音类型,然后根据声音类型会设置一个属性,然后根据声音的属性确定他的组/类别,找到device,最后在根据device找到对应的o…

【RK3399】1.RK3399开发板基础配置

最近在小黄鱼入手了一个RK3399的开发板,RK的芯片我也是第一次使用。FireFly配套提供了完善的教程,可以在他们的WIKI上找到。上面有的内容就不在本文叙述了,大家可以参考教程https://wiki.t-firefly.com/zh_CN/Firefly-RK3399/linux_compile_g…

05.Binder系统:第8课第6节_Binder系统_JAVA实现_内部机制_Server端

该小节我们讲解Binder系统使用java实现Server端的机制,下面是指向讲解的binder系统的分成图示: 在这幅图中有3个疑问: 1.java的client端怎么发送数据给驱动程序,驱动只能和C或者C代码对接。 2.Server端怎么从驱动程序读取数据。 …

RK3399 android7.1 实现双wifi功能 STA+AP

wifi模组: 主板使用的wifi模块为海华AW-NM43438W模组以及客户提供了一款USB接口的5G双频无线网卡RTL8821CU。 双wifi功能实现效果: 主板自带的wifi模组作为station正常连接外部wifi,USB接口的外接网卡作为AP(热点)供其他设备连接…

CMake 安装升级更高版本,CMake 3.19.2 or higher is required. You are running version 3.10.2

目录 问题描述: 一、第一种解决办法 1、下载Cmake源码 2、解压后编译 3、版本覆盖 二、采用二进制的方式安装最新版本 问题描述: 在rk3399 arm 平台上编译Open3d 库的时候,发现编译库的时候提示如下,说明我的cmake版本偏低了…

第二章:硬件访问服务(3)-APP修改编译

通过上一小节,我们硬件访问服务已经基本完成(还有少些部分需要修改,下小节为大家讲解),该小节我们实现APP部分。 APP修改 在第一章节中,我们在工程app/src/main/java/com/example/administrator/下创建了…

07.显示系统:第005课_Vsync机制:第002节_Vsync框架

在上一节中,讲解了黄油计划,在android系统中,通过黄油计划的三个方法改进显示性能,增强人机交互的流畅程度,其中最重要的就是引入了Vsync机制,所有的部件都在Vsync到来的时候开始工作。下面开始讲解Vsync的…

05.Binder系统:第6课第8节_Binder系统_驱动情景分析_transaction_stack机制_双向服务

现在开始讲解在双向传输,使用transaction_stack机制的作用。 假设有三个进程p1,p2,p3分别提供S1,S2,S3服务,他们分别有自己的线程t,如下图: 假设t1线程需要使用p2服务,他会向t2线程发送数据,在t2线程发送数…

基于rk3399 arm平台上测试 libroyale-ros 3D深度相机功能实现

目录 简介 一、修改CMakeLists.txt中的cmake版本 二、修改CMakeLists.txt中的不必要的注释掉 三、编译源码sampleROS

rk3399 pip安装报错-bash:: command not found

首先我们系统自带的是pip3 install **这个是没有问题的,但是我们想安装python2的库却发现问题: 当输入: pip install numpy 提示错误信息: -bash: -bash:: command not found 原因是我们Ubuntu18系统不存在pip,需要安…

基于RK3399第一篇烧录Ubuntu18.04系统并实现PuTTy远程登录

文章目录 一、简介 二、下载系统文件 三、烧写到SD卡 四、烧录系统到rk3399 五、putty远程操作 一、简介 我们拿到NanoPC

RK3399平台入门到精通系列讲解(外设篇)热成像传感器MLX90640 JNI控制程序

文章目录 JNI回调函数回调函数的实现驱动可以详看:链接 JNI 文件:native-lib.cpp

RK3399平台开发系列讲解(内核调试篇)网络调试工具

🚀返回专栏总目录 文章目录 一、dstat 工具介绍二、例如dstat 进行网络问题调试三、ss 命令查看 TCP 详细信息四、netstat 查看TCP详细信息沉淀、分享、成长,让自己和他人都能有所收获!😄 📢 本篇将介绍网络的相关工具。 一、dstat 工具介绍 当设备产生问题,而我们又…

第二章:硬件访问服务(2)-系统编写

通过上一节的介绍,对于android硬件访问服务器有了大致的了解,根据上一节的框图,我们在来梳理一下要点。一个饭店要正常的营业,顾客,菜单菜式,厨师缺一不可。我们的要点亮LED也是同样,APP&#x…

08.音频系统:第004课_Android音频系统详解:第009节_AudioTrack创建过程_Track和共享内存

在上小节中我们讲解了,在AudioTrack创建过程中,他会选择一个output,一个output对应一个播放设备,他也对应着一个播放线程,该小节我们讲解在这个线程之中,怎么去创建一个Track,应用程序的AudioTr…

08.音频系统:第004课_Android音频系统详解:第006节_AudioTrack创建过程

在前面的小节中,我们讲解了AudioPolicyService与AudioFlinger这两个系统提供的服务,那么我们的应用程序怎么去使用这些服务区播放声音呢?我们先来体验一个测试程序frameworks\base\media\tests\audiotests\shared_mem_test(共享内…

08.音频系统:第004课_Android音频系统详解:第002节_以例子说明几个重要概念

该小节我们以几个例子,说明几个重要的概念:stream type, strategy, device, output, profile, module : policy,out flag 我们先画一个图,假设深黑色大框为我们的andriod设备: 接着声卡,声卡上面有一个喇…

08.音频系统:第004课_Android音频系统详解:第001节_分析思路

在音频系统第一课时的时候,有如下一副框图。围绕这下图讲解了音频系统的框架: 但是该框图不够细致,为了大家更加详细的了解音频系统,存在如下框图: 后续我们将围绕这个框图进行讲解,我们先看看右边&#x…

08.音频系统:第005课_项目实战1_耳麦拔插:第001节_驱动程序上报耳麦拔插事件

在接下来的几个小节中,会讲解几个音频的项目,现在想讲解第一个项目:对 耳麦拔插事件的处理,一起分为四个小节左右: 5.1 驱动程序上报耳麦拔插事件 5.2 在状态栏显示耳麦图标 5.3 耳麦拔插事件调用流程分析 5.4 切换声音…

6.1物联网RK3399项目开发实录-驱动开发之ADC驱动(wulianjishu666)

物联网嵌入式开发源码例程: 链接:https://pan.baidu.com/s/1B3oqq5QBhN-VmTFt9CI-7A?pwd2ihg ******************************************************************************************* ADC 使用 简介 AIO-3399J 开发板上的 AD 接口有两种…

08.音频系统:第003课_Linux音频驱动程序:第002节_ASoC音频驱动框架

通过上小节alsa音频驱动框架的分析,知道如果要去写一个声卡驱动,我们需要分配,设置,注册snd_card结构体: 定义一个struct snd_card *card;snd_card_new //里面会创建控制接口snd_pcm_new //里面会创建playback&#x…

08.音频系统:第003课_Linux音频驱动程序:第008节_DAPM的情景分析_构造过程

上小节我们讲解了route_path添加过程分析,该小节我们进行DAPM的情景的情景分析,即讲解几个例子。下面是一个图示(看起来比较混乱,不过没有关系,可以当做接线部分不存在,然后再讲解的过程中慢慢观看&#xf…

RK3399平台开发系列讲解(基础篇)嵌入式编码规范有哪些

🚀返回专栏总目录 文章目录 一、什么是GNU二、GNU C 编码规范2.1、格式2.2、注释2.3、语法约定2.4、命名2.5、系统可移植性2.6、CPU 可移植性2.7、系统函数2.8、国际化2.9、字符集沉淀、分享、成长,让自己和他人都能有所收获!😄 📢 GNU 编码规范的出发点,是确保所有 G…

08.音频系统:第003课_Linux音频驱动程序:第003节_RK3399声卡驱动移植_combine

该小节我们讲解一下开发板RK3399声卡rt5651的移植,主要分为4个部分,platfrom,codec,machine,dts(设备树)。 首先我们从设备树开始讲起,当然在讲解之前,我们先来体验下声卡…

08.音频系统:第003课_Linux音频驱动程序:第003节_耳麦拔插事件调用流程分析

在前面的小节中,我们编写了一个驱动程序,模拟耳机的插拔事件,其可以上报耳机的拔插事件,并且修改了android的源代码,可以根据耳机的拔插事件,在状态栏上现实或者消除耳麦的图标,这节视频我们讲解…

08.音频系统:第004课_Android音频系统详解:第003节_所涉及文件形象讲解

上小节我们讲解了:stream type, strategy, device, output, profile, module : policy,out flag的基本概念,理解了这些概念之后,我们就比较容易去分析代码了。 那么我们需要去分析那些代码呢?这些代码都在那些文件呢&…

6.2物联网RK3399项目开发实录-驱动开发之GPIO使用(wulianjishu666)

物联网嵌入式开发源码例程: 链接:https://pan.baidu.com/s/1B3oqq5QBhN-VmTFt9CI-7A?pwd2ihg ******************************************************************************************* GPIO 使用 简介 GPIO, 全称 General-Purpose Input/…

08.音频系统:第004课_Android音频系统详解:第010节_音频数据的传递

通过前面的学习,在应用程序中,每创建一个AudioTrack,在AudioFlinger边,某个playbackThread中就会创建一个Track与其对应,Track与AudioTrack之间,通过共享内存传递音频数据,那么怎么传递这个数据…

110.firefly-overlayroot

折腾rk3399的开发板的时候,突然发现overlayroot这个词汇。 我移植一下linux5.10的内核到firefly3399开发板,结果启动之后文件系统提示只读!!! 这就让我很莫名。后来看到mount文件系统的情况,感觉也是不可…

RK3399平台开发系列讲解(调试篇)死锁检测工具lockdep

🚀返回专栏总目录 文章目录 一、常见死锁场景二、lockdep使用方法三、lockdep技术原理3.1、锁类状态3.2、检查规则沉淀、分享、成长,让自己和他人都能有所收获!😄 📢介绍死锁检测工具lockdep。 资料 一、常见死锁场景 场景1:进程重复申请同一个锁,称为AA死锁。例如…

08.音频系统:第003课_Linux音频驱动程序:第006节_DAPM的kcontrol注册过程

在上小节我们初步的讲解了DAPM的widget,route,path3个概念,并且猜测了DAPM对他们的使用过程,接下来的几个小节,我们根据代码讲解DAPM的调用过程: a,dapm的kcontrol注册过程 b,tinymi…

08.音频系统:第006课_音频系统HAL分析:003_音量键和Setting界面调节音量流程

在前面两个小节小节中,已经讲解了音量调节的最重要部分,该小节讲解一下使用音量键,或者在Setting界面调节滑动条调节音量时,其处理流程是怎么样的。 使用音量键控制音量会涉及两个系统,一个是输入系统,一个…

101.linux驱动(非ko)加载需要固件的一个小问题

1. 平台 还是rk3399(am40) 2. 内核:linux5.10 3. 文件系统: firefly ubuntu20.04 4. 需要加载的驱动 rtl8822be (pci)接口 一、错误的提示:提示这个固件rtw88/rtw8822b_fw.bin无法加载 rootfirefly:~# dmesg | gre…

RK3399平台入门到精通系列讲解(导读篇)21天挑战Linux系统开发

🚀返回总目录 文章目录 一、关于作者1、博主的联系方式2、支持二、需要具备的知识和工具1、需掌握知识点2、需了解的知识点三、通过系列博客可以学到什么1、本系列博文特色2、21天学习目标3、21天学习内容4、学习时间5、学习产出

[Ubuntu 18.04] RK3399搭建NFS服务实现共享目录

NFS(Network File System)是一种分布式文件系统协议,允许远程计算机通过网络访问存储在另一台计算机上的文件。它使得多台计算机可以共享文件,并且可以在不同计算机之间实现文件的透明访问和共享。 以下是 NFS 服务器的一些特点和介绍: 文件共享:NFS 服务器允许将存储在…

RK3399平台开发系列讲解(电源管理篇)11.11、调节器消费者接口

平台内核版本安卓版本RK3399Linux4.4Android7.1🚀返回专栏总目录 文章目录 一、调节器设备请求二、控制调节器设备2.1、调节器输出的启用和禁用2.2、电压的控制和状态2.3、限流的控制和状态2.4、运行模式的控制和状态沉淀、分享、成长,让自己和他人都能有所收获!😄 📢本…

RK3399(3)

视频IN/OUT l 摄像机接口 n 一个或两个MIPI-CSI接口 l 图像信号处理器 n 内置两个ISP(Image SensorProcessor) n 一个ISP最大输入分辨率是14M像素 n 主缩放器具有像素精度的放大和缩小,可以对4416x3312和32x16像素之间的任何分辨…

20240211请问B站自动生成的字幕怎么下载?

20240211请问B站自动生成的字幕怎么下载? 2024/2/11 17:40 缘起:最近在搞 一生一芯 项目。 https://ysyx.oscc.cc/ https://ysyx.oscc.cc/docs/ 第六期"一生一芯"课程主页 课时: 每周六15:00~17:00 B站直播 | 录播链接 在键盘按F12这个快捷键盘…

07.显示系统:第001课_显示系统框:第001课第01节_显示系统框架_framebuffer原理及改进

在该章之后的几个小节会讲解解android显示系统的框架,主要为以下3点: a.显示驱动framebuffer的原理及改进 b.多任务系统的显示:必定有一个显示管理者 c.android显示系统框架初探 首先我们先来看看显示驱动framebuffer的原理及改进 显示系统…

RK3399安装机器人系统—ROS

文章目录 一、简介: 二、安装ros 2.1 首先用putty 链接rk3399开发平台 2.2、修改/etc/NetworkManager/NetworkManager.conf 配置

08.音频系统:第006课_音频系统HAL分析:第001节_音量相关概念

该小节我们开始讲解音量调节,首先我们来回顾一下之前的知识,我们知道android系统可以支持一个或者多个声卡,一般来说,每个声卡有输出,或者输入共功能。 对于他的输出功能,在AudioFlinger中有一个线程与他对…

基于android的 rk3399 同时支持多个USB摄像头

基于android的 rk3399 同时支持多个USB摄像头 一、前文二、CameraHal_Module.h三、CameraHal_Module.cpp四、编译&烧录Image五、App验证 一、前文 Android系统默认支持2个摄像头,一个前置摄像头,一个后置摄像头 需要支持数量更多的摄像头&#xff0…

07.显示系统:第004课_SurfaceFlinger内部机制:第005节_APP申请(lock)Buffer的过程_分配buffer

该小节我们从源代码上分析,应用程序申请Buffer的调用过程,下面是一个从应用程序开始的流程图: 应用程序在调用surface->lock(&outBuffer,NULL);函数的时候,会发起Surface::dequeueBuffer()的操作,进入调用&…

08.音频系统:第006课_音频系统HAL分析:第002节_AudioFlinger层调节音量流程

该小节我们讲解一下在AudioFlinger这一层的对音量调节的代码流程,分为以下四个部分进行讲解: a. AudioFlinger对master volume, stream volume的初始化与设置 b. PlaybackThread对master volume, stream volume的初始化与设置 c. AudioTrack volume的设置…

07.显示系统:第001课_显示系统框:第001课第02节_显示系统框架_初步分析

该小节我们初步的了解一下android系统的框架,看看其有那些构成部分。我们知道一个应用程序要去操作LCD,需要把数据写入到framebuffer,如果有多个应用程序对一个framebuffer同时进行操作,那么最终屏幕的显示肯定是乱糟糟的&#xf…

05.Binder系统:第6课第2节_Binder系统_驱动情景分析_打印数据交互过

在前面面的小节中,使用了C语音编写了几个应用程序,使用binder实现了进程之间的通信,我们通过 binder_call最终调用 ioctl(bs->fd, BINDER_WRITE_READ, &bwr)实现进程之间的通信,其中的bwr参数为结构体: struct…

08.音频系统:第003课_Linux音频驱动程序:第005节_DAPM_widget_route_path

DAPM是Dynamic Audio PowerManagement的缩写,译过来就是动态音频电源管理的意思。DAPM是为了使基于linux的移动设备上的音频驱动子系统,在任何时候都工作在最小功耗状态下。 DAPM对用户空间的应用程序来说是透明的,所有与电源相关的开关都在A…

[RK-Linux] 移植Linux-5.10到RK3399(八)| 配置HYM8563支持RTC功能

文章目录 一、HYM8563二、原理图三、设备树四、调试一、HYM8563 HYM8563是一款低功耗CMOS实时时钟/日历芯片,它提供一个可编程的时钟输出,一个中断输出和一个掉电检测器,所有的地址和数据都通过I2C总线接口串行传递。最大总线速度为400Kbits/s,每次读写数据后,内嵌的字地…

RK3399平台开发系列讲解(USB篇)USB 枚举和断开过程

🚀返回专栏总目录 文章目录 一、连接与检测二、USB设备枚举三、断开过程沉淀、分享、成长,让自己和他人都能有所收获!😄 📢介绍 USB 枚举/断开过程。 一、连接与检测 二、USB设备枚举 USB设备枚举一

[RK-Linux] RK3399使用官方固件rkbin方式加载U-Boot

文章目录 一、idbloader.img1.1 下载rkbin1.2 合并二、u-boot.img2.1 编译uboot2.1.1 下载源码2.1.2 配置U-Boot2.1.2.1 配置串口波特率2.1.2.2 配置U-Boot启动倒计时2.1.2.3 开启调试信息2.1.3 编译2.1.4 U-Boot镜像2.2 生成u-boot.img

[RK-Linux] 解决RK3399 M.2 NVMe SSD根文件系统分区容量无法扩展到最大问题

延续《[RK-Linux] RK3399支持M.2 NVMe SSD启动》 在检查分区与挂载情况的时候,根文件系统分区容量是有问题的: root@buildroot:/# df -h Filesystem Size Used Avail Use% Mounted on /dev/root 692M 430M 209M 68% / devtmpfs 1.9G 8.0K 1.9G 1%…

[RK-Linux] 移植Linux-5.10到RK3399(三)| 检查eMMC与SD卡配置

这个专题主要记录把 RK Linux-5.10 移植到 ROC-RK3399-PC Pro 的过程。 文章目录 一、eMMC二、SD 卡三、两个接口的区别一、eMMC RK3399 的 eMMC 接口如图: datasheet 介绍: 实际上,连接 eMMC 存储器用的是 SDHCI 接口。SDHCI(Secure Digital Host Controller Interface)…

RK3399平台开发系列讲解(入门篇)为什么需要学习Linux驱动

🚀返回专栏总目录 文章目录 一、为什么需要学习Linux驱动二、如何学习Linux驱动开发三、Linux 驱动学习的难点四、学习资料沉淀、分享、成长,让自己和他人都能有所收获!😄 一、为什么需要学习Linux驱动 学习Linux驱动开发有以下几个重要的原因: 深入理解系统底层:学习L…

[RK-Linux] RK3399使用RK开源SPL,修改U-Boot为FIT打包方式,裁剪trust分区

文章目录 一、启动方式二、FIT打包三、RK3568相关配置参考四、RK3399支持与调试一、启动方式 RK3399平台根据前级Loader代码是否开源,目前有两套启动方式: // 前级loader闭源 BOOTROM => ddr bin => Miniloader => TRUST => U-BOOT => KERNEL // 前级loader…

RK3399平台开发系列讲解(内核入门篇)什么是函数调用栈

🚀返回专栏总目录 文章目录 一、什么是函数调用栈二、函数调用栈解析三、什么是stack overflow沉淀、分享、成长,让自己和他人都能有所收获!😄 📢在开发软件的过程中我们经常会遇到错误,如果你用 Google 搜过出错信息,那你多少应该都访问过Stack Overflow这个网站。作…

RK3399平台开发系列讲解(驱动篇)Regulator Framework

🚀返回专栏总目录 文章目录 一、Regulator驱动二、consumer接口函数三、用户空间sysfs接口沉淀、分享、成长,让自己和他人都能有所收获!😄 📢 要简单介绍下系统的Regulator Framework。 Regulator翻译为”调节器”,分为电压调节器(voltage regulator)和电流调节器(cu…

[Ubuntu 18.04] RK3399搭建SSH服务实现远程访问

SSH(Secure Shell)是一种网络协议和软件,用于安全地远程登录到计算机并进行网络服务的加密通信。它提供了加密的认证和安全的数据传输,使得在不安全的网络中进行远程管理和访问变得更加安全。 以下是 SSH 服务的一些关键特点和用途: 安全认证:SSH 使用公钥/私钥加密技术…

[RK-Linux] 从主线U-Boot移植PCIe及其PHY驱动到RK3399 U-Boot

rk3399 u-boot 并没有支持 pcie 及其 phy 驱动,但是上游代码有支持。这里通过从上游 v2024.01-rc3 分支移植这部分驱动到 rk u-boot。 通过 rk3399.dtsi 知道 pci 匹配项为 rockchip,rk3399-pcie: pcie0: pcie@f8000000 {compatible = "rockchip,rk3399-pcie";..…

109.firefly-extboot的生成脚本

内核版本: 4.4.194 在firefly的sdk 2.5.1c及以后的版本都是extboot.img(对应表中的extboot) 但是之前的并不是,而且一个boot.img,(对应表中rkboot) rkboot的生成方法可以参考解决linux5.15编…

RK3399平台开发系列讲解(入门篇)VIM的基础命令

🚀返回专栏总目录 文章目录 一、Vim 命令速查二、其他命令三、Vim模式沉淀、分享、成长,让自己和他人都能有所收获!😄 📢 本篇将介绍Vim相关命令。 一、Vim 命令速查 简单说明一下,这张图上展示了一个键盘。图中的“•”表示,单个字母不是完整的命令,必须再有进一步…

RK3399平台开发系列讲解(内核调试篇)Valgrind使用案例

🚀返回专栏总目录 文章目录 一、使用未初始化的内存案例二、内存泄露三、在内存被释放后进行读/写案例四、从已分配内存块的尾部进行读/写案例五、两次释放内存案例沉淀、分享、成长,让自己和他人都能有所收获!😄 📢Valgrind 是一个开源的内存调试和性能分析工具,用于…

RK3399芯片规格书,RK3399参考设计方案

RK3399芯片规格书,RK3399参考设计方案 较新的RK3368虽然专门针对电视盒子做了优化,但是其硬件性能相比上一代的RK3288还要孱弱,老当益壮的RK3288退休不得,与RK3368勉力维持着瑞芯微2015年的江山。进入2016年,瑞芯微Roc…

RK3399平台入门到精通系列讲解(USB篇)UDC 层 usb_gadget_probe_driver 接口分析

🚀返回总目录 文章目录 一、UDC:usb_gadget_probe_driver函数分析二、usb_gadget_driver 结构详细介绍三、usb_udc 结构详细介绍一、UDC:usb_gadget_probe_driver函数分析 UDC层的一项基本任务是向上层提供usb_gadget_probe_driver()接口函数。 上层调用者为composite.c中…

RK3399平台开发系列讲解(USB篇)BusHound 工具使用介绍

🚀返回专栏总目录 文章目录 一、BusHound简介二、BusHound的下载三、BusHound设备窗口四、BUSHound发送命令窗口沉淀、分享、成长,让自己和他人都能有所收获!😄 📢 BusHound软件是由美国perisoft公司研制的一种专用于PC机各种总线数据包监视和控制的开发工具软件,其名…

RK3399(1)

1. 概述 RK3399是低功耗、高性能处理器,用于计算、个人移动互联网设备和其它智能设备应用。基于Big.Little架构,它集成了双核Cortex-A72和四核Cortex-A53,具有独立的NEON协处理器。 许多内置的功能强大的硬件引擎为高端应用提供了优化的性…

Buildroot for RK3399/zh

1 Buildroot简介 Buildroot是Linux平台上一个构建嵌入式Linux系统的框架,由Makefile脚本和Kconfig配置文件构成,旨在简化系统制作步骤,可实现一站式生成可烧写的系统固件,最终的固件包含boot-loader、kernel和rootfs,…

RK3399(2)

视频CODEC l 视频解码器 n 内置MMU n 实时视频解码器包括:MPEG-1,MPEG-2,MPEG-4,H.263,H.264,H.265,VC-1,VP9,VP8,MVC n H.264/AVC,Base/…

4.2 RK3399项目开发实录-案例开发之OpenCV 编译和安装(wulianjishu666)

★嵌入式ARM开发全套案例代码:https://pan.baidu.com/s/1ksCQN__jD8ZrJhw8sWzhwQ?pwdvvfz 3.3. OpenCV 编译和安装 不少客户遇到OpenCV的问题多集中在如何获取mipi摄像头的数据。因为OpenCV使用的V4l2协议和Rockchip编写的mipi摄像头驱动协议不同,所以…

RK3399平台开发系列讲解(基础篇)ADC 使用方法

🚀返回专栏总目录 文章目录 一、ADC 的 DTS 配置二、ADC 驱动说明2.1、获取 AD 通道2.2、读取 AD 采集到的原始数据2.3、计算采集到的电压三、接口说明沉淀、分享、成长,让自己和他人都能有所收获!😄 📢内核采用工业 I/O 子系统来控制 ADC,该子系统主要为 AD 转换或者…

【系统移植】 移植主线U-Boot(v2024.01-rc3)到RK3399

一、编译环境 PC 机用的是 Ubuntu 18.04,执行以下命令安装必要工具: sudo apt-get install repo git ssh make gcc libssl-dev liblz4-tool \ expect g++ patchelf chrpath gawk texinfo chrpath diffstat binfmt-support \ qemu-user-static live-build bison flex fakero…

RK3399平台开发系列讲解(中断篇)掌握信号处理

🚀返回专栏总目录 文章目录 一、信号的基本概念二、信号处理流程三、如何通过 API 注册一个信号处理函数四、可重入与异步信号安全3.1、可重入函数3.2、异步信号安全沉淀、分享、成长,让自己和他人都能有所收获!😄 📢信号在操作系统中有悠久的历史,信号的概念和使用方…

RK3399平台开发系列讲解(高速设备驱动篇)6.9、SD卡读写流程

🚀返回总目录 文章目录 一、SD卡相关命令介绍1.1、读操作1.2、写操作一、SD卡相关命令介绍 SD卡的读写流程中,需要使用一些特定的命令(CMD)与SD卡进行通信。以下是一些常见的SD卡命令: CMD0(GO_IDLE_STATE): 这是初始化命令,用于将SD卡置于空闲状态。CMD8(SEND_IF_…

4.1 RK3399项目开发实录-案例开发之MIPI 摄像头开发(wulianjishu666)

嵌入式从零到项目开发全套例程资料 链接:https://pan.baidu.com/s/1ksCQN__jD8ZrJhw8sWzhwQ?pwdvvfz 3.2. MIPI 摄像头 带有 MIPI CSI 接口的 RK3399 板子都添加了双 MIPI 摄像头 OV13850 的支持,应用中也添加了摄像头的例子。下面介绍一下相关配置。…

RK3399平台开发系列讲解(内核调试篇)USB摄像头快速测试

🚀返回专栏总目录 文章目录 一、检测设备二、安装必要的库三、 mjpeg-stream 安装四、实时预览沉淀、分享、成长,让自己和他人都能有所收获!😄 📢 本篇介绍如何快速测试 USB 摄像头。 一、检测设备 将 USB 摄像头插上,查看是否找到设备,输入指令:v4l2-ctl --list-d…

08.音频系统:第006课_音频系统HAL分析:第002节_HAL之调用流程源码分析

在上小节中,分析了android音频系统中,HAL代码的框架,该小节我们根据源代码查看一下流程,加深一下理解。在分析源代码之前,我们先俩看看HAL在整个音频系统中,他处于什么位置,下面是一个框图&…

RK3399平台开发系列讲解(时间篇)RTC和用户空间

🚀返回专栏总目录 文章目录 一、sysfs接口二、hwclock工具沉淀、分享、成长,让自己和他人都能有所收获!😄 📢在Linux系统上,从用户空间正确管理RTC需要关注两个内核选项。这两个选项是CONFIG_RTC_HCTOSYS和CONFIG_RTC_HCTOSYS_DEVICE。 要使用CONFIG_RTC_HCTOSYS应在内…

08.音频系统:第006课_音频系统HAL分析:第001节_HAL之框架

该小节开始,分析音频系统HAL分析,在前面有一章节:第004课_Android音频系统详解。详细的分析了Android音频系统的源码,但是那些都是系统集成的,一般来说,我们在移植的时候,都不需要去理会的&…

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

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

RK3399平台开发系列讲解(基础篇)POSIX 定时器

🚀返回专栏总目录 文章目录 一、clockid二、sigevent三、timerid四、flags五、 value & old_value六、POSIX 定时器的优势沉淀、分享、成长,让自己和他人都能有所收获!😄 📢为了克服传统定时器的局限性,POSIX 标准组织设计了新的计时器接口和规范,使它们能提供更…

RK3399平台开发系列讲解(外设篇)Camera OV13850配置过程

🚀返回专栏总目录 文章目录 一、DTS 配置二、驱动说明三、配置原理四、cam_board.xml沉淀、分享、成长,让自己和他人都能有所收获!😄 📢我们以 OV13850/OV5640 摄像头为例,讲解在该开发板上的配置过程。 一、DTS 配置 isp0: isp@ff910000 {…status = "okay&quo…

RK3399平台开发系列讲解(内核入门篇)ConfigFS 的核心数据结构

🚀返回专栏总目录 文章目录 一、关键数据结构二、config_item 的结构体三、属性和方法沉淀、分享、成长,让自己和他人都能有所收获!😄 📢虚拟文件系统 ConfigFS 是一个特殊的文件系统,旨在提供一种动态配置 Linux 内核和设备的机制。 一、关键数据结构 ConfigFS 的核…

3.2 RK3399项目开发实录-初次使用的环境搭建(物联技术666)

通过百度网盘分享的文件:嵌入式物联网单片… 链接:https://pan.baidu.com/s/1Zi9hj41p_dSskPOhIUnu9Q?pwd8qo1 提取码:8qo1 复制这段内容打开「百度网盘APP 即可获取」 1. 用户和密码 1.1. Ubuntu Desktop 系统 Ubuntu Desktop 系统开机启动后,自动登录…

rk3399 buildroot ubuntu20版本编译遇到问题

一、编译uboot遇到问题 /usr/include/libfdt.h:258:1: error: redefinition of fdt_set_version 258 | fdt_set_hdr_(version); | ^~~~~~~~~~~~ In file included from tools/fdt_host.h:11, from tools/imagetool.h:22, from tools…

基于RK3399+Linux QT地面测试台多参数记录仪测试平台软件设计(二)

rk3399 是由本土芯片厂商瑞芯微(Rockchip)研发的高性能、低功耗“中国芯”。在 2016 年 4 月,rk3399 首次在香港举行的电子展上亮相。芯片使用六核大 LITTLE 处理器: 包括四核的 Cortex-A53 和双核的 Cortex-A72,主频可…

RK3399平台开发系列讲解(网络篇)Linux 发送网络包流程

🚀返回专栏总目录 文章目录 一、发送网络包流程图二、发送网络包步骤沉淀、分享、成长,让自己和他人都能有所收获!😄 📢本篇将详细介绍Linux网络包发包流程。 一、发送网络包流程图 二、发送网络包步骤 VFS 层:write 系统调用找到 struct file,根据里面的 file_oper…

[RK-Linux] 移植Linux-5.10到RK3399(一)| 搭建系统并让系统跑起来

这个专题主要记录把 RK Linux-5.10 移植到 ROC-RK3399-PC Pro 的过程。 文章目录 一、u-boot 移植二、内核移植三、文件系统移植四、固件编译与打包五、移植问题处理一、u-boot 移植 首先进入 rk3399 板级配置文件目录 device/rockchip/rk3399,可以看到有一个 BoardConfig-rk…

RK3399平台开发系列讲解(入门篇)Linux内核常见的规则

🚀返回专栏总目录 文章目录 一、编码风格二、内核结构分配和初始化三、面向对象的思想沉淀、分享、成长,让自己和他人都能有所收获!😄 📢 本篇将介绍在内核代码的演化过程中应该遵守标准规则 一、编码风格 参考一下内核编码风格手册,它位于内核源代码树的 Documentat…

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

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

RK3399平台开发系列讲解(内核调试篇)IO 数据工具:iostat和iotop

🚀返回专栏总目录 文章目录 一、iostat 命令二、/proc/diskstats 文件三、iotop 命令沉淀、分享、成长,让自己和他人都能有所收获!😄 📢 在 Linux 系统上,iostat 和 iotop 这两个 IO 数据工具非常常用。它们都是性能分析领域中不可缺少的工具性软件。 一、iostat 命令…

[RK-Linux] RK3399支持M.2 NVMe SSD启动

延续《[RK-Linux] 从主线U-Boot移植PCIe及其PHY驱动到RK3399 U-Boot》 启动流程: maskrom -> loader(从 eMMC 存储器加载) -> u-boot(从 eMMC 存储器加载)-> kernel (从 M.2 NVMe SSD 加载)-> rootfs (从 M.2 NVMe SSD 挂载)配置从 M.2 NVMe SSD 启动: …

[Firefly-Linux] RK3399点亮eDP液晶屏并支持触摸

连接方法 EDP 液晶屏模组与主控的连接分为四部分: (1)屏幕背光 (2)EDP 信号 (3)电压跳线 (4)TP 触摸 屏幕背光 屏幕背光的原理图如下: BL_EN 是背光使能引脚,连接到主控的 GPIO1_A1 端口LCD_BL_PWM0 是 PWM 调光引脚,使用主控的 PWM0 端口EDP 信号 EDP 信号的…

[系统移植] 移植主线Buildroot(2023.02-rc3)到RK3399

文章目录 一、编译环境二、Git环境三、克隆源代码四、编译源代码五、烧录固件六、系统启动一、编译环境 PC 机用的是 Ubuntu 18.04,执行以下命令安装必要工具: sudo apt install gcc build-essential bison flex gettext tcl sharutils libncurses-dev zlib1g-dev \ exube…

[RK-Linux] 移植Linux-5.10到RK3399(二)| 检查系统电源域

检查电源域(Power Domain)是确保供电电源的稳定和正确,也能避免防止出现莫名其妙的 BUG,造成问题难以排查。 具体作用大致如下: 供电稳定性:检查电源域可以确保芯片和各个功能模块得到稳定的电源供应。稳定的供电对于芯片的- 常运行和各个功能模块的工作至关重要。功耗管…

RK3399平台开发系列讲解(内核调试篇)spidev_test工具使用

🚀返回专栏总目录 文章目录 一、环境二、执行测试三、回环测试四、字节发送测试五、32位数据发送测试沉淀、分享、成长,让自己和他人都能有所收获!😄 📢 在 Linux 系统上,“spidev_test” 是一个用于测试和配置 SPI(Serial Peripheral Interface)设备的命令行工具。…

RK3399 -- i2s1 声卡注册配置

说明:本文适用于 RK3399 linux 4.4 内核系列SDK。硬件上,音频外部 codec 芯片 i2s 引脚与 RK3399 i2s1连接。软件上需要加下述patch(以 rt5640 为例): DTS配置 / {rt5640-sound {status "okay"; compatib…

RK系列SDK -- dummy codec虚拟声卡注册

注:适用于基于4.4内核版本开发的RK系列SDK 虚拟声卡的注册主要应用于硬解码芯片的使用,硬件设计上主控I2S直接接到该类芯片,硬解码芯片能够将数字信号直接转换成模拟信号输出。同时,这类芯片需要主控提供mclk、bclk,那…

【调试】netconsole的使用

开发环境 客户端 开发板:FireFly-RK3399 Linux 4.4 IP:192.168.137.110 服务端 VMware Workstation Pro16,ubuntu 18.04 IP:192.168.137.100 MAC:00:0c:29:c1:9c:ed netconsole简介 netconsole模块可以让printk信息(输出到控制台的…

08.音频系统:第008课_项目实战2_多APP同时录音:第002节_录音框架及代码流程

在上小节中,简单的使用C编写了一个录音程序,并且尝试去运行两个程序去录音,然后发现第二个程序不能录音。不能运行。如果我们想去解决这个问题,我们需要深入的去了解一下android系统中录音的框架,看一下这个框架是否合…

05.Binder系统:第8课第2节_Binder系统_JAVA实现_hello服务_编程

该小节我们将使用java实现一个hello服务,曾经我们讲解硬件访问服务的时候,实现一个LED服务,那个时候我们只知道照葫芦画瓢,并不知道其中的原理,该小节我们写出hello服务之后,相信你对他的原理就比较了解了。…

07.显示系统:第005课_Vsync机制:第001节_黄油计划_三个方法改进显示系统

在看高清电影的时候,需要帧率达到60fps(一秒显示60幅图画,即16毫秒显示一张图片),我们看起来才会比较舒服,流畅。在android4.1之前,都是通过2个buf进行显示的,或者更加多个。前面已经…

07.显示系统:第006节_基础知识_Region定义及操作

上小节我们讲解了surfaceflinger对Vsync信号的处理,现在我们来回顾一下,在android系统中存在一个或者多个应用程序,每个程序有一个或者多个Layer。surfaceflinger在对Vsync信号进行处理的时候,会对每一个Layer更新他的数据&#x…

RK3399平台开发系列讲解(入门篇)内核模块详细加载/卸载过程

🚀返回专栏总目录 文章目录 一、 ko文件的文件格式二、内核模块加载过程三、内核模块卸载过程沉淀、分享、成长,让自己和他人都能有所收获!😄 📢 本篇将介绍内核模块详细加载/卸载过程。 一、 ko文件的文件格式 “KO” 文件通常是指 Linux 内核模块文件,这些文件包含…

[RK-Linux] 移植Linux-5.10到RK3399(六)| 检查GMAC(RTL8211F)配置使能千兆以太网

ROC-RK3399-PC Pro 使用 RTL8211F PHY 芯片作为以太网收发器。 RTL8211F是一种高性能的千兆以太网物理层收发器(PHY),广泛用于台式机、笔记本电脑、网络交换机等设备中。主要特点: 采用低功耗28nm CMOS技术,功耗低。支持千兆速率(10/100/1000Mbps)。支持全双工和半双工…

RK3399平台开发系列讲解(存储篇)Linux 存储系统的 I/O 栈

平台内核版本安卓版本RK3399Linux4.4Android7.1🚀返回专栏总目录 文章目录 一、Linux 存储系统全景二、Linux 存储系统的缓存沉淀、分享、成长,让自己和他人都能有所收获!😄 📢本篇将介绍 Linux 存储系统的 I/O 原理。 一、Linux 存储系统全景 我们可以把 Linux 存储系…

RK3399平台开发系列讲解(内存篇)free 命令查看内存占用情况介绍

🚀返回专栏总目录 文章目录 一、free的使用二、free的内容📢free 指令会显示内存的使用情况,包括实体内存,虚拟的交换文件内存,共享内存区段,以及系统核心使用的缓冲区等。 一、free的使用 -b  以 Byte 为单位显示内存使用情况。-k  以 KB 为单位显示内存使用情况。…

105.am40刷机(linux)折腾记1-前期的准备工作1

前段时间在某鱼上逛的时候,发现一款3399的盒子只要150大洋,内心就开始澎拜,一激动就下手了3台,花了450大洋(现在想想,心都碎了一地)。 然后自己又来来回回折腾了几天,目前能跑上fire…

【RK3399】2.制作ubuntu20.04 roomfs

firefly自带的文件系统,由于缺少一些基本功能模块,因此,我们可以自己手动制作一个ubuntu20.04的文件系统。 下载Ubuntu根文件系统 http://cdimage.ubuntu.com/ubuntu-base/releases/ 安装虚拟机 apt-get install qemu-user-static解压 m…