自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Android Binder机制

Binder是什么?Android系统中,涉及到多进程间的通信底层都是依赖于Binder IPC机制。例如当进程A中的Activity要向进程B中的Service通信,这便需要依赖于Binder IPC。不仅于此,整个Android系统架构中,大量采用了Binder机制作为IPC(进程间通信,Interprocess Communication)方案。也存在部分其他的IPC方式,如管道、SystemV、Socket等。

2024-05-05 21:37:24 301 1

原创 RK3568平台(基础篇)linux错误码

linux应用程序开发过程中,经常会遇到一些错误信息的返回,存在的可能性有,参数有误、非法访问、系统资源限制、设备/文件不存在、访问权限限制等等。对于这类错误,可以通过perror函数输出具体描述,或者通过strerror函数,将错误码转换为具体描述字符。linux函数调用失败时,错误码存放于一个全局变量errno中。

2024-05-05 15:58:03 240

原创 Android selinux权限

SELinux 是由美国NSA(国安局)和 SCC 开发的 Linux的一个扩张强制访问控制安全模块。原先是在Fluke上开发的,2000年以 GNU GPL 发布。从 fedora core 2开始, 2.6内核的版本都支持SELinux。在 SELinux 出现之前,Linux 上的使用的安全模型是 DAC( Discretionary Access Control 自主访问控制)。DAC 的核心思想很简单:进程理论上所拥有的权限与执行它的用户的权限相同。

2024-05-05 15:14:28 937

原创 Git的下载与安装

官网下载地址:选择版本时需要先确认电脑是多少位操作系统。桌面右键点击“此电脑”,点击“属性”。可以看到当前电脑是windows10 64系统系统,所以我需要下载Git 64bit版本(如果是32位系统要下载32bit版本)。安装点击下载完成的Git-x.xx.x-x-bit.exe文件。这个界面是使用许可声明,点击“Next”进入下图界面询问是否确认安装到你设置的那个路径,没有问题的话,点击“是”。

2024-05-03 14:06:02 791

原创 RK3568平台(时间篇)看门狗

在产品化的嵌入式系统中,为了使系统在异常情况下能自动复位,一般都需要引入看门狗。看门狗其实就是一个可以在一定时间内被复位的计数器。当看门狗启动后,计数器开始自动计数,经过一定时间,如果没有被复位,计数器溢出就会对CPU产生一个复位信号使系统重启(俗称“被狗咬”)。系统正常运行时,需要在看门狗允许的时间间隔内对看门狗计数器清零(俗称“喂狗”),不让复位信号产生。如果系统不出问题,程序保证按时“喂狗”,一旦程序跑飞,没有“喂狗”,系统“被咬”复位。

2024-05-02 21:47:27 1120

原创 RK3568平台(电源篇)RK809电源管理

I2C 地址 7 位从机地址:0x20。PMIC 有 3 种工作模式:1. PMIC normal 模式 系统正常运行时 PMIC 处于 normal 模式,此时 pmic_sleep 为低电平。2. PMIC sleep 模式 系统休眠时需要待机功耗尽量低,PMIC 会切到 sleep 模式减低自身功耗,这时候一般会降低某些 路的输出电压,或者直接关闭输出,这可以根据实际产品需求进行配置。

2024-05-02 19:09:46 1016

原创 Android 恢复出厂设置流程

1、应用可以通过发送 android.intent.action.FACTORY_RESET 广播,来启用原生的恢复出场设置功能。当然需要申请权限(android:permission=“android.permission.MASTER_CLEAR”)2、系统中的 /android/frameworks/base/core/res/AndroidManifest.xml 中定义类广播的接收器为 MasterClearReceiver。

2024-05-02 00:09:18 810

原创 Android 系统升级流程分析

Android支持Recovery模式。在某些操作之后,系统会自动重启并进入到Recovery模式,用户按组合键开机(HOME+POWER),也可进入Recovery模式。该模式提供如下功能:1、擦除用户数据恢复系统到出厂模式,即擦除用户数据和缓存数据。2、系统升级系统升级的概念比较广,包括系统文件的升级、恢复损害的系统数据、的升级,以及应用软件的维护,甚至影音文件的下载。系统升级需要使用特定的升级包,Android使用OTA[1]升级包,其初衷在于可以发挥广域无线通信链路的优势,如3G。

2024-05-01 20:08:38 631

原创 RK3568平台(时间篇)定时获取GPIO的状态

【代码】RK3568平台(时间篇)定时获取GPIO的状态。

2024-04-25 23:15:49 66

原创 RK3568平台 U-boot开发

Linux 系统要启动就必须需要一个 bootloader 程序,也就说芯片上电以后先运行一段bootloader 程序。这段bootloader程序会先初始化DDR等外设,然后将Linux内核从flash(NAND,NOR FLASH,SD,MMC 等)拷贝到 DDR 中,最后启动 Linux 内核。

2024-04-21 14:38:59 971

原创 Android AIDL接口

AIDL(Android Interface Definition Language)是一种 IDL 语言,用于生成可以在 Android 设备上两个进程之间进行进程间通信(IPC)的代码。通过 AIDL,可以在一个进程中获取另一个进程的数据和调用其暴露出来的方法,从而满足进程间通信的需求。通常,暴露方法给其他应用进行调用的应用称为服务端,调用其他应用的方法的应用称为客户端,客户端通过绑定服务端的 Service 来进行交互。

2024-04-20 20:15:55 482

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

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

2024-04-15 00:28:20 161

原创 Android 音频系统

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

2024-04-13 21:41:12 711

原创 RK3568平台(平台总线篇)SPI设备驱动

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

2024-04-13 15:15:53 868

原创 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 224

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

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

2024-04-06 20:01:05 242

原创 RK3568平台(PCIE篇)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 1017

原创 RK3568平台(UART篇)Uart驱动框架

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

2024-04-05 22:01:54 845

原创 RK3568平台(USB篇)USB设备驱动

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

2024-03-31 15:47:52 564

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

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

2024-03-31 14:24:59 141

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

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

2024-03-31 01:01:58 367

原创 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 677

原创 RK3568平台(网络篇)网络唤醒

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

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

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

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

2024-03-23 15:10:40 1037

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

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

2024-03-18 23:46:50 411

原创 Android input输入子系统

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

2024-03-16 18:24:05 457

原创 Android Button点击事件

【代码】Android Button点击事件。

2024-03-14 23:35:11 573

原创 RK3568平台(UART篇)UART基础知识

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

2024-03-10 23:49:11 527

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

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

2024-03-10 21:43:22 430

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

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

2024-03-10 16:50:12 369

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

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

2024-03-10 15:35:02 389

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

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

2024-03-10 00:30:26 392

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

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

2024-03-07 22:17:46 633

原创 RK3568平台(USB篇)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 617

原创 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 1365

原创 Android logcat系统

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

2024-03-04 21:19:36 609

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

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

2024-03-03 18:40:42 610

原创 Android 显示系统框架

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

2024-03-03 01:10:35 1413

原创 Android java基础_反射

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

2024-03-02 20:41:35 527

原创 RK3568平台 EXPORT_SYMBOL的作用

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

2024-02-29 23:15:57 359

空空如也

空空如也

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

TA关注的人

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