自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(355)
  • 收藏
  • 关注

原创 RK3568平台 驱动实现IIC设备读取十六位寄存器状态

要求读取GVS2715这个IIC设置寄存器的值来获取版本号,GVS2715这个芯片是十六位寄存器。当使用i2ctool工具读取十六位寄存器的时候,发现无法读取出来,读取的都是XXXX。

2024-04-15 00:28:20 138

原创 Android 音频系统

当AudioFlinger/AudioPolicyService初始化时,它们会去寻找系统中最匹配的实现(这些实现驻留在以audio.primary.,audio.a2dp.为名的各种库中)来填充这些“壳”。根据产品的不同,音频设备存在很大差异,在Android的音频架构中,这些问题都是由HAL层的audio.primary等等库来解决的,而不需要大规模地修改上层实现。Codec用于实现平台无关的功能,如寄存器读写接口,音频接口,各widgets的控制接口和DAPM的实现等。

2024-04-13 21:41:12 650

原创 RK3568平台 SPI设备驱动

SPI是许多不同设备使用的常见通信协议。例如,SD卡模块、RFID读卡器模块和2.4GHz无线发射机/接收器均使用SPI与微控制器进行通信。SPI是串行外设接口(Serial Peripheral Interface)的缩写,是一种高速的,全双工,同步的通信总线,并且在芯片的管脚上只占用四根线,节约了芯片的管脚,同时为PCB 的布局上节省空间,提供方便,正是出于这种简单易用的特性,越来越多的芯片集成了这种通信协议。SPI的一个独特好处是数据可以不间断地传输。任何数量的位都可以在连续流中发送或接收。

2024-04-13 15:15:53 804

原创 Android 编译C程序APP

编译后会生成gvs2715app这个可执行程序,将gvs2715app利用adb push推到板子里面,chmod 777加权限执行: ./gvs2715app.在android的底层开发中,经常需要用C程序来测试底层驱动程序,可以利用amdroid.mk来编译c语言。在安卓的目录下创建Android.mk用来包含目录:cs5263_user_ioctrl。

2024-04-10 22:50:45 213

原创 嵌入式Qt QGridLayout网格布局管理器

/以行为单位 设置比例系数。//以列为单位 设置比例系数。

2024-04-06 20:01:05 237

原创 RK3568平台 PCIE基础知识

先认识CPU是如何访问内存进而引出CPU是如何访问PCIE内存的。CPU发出addr,可以用来方位EMMC控制器。但是CPU发出的addr,不能直接到达EMMC Flash。想访问EMMC Flash,必须用过EMMC控制器,编写EMMC控制器驱动程序。PCI/PCIe设备上有配置空间(配置寄存器),用来表明自己"需要多大的地址空间"。主机上的程序访问PCI/PCIe设备,读出配置信息,分配地址空间:注意,分配的是PCI/PCIe地址空间。

2024-04-06 16:24:13 897

原创 RK3568平台 Uart驱动框架

在Linux kernel中,tty驱动不像于spi,iic等那么架构简单,它是一个庞大的系统,它的框架大体如下图一。我们作为普通的驱动开发移植人员,不会从零写tty驱动,一般都是厂家根据现有的tty驱动和自家芯片修改,拿到板子按照厂家的配置,串口应该使能直接使用的。但是开发的过程中也有可能需要用到串口,一般会修改serial驱动,这样我们不会动tty_core层。

2024-04-05 22:01:54 801

原创 RK3568平台 USB设备驱动

在介绍设备端驱动前,我们先来看看 Linux USB子系统。这里的子系统是相对于整个Linux kernel 来说的,而非单一设备。从整体概括了USB主机端和设备端的通信框架。Linux kernel 中早已集成了较为完善的USB协议栈,由于其规模庞大,包含多个类别的设备驱动,所以Linux系统中的USB协议栈也被称为USB子系统。主机端,简化抽象三层:各种类设备驱动:mass sotrage, CDC, HID等USB 设备驱动:USB 核心处理。

2024-03-31 15:47:52 515

原创 嵌入式Qt 布局管理器比例系数

1 默认情况下以等比例的方式跟新组件的大小。2 可以自定义组件大小更新时的比例系数。

2024-03-31 14:24:59 133

原创 嵌入式Qt 布局管理器QBoxLayout

使用setSizePolicy,那么 TestBtn1按钮 就会随着父组件被拉大 而变大,水平和垂直方向都会匹配父窗口的大小,随之变大变小。setMinimumSize(160, 30)会限定TestBtn1按钮的大小最小在(160, 30)。

2024-03-31 01:01:58 364

原创 Android Native Crash奔溃

从Android系统全局来说,Crash 通常分为 App/Framework Crash,Native Crash,以及 Kernel Crash。对于 App 层或者 Framework 层的 Crash(即 Java 层面 Crash),那么往往是通过抛出未捕获异常而导致的 Crash。至于 Kernel Crash,很多情况是发生 Kernel panic,对于内核崩溃往往是驱动或者硬件出现故障。

2024-03-25 23:14:00 646

原创 RK3568平台 网络唤醒

网络唤醒(Wake-on-LAN,WOL)是一种计算机局域网唤醒技术,使局域网内处于关机或休眠状态的计算机,将状态转换成引导(Boot Loader)或运行状态。无线唤醒(Wake-on-Wireless-LAN,WoWLAN)作为 WOL 的补充技术,使用无线网卡去唤醒计算机。网络唤醒在一般的局域网环境里使用有限广播地址(255.255.255.255)即可,由于路由器都不转发目的地址为有限广播地址的数据报,因此在复杂网络情况下通常使用子网定向广播地址。

2024-03-23 17:32:59 485 3

原创 RK3568平台 iperf3测试网络性能

iperf是一款开源的网络性能测试工具,主要用于测量TCP和UDP带宽性能。它可以在不同的操作系统上运行,包括Windows、Linux、macOS等。iperf具有简单易用、功能强大、高度可配置等特点,广泛应用于网络性能测试、网络故障诊断和网络优化等领域。这款软件开源、免费、代码都是公布的,而且不用安装,即可以作为服务端又可以作为客户端,是局域网内网络性能测试好工具,不过需要在命令行下运行,好在参数不复杂,比较容易上手。在iperf的主页我们能够看到它有很多版本,对应不同的系统有不同的版本可用。

2024-03-23 15:10:40 1013

原创 RK3568平台 多点触摸电容屏

对于所有的input设备,报告input事件时候都分这么几部分,首先在probe函数中设置设备发送的事件类型、按键类型,设置设备一些属性信息。然后在发送事件时候要根据probe的设置来发送事件,否则就会被判为无效忽略掉。input子系统事件分为type、code、value三部分。type表示事件的类型,按键、绝对坐标等。code表示键值、触摸坐标等。value表示数值,如按键按下为1,抬起为0;对于触摸屏x、y坐标则为对应的数值。输入子系统事件类型(type)中,事件类型含义如下表。

2024-03-18 23:46:50 376

原创 Android input输入子系统

Input系统是Android系统中负责处理用户输入操作的核心组件,它负责从各种输入设备(如屏幕、键盘、鼠标等)获取原始的输入事件(如按键、触摸、滑动等),并将其转换为Android应用可以理解和消费的KeyEvent或MotionEvent对象。Input系统对于提供流畅、灵敏和一致的用户交互体验至关重要,它需要在不同的设备、场景和应用中保证输入事件的正确性、及时性和安全性。

2024-03-16 18:24:05 423

原创 Android Button点击事件

【代码】Android Button点击事件。

2024-03-14 23:35:11 568

原创 RK3568平台 UART基础知识

通用异步收发传输器(Universal Asynchronous Receiver/Transmitter),简称串口。①调试:移植u-boot、内核、应用程序时,主要使用串口查看打印信息②外接各种模块。

2024-03-10 23:49:11 481

原创 嵌入式Qt 选择字体对话框QFontDialog-进度对话框 QProgressDialog-打印对话框QPrintDialog

【代码】嵌入式Qt 选择字体对话框QFontDialog-进度对话框 QProgressDialog-打印对话框QPrintDialog。

2024-03-10 21:43:22 420

原创 嵌入式Qt 标准对话框 - 颜色对话框QColorDialog-输入对话框QInputDialog

【代码】嵌入式Qt 标准对话框 - 颜色对话框QColorDialog-输入对话框QInputDialog。

2024-03-10 16:50:12 357

原创 嵌入式Qt 标准对话框 -消息对话框QMessageBox-文件对话框QFileDialog

【代码】嵌入式Qt 标准对话框 -消息对话框QMessageBox-文件对话框QFileDialog。

2024-03-10 15:35:02 388

原创 嵌入式Qt 制作一个登录对话框

【代码】嵌入式Qt 制作一个登录对话框。

2024-03-10 00:30:26 389

原创 RK3568平台 USB数据包的收发格式

>Host想写数据,它发出数据后,设备正确接收了,就回复ACK包。->Host想发出数据:前面发出OUT令牌包后,现在发出数据包。-> 发出OUT令牌包:表示想写数据,里面含有设备地址。->Host想读数据:前面发出IN令牌包后,现在读取数据包。->Host想读数据,设备可能未就绪,就会回应NAK包。-> 发出IN令牌包:表示想读数据,里面含有设备地址。->如何表示数据方向(读、还是写)

2024-03-07 22:17:46 628

原创 RK3568平台 USB基础知识

现象:把USB设备比如Android手机接到PC答1:是USB控制器,是USB控制器内嵌的root hub.答2. windows里已经有了USB的总线驱动程序,接入USB设备后,是"总线驱动程序"知道你是"android phone"提示你安装的是"设备驱动程序"。USB总线驱动程序负责:识别USB设备, 给USB设备找到对应的驱动程序。答3. PC的USB口内部,D-和D+接有15K的下拉电阻,未接USB设备时为低电平USB设备的USB口内部,D-或D+接有1.5K的上拉电阻;

2024-03-04 23:56:39 569

原创 Android m/mm/mmm/make编译模块

Android编译环境初始化完成后,我们就可以用m/mm/mmm/make命令编译源代码了。lunch命令其实是定义在build/envsetup.sh文件中的函数lunch提供的。与lunch命令一样,m、mm和mmm命令也分别是由定义在build/envsetup.sh文件中的函数m、mm和mmm提供的,而这三个函数又都是通过make命令来对源代码进行编译的。

2024-03-04 22:24:57 1237

原创 Android logcat系统

android log系统:logcat介绍 :logcat是android中的一个命令行工具,可以用于得到程序的log信息.

2024-03-04 21:19:36 597

原创 嵌入式Qt 对话框及其类型 QDialog

对话框是与用户进行简短交互的顶层窗口。QDialog是Qt中所有对话框窗口的基类。QDialog继承与QWidfet是一种容器类型的组件。QDialog的意义:QDialog作为一种专业的交互窗口而存在。QDialog不能作为子部部件嵌入其他容器中。QDialog是定制了窗口式样的特殊的QWidget。

2024-03-03 18:40:42 603

原创 Android 显示系统框架

FrameBuffer中文译名为帧缓冲驱动,它是出现在2.2.xx内核中的一种驱动程序接口。主设备号为29,次设备号递增。Linux抽象出FrameBuffer这个设备来供用户态进程实现直接写屏。FrameBuffer机制模仿显卡的功能,将显卡硬件结构抽象掉,可以通过FrameBuffer的读写直接对显存进行操作。用户可以将FrameBuffer看成是显示内存的一个映像,将其映射到进程地址空间之后,就可以直接进行读写操作,而写操作可以立即反应在屏幕上。这种操作是抽象的,统一的。

2024-03-03 01:10:35 1310

原创 Android java基础_反射

Reflection一般用来解决Java 程序运行期间,对某个实例对象一无所知的情况下,如何调用该对象内部的方法问题。反射机制允许 Java 程序在运行时调用Reflection API取得任何类的内部信息(比如成员变量、构造器、成员方法等),并能操作类的实例对象的属性以及方法。

2024-03-02 20:41:35 522

原创 RK3568平台 EXPORT_SYMBOL的作用

1.在一个模块中使用 EXPORT_SYMBOL(name)。name 表示函数或者变量等符号,它是对全部内核代码公开的,因此在您的内核模块中可以直接调用 name,即使用 EXPORT_SYMBOL 可以将一个函数以符号的方式导出给其他模块使用。2.EXPORT_SYMBOL 的符号,是把这些符号和对应的地址保存起来,在内核运行的过程中,可以找到这些符号对应的地址。而模块在加载过程中,其本质就是能动态连接到内核。

2024-02-29 23:15:57 356

原创 RK3568平台 RTC时间框架

RTC()是一种用于计时的模块,可以是再soc内部,也可以是外部模块。对于soc内部的RTC,只需要读取寄存器即可,对于外部模块的RTC,一般需要使用到I2C接口进行读取。至于如何供电,都是可以在主电源断开后使用纽扣电源辅助供电,达到设备断电仍然可以计时的效果。对于soc内部的RTC,需要额外的晶振,而外部模块的RTC不需要。在linux内核里,rtc是一个字符设备,内核实现了一个通用的字符设备层,提供给应用层系统调用,给底下的RTC硬件驱动层提供注册接口。

2024-02-27 23:11:25 1726

原创 RK3568平台 linux内核延时机制

内核中涉及的延时主要有两种实现方式:忙等待或者睡眠等待。前者阻塞程序,在延时时间到达前一直占用CPU,而后者是将进程挂起(置进程于睡眠状态并释放CPU资源)。所以,前者一般用在延时时间在毫秒以内的精确延时,后者用于延时时间在毫秒以上的长延时。为了充分利用 CPU 资源,使系统有更好的吞吐性能,在对延迟时间的要求并不是很精确的情况下,睡眠等待通常是值得推荐的。

2024-02-27 22:17:07 721

原创 Android java基础_泛型

Java 泛型(Generic)是 Java 5 中引入的一种特性,它允许类、接口和方法在定义时使用一个或多个类型参数,这些类型参数在调用时会被实际类型替换,从而增强了代码的重用性和类型安全性。通过使用泛型,我们可以编写出更加通用的代码,同时也可以减少代码中的强制类型转换操作,提高代码的可读性和可维护性。在 Java 泛型中,我们可以使用以下符号来定义泛型::表示定义一个类型参数 T,可以是任何标识符,通常用大写字母表示,例如 List。

2024-02-26 23:09:12 523

原创 Android java基础_异常

在Java中,异常(Exception)是指程序执行过程中可能出现的不正常情况或错误。它是一个事件,它会干扰程序的正常执行流程,并可能导致程序出现错误或崩溃。异常在Java中是以对象的形式表示的,这些对象是从java.lang.Throwable类或其子类派生而来。Throwable是异常类层次结构的根类,它有两个主要的子类:java.lang.Exception和java.lang.Error。Exception(异常):java.lang.Exception是表示可检查异常的基类。

2024-02-26 22:22:05 603

原创 RK3568平台 阻塞IO和非阻塞IO

IO 模型根据实现的功能可以划分为为阻塞 IO、非阻塞 IO、信号驱动IO,IO多路复用和异步 IO。根据等待 IO 的执行结果进行划分,前四个 IO 模型又被称为同步IO.同步IO与异步IO:以现实生活去餐馆吃饭为例,根据菜单进行点餐之后,这时会存在两个选择,第一个选择是在餐馆等待饭菜制作完毕,这就是同步 IO 的具体表现。第二个选择是,离开餐馆去做其他的事情,工作人员会在饭菜制作完成之后提醒你回餐馆取餐,这就是异步IO的具体表现。

2024-02-25 20:39:14 318

原创 嵌入式Qt 实现用户界面与业务逻辑分离

【代码】嵌入式Qt 实现用户界面与业务逻辑分离。

2024-02-25 19:21:52 949

原创 Android java中内部类的使用

实验1:成员内部类特点如下:1.内部类可以直接访问外部类的所有成员(成员变量和成员方法),包括private和static所修饰的。但是外部类不能直接访问内部类成员,需要通过预先创建的内部类对象去访问。2.成员内部类可以使用权限修饰符(private、default、protected、public)任意进行修饰。3.成员内部类是默认包含了一个指向外部类对象的引用。要创建成员内部类对象,必须先创建一个外部类对象。

2024-02-25 14:18:58 617

原创 Android java中包的使用

为了更好的实现项目中类的管理,提供包的概念。package语句作为Java源文件的第一条语句,指明该文件中定义的类所在的包。(若缺省该语句,则指定为无名包)。

2024-02-25 00:10:11 962

原创 Android 广播的基本概念

Broadcast是安卓四大组件之一。安卓为了方便进行系统级别的消息通知,引入了一套广播消息机制。打个比方,记得原来在上课的时候,每个班级的教室里都会装有一个喇叭,这些喇叭都是接入到学校的广播室的,一旦有什么重要通知,如上课铃下课铃,学校就会播放一条广播来告知全校的师生。这是一个非常形象容易理解的句子,很好的解释了Broadcast大概的意思,不过,Android中的广播机制更加灵活。为什么会说Android中的广播机制更加灵活呢?

2024-02-23 00:02:28 604

原创 嵌入式Qt 计算器核心算法_3

【代码】嵌入式Qt 计算器核心算法_3。

2024-02-22 21:10:48 390

原创 嵌入式Qt 计算器核心算法_2

中缀表达式是最常用的算术表达式形式——运算符在运算数中间。但运算时。​后缀表达式是计算机容易运算的表达式,运算符在运算数后面,从左到右进行运算,,运算呈。

2024-02-21 23:33:29 416

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除