自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(14)
  • 问答 (1)
  • 收藏
  • 关注

原创 Android——ProcessPhoenix 详解/注意事项

ProcessPhoenix 是通过独立:phoenix进程实现 APP 安全重启的工具库,其核心优势在于双进程隔离,解决了「进程无法自重启」的限制。使用过程中,绝大多数崩溃都来自重启时机不当:要么主线程正在执行任务时被杀死,要么旧进程未完全回收就启动新进程。

2026-04-25 11:52:02 226

原创 Android-Activity生命周期

​生命周期的核心本质​:管理 Activity 的资源分配与释放,避免内存泄漏、后台耗电、UI 更新崩溃。​前台 / 后台任务原则​:前台任务(动画、传感器、长连接)在onResume()启动、onPause()暂停;后台任务(UDP 接收、日志写入)在onStart()启动、onStop()停止。​重建场景的关键​:横竖屏、内存不足等场景会触发 Activity 重建,临时数据可通过保存,长期数据推荐用ViewModel跨重建保留。​Jetpack​ 组件配合Lifecycle。

2026-04-23 22:38:14 385

原创 Linux 驱动开发基础(5):并发与竞争详解

面对(原子操作、自旋锁、互斥体、信号量),在实际驱动开发中如何抉择?机制是否允许休眠?能否在中断中使用?CPU 性能开销核心使用场景原子操作不适用✅ 可以极小(硬件指令支持)仅保护单个变量/标志位(如引用计数、状态位)。自旋锁 (Spinlock)❌禁止✅ 可以(需配合 irqsave)较低(但死等会占CPU)临界区极小、执行极快;或者必须在中断服务函数中进行数据保护。互斥体 (Mutex)✅ 允许❌禁止较高(涉及上下文切换)临界区较大、耗时较长、或者临界区内调用了kmalloc。

2026-03-28 18:42:54 412

原创 Linux 驱动开发基础(4):gpio子系统

在明确了 GPIO 子系统是建立在 pinctrl 子系统之上这一前提后,需要聚焦两个问题:为了让驱动程序知道它应该操作哪个 GPIO,需要在设备树(Device Tree)中进行配置。假设要编写 SD 卡驱动,需要通过检测一个 CD(Card Detect)引脚的高低电平来判断 SD 卡是否插入。假设已知硬件上该功能连接在 上。首先, 节点已经配置好了该 PIN 的复用和电气属性。接下来,在 SD 卡的总节点中,需要添加一个属性来描述 CD 引脚:GPIO 控制器节点解析因为在原厂提供的 SoC 级

2026-03-25 09:27:02 399

原创 Linux 驱动开发基础(3):pinctrl 子系统

像这么长的宏,到底代表了什么呢?设备树是支持 C 语言#include语法的,这个宏定义在内核的.h头文件中(如在头文件,关于/* 格式: <mux_reg conf_reg input_reg mux_mode input_val> */0x0090。

2026-03-23 12:00:11 372

原创 Linux 驱动开发基础(2):设备树LED驱动

前情回顾。在上一节中,我们了解了设备树(Device Tree)的基本语法和内核操作函数。本节将正式实战,编写一个的 LED 字符设备驱动。在前几节的 LED 驱动中,我们在驱动代码里了寄存器的物理地址,并使用ioremap映射。而本节我们将采用.dtscompatiblestatusreg。

2026-03-20 09:26:25 310

原创 Linux 驱动开发基础(1): 设备树详解

掌握设备树是 Linux 驱动开发人员的必备技能。本节我们将深入了解设备树的起源、语法规则、常用属性以及内核操作函数(OF 函数)。

2026-03-19 09:08:22 530

原创 Linux 字符设备驱动基础开发详解(3):新字符设备驱动

在 [前两节]。,我们掌握了使用注册字符设备并手动使用mknod创建设备节点的方法。

2026-03-16 09:34:11 660

原创 Linux 字符设备驱动基础开发详解(2):LED 驱动

书接上回。在上一小节中我们掌握了字符设备驱动的开发框架。本节我们将编写一个真正的,并深入讲解 Linux 驱动是如何通过来操作硬件寄存器的。

2026-03-13 13:12:31 393

原创 Linux 字符设备驱动基础开发详解(1)

本文详细介绍了Linux字符设备驱动开发的基础流程。主要内容包括:1) 驱动加载/卸载的两种方式(编译进内核或作为模块),推荐使用modprobe处理模块依赖;2) 设备号管理,包含主次设备号概念及静态/动态分配方法;3) file_operations结构体的关键作用,作为用户空间与内核驱动的桥梁;4) 完整开发示例,涵盖初始化、操作函数实现及设备注册/注销流程。开发要点包括正确实现入口/出口函数、设备号管理、操作函数实现及模块信息声明等。

2026-03-11 10:37:02 407

原创 Android 应用如何检测当前接入的音频设备(蓝牙/有线)

本文介绍了Android应用中检测和切换音频输出设备的方法。主要内容包括:1)通过AudioManager主动查询当前音频设备状态;2)动态注册BroadcastReceiver监听有线耳机插拔(Android 8+必须动态注册)和蓝牙设备连接状态;3)实现统一音频路由策略,按蓝牙>有线>外放的优先级切换输出路径。关键点在于合理使用系统广播和权限管理,同时注意蓝牙设备初始化的延迟处理。该方法适用于需要实时切换音频输出的应用场景,如音乐播放、语音通话等。

2026-03-10 19:44:13 456

原创 Linux 应用程序如何操作底层硬件

本文梳理,在 Linux 系统下应用程序是如何一步步操作底层硬件设备的。了解这一流程,是理解 Linux 驱动开发的第一步。

2026-03-09 11:39:16 237

原创 面向对象嵌入式培养(第二讲)

面向对象嵌入式培养(第二讲)C++基础1、C和C++衡量语言的三个标准特点作用扩展性添加新的功能,不修改之前的代码维护性当出现问题,能准确的定位代码复用性功能代码的复用2、面向结构(C语言)VS面向对象(C++)应用场景优缺点面向结构解决具体事务,结构套结构后期的维护性、扩展性、复用性较差面向对象解决复杂宏观的系统任务,从宏观的角度解决事物问题后期的拓展和维护较为方便,复用性好;核心思想:保证代码的独立性面对同一个问题

2021-04-12 14:57:20 214

原创 面向对象嵌入式培养(第一讲)

面向对象嵌入式培养(第一周)**学习方向:**嵌入式 + 人工智能(技术,在嵌入式的基础上融合人工智能)学习内容:1、嵌入开发概述(面向对象在嵌入式开发中的角色)什么使嵌入式开发?**嵌入式技术:**在硬件平台移植操作系统;在 硬件 和 软件 两个元素中间嵌入 操作系统;当软件访问硬件时可以直接访问操作系统,当硬件发生变化时软件不需要发生改变,直接通过修改操作系统(内核),使软件可以应用于不同的硬件。区分是否嵌入式开发: 是否存在操作系统。常规开发模式:#mermaid-svg-7

2021-04-11 16:32:05 428

空空如也

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

TA关注的人

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