自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 [RV1126B]GPIO LEDs (gpio-leds) 配置与使用指南

本文介绍了GPIO LEDs的配置与使用方法,主要包括: 设备树配置:详细说明了关键字段如compatible、gpios、linux-default-trigger等的含义和配置示例,展示了一个完整的LED节点配置。 触发效果:重点介绍了heartbeat触发模式的动态闪烁特性,它会根据系统负载自动调整闪烁频率。 用户空间控制:通过sysfs接口实现LED控制,包括查看/切换触发器、定时器配置和手动控制亮度等操作。 内核依赖:列出了使用各种触发器所需的内核配置选项。 持久化设置:提供了通过systemd服

2026-04-26 10:31:32 453

原创 RK3566 AB升级功能

RK3566 AB升级功能配置摘要 本文档详细介绍了RK3566 Linux SDK (kernel 4.19)实现AB升级功能的配置方法.

2026-02-16 15:32:44 881

原创 [Buildroot]当编译buildroot时下载包卡住如何处理

摘要 当Buildroot编译卡在下载包时(如host-pkgconf 1.6.3),可按以下步骤处理: 在package目录找到对应包(如pkgconf/) 查看.mk文件获取下载URL(如https://distfiles.ariadne.space/pkgconf/pkgconf-1.6.3.tar.xz) 手动wget下载文件并校验sha256值(与.hash文件对比) 若校验通过,将文件放入dl/目录并删除原有缓存 重新编译即可跳过下载步骤 该方法适用于网络不稳定导致下载失败的情况,通过手动下载并

2026-02-10 15:52:40 144

原创 RK3588 Android 12 适配LSM6DS3传感器(gyro部分)(基于RK input sensor HAL 框架)

本文摘要介绍了基于Rockchip HAL框架对LSM6DS3陀螺仪传感器的驱动适配工作。主要内容包括: 驱动移植部分,详细列出了LSM6DS3传感器的寄存器定义和配置参数 实现了sensor_active和sensor_init等关键函数,用于控制传感器工作状态和初始化流程 代码中包含了完整的寄存器地址定义,涵盖加速度计、陀螺仪、FIFO控制等功能模块 驱动支持416Hz采样率配置,并实现了基本的电源管理功能 (字数:148)

2026-01-08 12:22:52 94

原创 RK3588 Android 12 Sensor回调onSensorChanged流程

本文分析了Android传感器服务中数据传输的关键流程。在system_server进程中,SensorService通过HAL接口获取传感器数据后,经过处理分发给各连接的SensorEventConnection。数据通过高效的BitTube机制(基于socketpair实现)进行跨进程传输,采用非阻塞模式避免服务阻塞。应用进程通过注册文件描述符监听,在数据到达时由Looper唤醒处理。整个流程利用二进制兼容的ASensorEvent和sensors_event_t结构体,避免了数据转换开销,实现了高性能

2026-01-02 15:11:01 110

原创 RK3588 Android 12 SensorManager.registerListener

本文分析了Android 12 RK3588平台中SensorManager.registerListener的实现过程。首先检查传感器是否为单次采集模式,然后验证参数合法性并限制监听器数量不超过128个。核心逻辑在SystemSensorManager中实现,通过创建或获取SensorEventQueue来管理传感器事件,其中队列创建涉及Native层的nativeInitBaseEventQueue调用。整个注册流程最终通过JNI桥接至底层C++实现,完成传感器监听器的注册和事件队列初始化。

2026-01-01 16:59:54 130

原创 RK3588 Android 12 getSystemService的流程

本文分析了Android中getSystemService()方法的调用流程。以获取传感器服务为例,调用路径从Activity开始,经过ContextThemeWrapper和ContextWrapper,最终由ContextImpl实现

2025-12-31 21:40:39 118

原创 RK3588 Android 12 SensorDevice分析

本文分析了RK3588平台Android 12系统中SensorDevice的初始化流程。重点研究了HAL 1.0版本的SensorDevice构造过程,包括通过HIDL获取远程服务代理对象、验证HAL服务可用性等关键步骤。详细解释了hw_get_module函数如何根据模块ID加载对应的.so库文件,并介绍了同步协调器mRestartWaiter在处理HAL服务重启时的作用。文章还追踪了从框架层到HAL层的调用链路,展示了Android传感器子系统初始化的完整流程。

2025-12-29 15:00:54 95

原创 RK3588 Android 12 SensorService的启动

本文分析了RK3588平台Android 12系统中SensorService的启动过程。从SystemServer的Java层开始,通过SystemServiceManager启动SensorService,使用反射机制创建实例并调用onStart()方法。关键点在于通过startSensorServiceNative()方法进入Native层,该过程在异步线程池中执行以避免阻塞主线程。Native层中会创建SensorService实例并注册到ServiceManager。整个流程展现了Android系

2025-12-25 17:14:08 134

原创 RK3588 Android 12 适配LSM6DS3传感器(acc部分)(基于RK input sensor HAL 框架)

本文介绍了在RK3588平台上基于Android 12系统适配LSM6DS3加速度传感器的过程。主要内容包括驱动移植部分,详细说明了LSM6DS3传感器的寄存器定义和初始化流程。驱动代码实现了传感器激活控制功能,通过I2C接口配置传感器工作模式(416Hz采样率或关闭状态)。文章还提供了传感器寄存器映射表,涵盖了加速度计、陀螺仪、FIFO控制等多个功能模块的寄存器地址定义。该适配工作基于Rockchip的input sensor HAL框架完成。

2025-12-19 16:18:14 121

原创 RK3588 Android 12 适配BH1750光线传感器(基于RK input sensor HAL 框架)

本文介绍了RK3588平台基于RK input sensor HAL框架适配BH1750光线传感器的驱动移植过程。

2025-12-15 15:09:27 207

原创 Stratum mining protocol

【代码】Stratum mining protocol。

2024-12-27 10:00:21 1482

原创 [RK3566]linux下使用upgrade_tool报错

查看upgrade_tool的log。原因:usb节点的操作权限不足。

2024-08-03 22:44:09 1401

原创 [IMX6ULL]移植NXP Linux Kernel 5.15

仓库[nxp-imx/linux-imx]2. 编译NXP Linux Kernel 5.153. 烧写NXP Linux Kernel 5.15编译生成使用tftp方式下载上面两个文件到板子上(uboot移植看前面的文章)4. 适配正点原子Alpha板子4.1 新建单板配置文件4.2 新建单板设备树文件修改imx6ull-14x14-alpha.dts修改imx6ull-14x14-alpha-emmc.dts修改dts目录下的Makefile, 添加imx6ull

2024-07-21 17:05:23 1763 5

原创 [Debugger]使用openocd+dap-link调试树莓派4B[Cortex-A72]

这里的dap-link使用的是jtag的方式由于使用的是方式连接树莓派,但是OpenOCD的中的是以方式连接,我们要参考它新建一个运行OpenOCD运行GDB运行效果如下:

2024-07-08 14:25:20 923

原创 [Debugger]调试Arm设备

1.2 运行gdb进入gdb环境,连接到设备

2024-07-05 15:48:24 725

原创 [A133]全志u-boot中的I2C驱动分析

IIC是高位(MSB)先传输2.1.1 主机发开始信号2.1.2 主机发从机设备地址2.1.3 主机发送从机寄存器地址2.1.4 主机发送数据到从机2.1.5主机发送Stop信号2.2 主机读数据读操作除了下面的两个操作,其他与写一样restart信号实际上就是start信号,只是restart不会reset总线

2024-07-01 14:09:11 975

原创 [A133]uboot启动流程

init_sequence_f数组中特别注意的是下面的函数,将接下来的链接重定位内存结构息息相关。标签的当前地址,并将其存储在链接寄存器(lr)中。这将是代码重定位后的返回地址。)的低4位清零,以确保栈指针(sp)是16字节对齐的。重定位uboot text&bss&data段到内存中的新地址。中,根据平台架构, 有对应的实现,当前平台是armv8。为即将重定位做的内存分配,此时结构如下。寄存器中,以得到重定位后的最终返回地址。到这里重定位的准备工作都做完了,从下面的汇编到C的map可知是。

2024-06-26 11:15:48 1071

原创 [A133]uboot引导Linux内核启动流程

坂田民工2024-6-17。

2024-06-21 15:41:54 1105

原创 [IMX6ULL]移植lf-v2022.04 U-boot

ALPHA 板子不同于NXP的EVK开发板,它的LCD RESET使用的是硬件上电复位,所以不需要使用软件复位,即不需要单独的Pin去reset,所以注释EVK用到的lcd reset, 节约引脚(软件上,在LCD时序也需要注释掉它调用reset脚的时序点,在下面有讲到)修改arch/arm/dts/Makefile, 添加alpha板子。修改arch/arm/mach-imx/mx6/Kconfig。修改imx6ull-14x14-alpha-emmc.dts。// 将改变覆盖到MMC。

2024-05-07 22:45:23 855

原创 [RP2040]搭建第一个自定义项目

在endif()endif()# sub-dir:led.c。

2024-05-05 00:48:17 920

原创 [RP2040]Ubuntu搭建RP2040开发环境

一、下载SDK和编译链下载SDK下载交叉编译链配置在最后追加二、编译实例工程新开一个终端,进入目录编译blink编程编译完成同级目录下生成:blink.uf2、blink.elf、blink.bin

2024-04-23 17:13:35 1212

原创 [Android 13]Input系列--获取触摸窗口

Android 13。

2024-02-29 14:11:05 2777

原创 LVGL在framebuffer设备上的移植

arm-linux-gnueabihf-gcc: 错误: unrecognized command line option ‘-Wshift-negative-value’gcc编译报错 error: ‘for‘ loop initial declarations are only allowed in。文章参考于网友的经验。

2023-12-31 16:43:07 2820 5

原创 kernel的module目录名疑问

原因:kernel的module目录匹配是由kernel编译时生成的版本决定的,本来制作rootfs时创建module文件夹名字是4.1.15,但是修改了内核,内核的version生成信息变了,相应的源码如下:(kernel的顶层Makefile)当修改内核后重新编译后烧到设备上,启动后发现kernel的module名和uname -r对不上了,导致驱动无法加载,出现如下的错误信息。脚本执行的结果拼接而成,其中$(KERNELVERSION)就是内核原本的版本号4.1.15,而。这里主要分为两个部分。

2023-12-29 21:51:36 1087

原创 配置NPM异常

问题:当配置npm的环境时,即使换了国内的源(例如淘宝源),还是会卡住,有可能时ssl检查的原因。

2023-12-20 14:28:08 598

原创 STM32 MCU的易坑点收集

时钟延长是一个术语,某些从设备可以把时钟线拉低,主设备发现自己释放时钟线之后时钟线还没有变成高电平,就会停止发送数据,然后等待从设备释放时钟线。通过这种方式从设备可以告诉主设备你慢点发,我这边还得准备准备,这在从机速率比主机低的时候会有用,stm32会默认开启时钟延长模式[Clock No Stretch Mode=disbale](这里的disable和No双重否定等于肯定),不过大多数IIC设备没有时钟延长的设定.

2023-12-13 10:32:05 979

原创 [socket]客户端connect成功但是服务端accept()函数返回-1问题

等方法异常时是否也往下走了,要及时退出。现象:当客户端运行时,客户端。第一种情况就需要排查前面的。

2023-11-17 11:06:06 1150

原创 [Socket]Unix socket 运行权限问题

原因:unix socket是基于文件的fd方式访问,socket_path实际上是一个目录+文件(s文件),要确保这个文件有可读写权限。问题:socket只能在当前源码目录运行,如果是服务端,启动则会出现无法bind, 客户端则会出现无法connect。解决方法:在server端listen方法前修改socket_path的文件权限。

2023-11-13 14:41:29 1456 2

原创 buildroot编译问题解决

【代码】buildroot编译问题解决。

2023-11-03 22:45:05 1045

原创 [Android 13]PowerManagerService系列1--启动流程和核心方法

Android 13。

2023-07-28 20:09:08 3447

原创 [Android 13]Input系列--触摸事件在应用进程的分发和处理

Android 13前面我们已经梳理了input事件在native层的传递,这一篇我们接着探索input事件在应用中的传递与处理,我们将按键事件和触摸事件分开梳理,这一篇就只涉及触摸事件。

2023-07-24 22:13:34 1425 1

原创 [Android 13]Input系列--InputDispatcher事件分发

Android 13。

2023-07-20 22:00:47 1028

原创 [Android 13]Input系列--InputReader事件处理

Android 13。

2023-07-19 22:31:16 1268

原创 [Android 13]Input系列--EventHub获取事件

Android T从前面inputflinger的启动分析中,我们知道事件来源是在, 所以我们重点看下这个方法的流程来了解事件是如何从驱动上报中获取的。

2023-07-12 21:15:45 1413

原创 [Android 13]Input系列--InputFlinger的启动

Android T。

2023-07-11 20:32:59 1094

原创 [Android 13]Binder系列--获取服务

获取服务。

2023-07-10 20:59:34 1095

原创 [Android 13]Binder系列--获取ServiceManager

获取ServiceManager。

2023-07-02 22:25:38 971

原创 [Android 13]Binder系列--启动ServiceManager

ServiceManager的启动hongxi.zhuAndroid 13。

2023-07-01 22:44:43 1426

原创 [Android 13]Binder系列--注册服务

基于Android T 分析客户端进程如何通过Binder向ServiceManager进程注册服务的过程以注册SurfaceFlinger为例,分析客户端进程如何通过Binder向ServiceManager进程注册服务的过程。

2023-06-30 17:33:22 820 1

空空如也

空空如也

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

TA关注的人

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