嵌入式开发
文章平均质量分 63
大海之狂
技术开发是兴趣,工作是责任,学习是态度。
展开
-
BPF技术整理笔记
21年因为项目需求而要开发一个工具,可以满足:故障排查,问题分析,统计数据等需要。开始实现的比较简单,就是针对抓取的log数据进行各个维测数据的解析和处理。具有如下几种缺陷:1、log内容主要还是借助于简单的printf和printk的内容,这类打印信息量不足。主要是release的版本不可能有太多此类的信息,否则会严重影响系统的性能。2、信息量少也意味着无法有效支撑问题问题的相关信息追溯,无法进行有效的数据统计。因此很多监控和买点方案就无法有效实现。3、无法将工具有效整合到整个软件开发工程中去。原创 2023-04-24 23:29:48 · 654 阅读 · 0 评论 -
eBPF技术介绍
eBPF程序是事件驱动的,当内核或应用程序通过某个挂接点时 运行。预定义的挂钩包括:系统调用函数进入/退出内核跟踪点网络事件和其他一些。如果不存在用于特定需求的预定义挂钩,则可以创建内核探针(kprobe)或用户探针(uprobe),以将eBPF程序连接到内核或用户应用程序中的几乎任何位置。原创 2023-04-25 17:03:31 · 1334 阅读 · 0 评论 -
eBPF开发工具链
有几个开发工具链可以帮助开发和管理eBPF程序。原创 2023-04-25 17:10:01 · 247 阅读 · 0 评论 -
Android Camera App
Android Camera App系统架构相关原创 2022-06-23 23:59:51 · 916 阅读 · 0 评论 -
音视频之RGB、YUV像素数据处理
音视频数据基础原创 2022-06-14 16:21:20 · 163 阅读 · 0 评论 -
Android系统开发与优化
https://blog.csdn.net/txc1223/article/details/89678743Android卡顿优化:卡顿分析方法CPU 时间分为两种:用户时间和系统时间。用户时间就是执行用户态应用程序代码所消耗的时间;系统时间就是执行内核态系统调用所消耗的时间,包括 I/O、锁、中断以及其他系统调用的时间。CPU 性能卡顿问题分析指标另外一个会影响 CPU 饱和度的是线程优先级,线程优先级会影响 Android 系统的调度策略,它主要由 nice 和 cgroup 类型共原创 2021-03-07 23:11:37 · 210 阅读 · 0 评论 -
android 系统开发之HIDL开发
Android 系统开发(2)--Android Treble详细分析https://www.jianshu.com/p/56bd1ea66aed具体的开发方法接下来继续更新...原创 2021-03-06 15:06:30 · 234 阅读 · 2 评论 -
功耗问题调试
https://blog.csdn.net/lp10031312/article/details/79521720https://www.jianshu.com/p/6618ba4983a7https://blog.csdn.net/xiabodan/article/details/80266464https://blog.csdn.net/kan137g/article/detail...转载 2019-05-17 01:40:49 · 279 阅读 · 0 评论 -
RP4418
概述:Cortex-A9 4核S5P4418 处理器,运行主频可高达 1.4GHz,内部集成Mali-400 MP 高性能图形引擎,支持 3D 图形流畅运行,并可播放 1080P 全高清视频、支持网卡、1080P HDMI 音视频同步输出等功能。支持 32 位内存总线,支持 1GB 内存,支持动态电源管理,支持 4GB、8GB、16GB、32GB INAND 存储。搭载 android...原创 2019-05-23 22:09:56 · 414 阅读 · 0 评论 -
FIFO具体有什么作用
First Input First Output的缩写,先入先出队列,这是一种传统的按序执行方法,先进入的指令先完成并引退,跟着才执行第二条指令。 FIFO(First Input First Output),即先进先出队列。在超市购物之后会提着我们满满的购物车来到收银台排在结账队伍的最后,眼睁睁地看着前面的客户一个个离开。这就是一种先进先出机制,先排队的客户先行结账离开。 在计算...转载 2019-05-29 00:24:16 · 10540 阅读 · 0 评论 -
阻塞与非阻塞的区别
简单点说:阻塞就是干不完不准回来,非阻塞就是你先干,我现看看有其他事没有,完了告诉我一声我们拿最常用的send和recv两个函数来说吧...比如你调用send函数发送一定的Byte,在系统内部send做的工作其实只是把数据传输(Copy)到TCP/IP协议栈的输出缓冲区,它执行成功并不代表数据已经成功的发送出去了,如果TCP/IP协议栈没有足够的可用缓冲区来保存你Copy过来的...转载 2019-05-29 00:28:52 · 562 阅读 · 0 评论 -
单工,半双工和全双工有何区别和联系
单工数据传输只支持数据在一个方向上传输;在同一时间只有一方能接受或发送信息,不能实现双向通信,举例:电视,广播。 半双工数据传输允许数据在两个方向上传输,但是,在某一时刻,只允许数据在一个方向上传输,它实际上是一种切换方向的单工通信;在同一时间只可以有一方接受或发送信息,可以实现双向通信。举例:对讲机。3.全双工数据通信允许数据同时在两个方向上传输,因此,全双工通信是两个单工通信方...原创 2019-05-29 00:31:59 · 613 阅读 · 0 评论 -
屏下指纹技术实现方案与原理
1月24日,全球第一台量产的屏幕指纹手机vivo X20 Plus屏幕指纹版正式在北京亮相。 据悉,该手机屏幕指纹版已经支持支付宝和微信的指纹支付。vivo X20 Plus屏下指纹,其原理是利用光电反射技术,专门适配OLED屏幕的RGB Pixel发出光线,穿透0.68mm厚度的玻璃盖板到达手指,因手指的不同纹路导致反射光线不同,这些反射光线再穿透屏幕,到达指纹Sensor,从而实现指纹...转载 2019-06-17 23:23:38 · 34686 阅读 · 2 评论 -
Linux电源管理-休眠与唤醒
1.休眠方式在内核中,休眠方式有很多种,可以通过下面命令查看# cat /sys/power/state //来得到内核支持哪几种休眠方式. 常用的休眠方式有freeze,standby, mem, diskfreeze: 冻结I/O设备,将它们置于低功耗状态,使处理器进入空闲状态,唤醒最快,耗电比其它standby, mem, disk方式高 ...原创 2019-07-04 00:10:33 · 2582 阅读 · 0 评论 -
可重入与线程安全
https://baike.baidu.com/item/%E5%8F%AF%E9%87%8D%E5%85%A5%E5%87%BD%E6%95%B0/4521100?fr=aladdin原创 2019-08-19 01:21:38 · 107 阅读 · 0 评论 -
自旋锁和互斥锁区别
POSIX threads(简称Pthreads)是在多核平台上进行并行编程的一套常用的API。线程同步(Thread Synchronization)是并行编程中非常重要的通讯手段,其中最典型的应用就是用Pthreads提供的锁机制(lock)来对多个线程之间共 享的临界区(Critical Section)进行保护(另一种常用的同步机制是barrier)。Pthreads提供了多种锁机制:...原创 2019-08-19 01:23:49 · 206 阅读 · 0 评论 -
自旋锁 互斥锁 读写锁 递归锁
这几个锁的概念各有交叉,容易混淆互斥锁(mutexlock):最常使用于线程同步的锁;标记用来保证在任一时刻,只能有一个线程访问该对象,同一线程多次加锁操作会造成死锁;临界区和互斥量都可用来实现此锁,通常情况下锁操作失败会将该线程睡眠等待锁释放时被唤醒自旋锁(spinlock):同样用来标记只能有一个线程访问该对象,在同一线程多次加锁操作会造成死锁;使用硬件提供的swap指令或tes...原创 2019-08-19 01:34:34 · 297 阅读 · 0 评论 -
Android Kernel wakeup_sources分析
因为最近再看耗电问题。 不可避免会涉及到kernel层的wakelock。在adb shell下面cat /d/wakeup_sources(需要root权限),可以得到kernel的wakelock信息。name active_count event_count wakeup_count expire_count active_s...原创 2019-08-12 00:28:14 · 661 阅读 · 0 评论 -
Android休眠唤醒和wakeup_source机制的使用(2)
流程相关的代码分析(非wakeup source代码)这里主要分析当出发power类事件时,android是怎样使用wakeup source机制来实现休眠唤醒的。关于wakeup source的代码,以后再分析。当power key按下后,首先是key 驱动里面读取键值,然后上报给系统:351 static irqreturn_t gpio_keys_isr(int irq, ...原创 2019-08-12 00:35:36 · 853 阅读 · 0 评论 -
Android休眠唤醒和wakeup_source机制的使用(1)
基本概念及流程说明Android自从到4.4之后就摈弃了臃肿的wake lock 机制,使用linux3.4之后加上的 wakeup_souce机制。到底wakeup_source 机制是怎样工作的?在讲述之前,先化小篇幅讲讲android 在wake lock 机制跟wakeup_source之间切换的取舍缘由。这部分有参考网上的相关资料。android4.4 之前一直是基于linux ...原创 2019-08-12 00:47:10 · 2151 阅读 · 0 评论 -
Android休眠调试总结
https://blog.csdn.net/mike8825/article/details/81140159原创 2019-08-25 21:53:12 · 254 阅读 · 0 评论 -
关于pid_t的理解
pid_t pid = fork();这里的pid_t类似一个类型,就像int型一样,int型定义的变量都是整型的,pid_t定义的类型都是进程号类型。这个语句的意思是定义了一个pid_t类型的变量pid,fork()函数返回一个进程号,这个进程号赋给了pid。pid_t在头文件types.h(sys/types.h)中定义、其中fork( void )为创建子进程,有趣的是他有三种不同的...原创 2019-04-23 19:31:14 · 5802 阅读 · 4 评论 -
I2C总线传输协议
https://blog.csdn.net/jasonchen_gbd/article/details/77431951I2C只有两根信号线就完成信息交换,支持速率0-5M Hz的设备地址帧:master -------(指明发送)-------> slave数据帧:master <------(指明发送)--------> slave开始条件...原创 2019-05-17 01:30:48 · 127 阅读 · 0 评论 -
操作系统-物理内存和虚拟内存
https://blog.csdn.net/qq_40840459/article/details/81054164物理内存就是物理上,真实的内存有多少;物理地址,地址对应的是总线,所以物理地址的大小跟总线的宽度相关。比如10根地址线则代表最大物理地址是2的10次方,1K的物理地址;正在运行的一个进程,他所需的内存是有可能大于内存条容量之和的,比如你的内存条是256M,你的程序却要创建一个...原创 2019-05-17 00:37:53 · 837 阅读 · 0 评论 -
linux下多种锁的比较
https://blog.csdn.net/kowzb/article/details/77160249转载 2019-04-25 11:45:15 · 477 阅读 · 0 评论 -
嵌入式linux C语言(一)——位运算的使用
https://blog.51cto.com/9291927/1784135嵌入式linux C语言(一)——位运算的使用ARM是内存与IO统一编址,SoC中有很多控制寄存器,通过对这些寄存器进行位运算对这些控制寄存器进行设置,进而控制外设功能。在修改寄存器某些位的过程中不能修改其他的位。一、位运算基础C语言基本的位操作符有与、或、异或、取反、左移、右移六种位运算符。...转载 2019-04-25 09:46:46 · 221 阅读 · 0 评论 -
Linux 字符设备驱动
https://www.cnblogs.com/cainiaoaixuexi/p/3684641.htmlhttp://www.cnblogs.com/qlee/archive/2011/07/27/2118406.html原创 2019-04-29 17:55:28 · 323 阅读 · 0 评论 -
设备树机制
https://www.cnblogs.com/haofei2haojie/p/8466881.htmlhttps://blog.csdn.net/qingzhuyuxian/article/details/79693792转载 2019-05-05 10:14:52 · 121 阅读 · 0 评论 -
c语言常见寄存器操作
1 寄存器地址的定义: #define UART_BASE_ADRS (0x10000000) /* 串口的基地址 */ #define UART_RHR *(volatile unsigned char *)(UART_BASE_ADRS + 0) /* 数据接受寄存器 */ #define UART_THR *(volatile unsigned char *...原创 2019-04-24 18:40:55 · 9607 阅读 · 0 评论 -
音频设备的3种硬件接口--PCM,IIS和AC97
一些Audio Codec中总是出现PCM字样,一直以为它是一种音频数据编码格式,但是越看Spec觉得越不像,赶紧到网上查了下,发现它是一种类似与IIS的数据传输格式。1. PCM接口针对不同的数字音频子系统,出现了几种微处理器或DSP与音频器件间用于数字转换的接口。最简单的音频接口是PCM(脉冲编码调制)接口,该接口由时钟脉冲(BCLK)、帧同步信号(FS)及接收数据(DR...转载 2019-04-27 01:38:59 · 1503 阅读 · 0 评论 -
linux平台设备驱动架构详解 Linux Platform Device and Driver
概述:platform总线是区别于实体总线USB、I2C、SPI 、PIC总线的虚拟总线,一些usb设备选址的话需要通过USB总线来进行寻址,而有些类似于SoC内部外设如led 看门狗 定时器是直接通过内存的寻址空间来进行寻址的,cpu与这些设备通信是不需要总线的,2.6内核以后要对所有设备进行统一管理,通过kset、kobject来建立层次关系,对这些直接通过内存寻址的设备虚拟了一种...原创 2019-04-27 01:20:18 · 348 阅读 · 0 评论 -
linux gpio接口
一.相关结构体1.gpio_chip代表一个芯片的一个gpio bankstruct gpio_chip { //gpio bank const char *label; //bank名 struct device *dev; //设备文件 struct module *owner; //模块所有者 int (*request)(struct gpio_chip ...转载 2019-04-26 12:23:33 · 1815 阅读 · 0 评论 -
GPIO驱动框架
一、前言作为一个工作多年的系统工程师,免不了做两件事情:培训新员工和给新员工分配任务。对于那些刚刚从学校出来的学生,一般在开始的时候总是分配一些非常简单的任务,例如GPIO driver、LED driver。往往CPU datasheet的关于GPIO或者IO ports的章节都是比较简单的,非常适合刚入行的工程师。虽然GPIO子系统相关的硬件比较简单,没有复杂的协议,不过,对于软件抽象而言...转载 2019-04-26 12:13:21 · 3388 阅读 · 0 评论 -
linux的mdev机制
https://blog.csdn.net/qq_21792169/article/details/50273583转载 2019-04-30 00:04:19 · 212 阅读 · 0 评论 -
Linux 字符设备驱动结构(一)—— cdev 结构体、设备号相关知识解析
https://blog.csdn.net/zqixiao_09/article/details/50839042转载 2019-04-30 00:24:24 · 177 阅读 · 0 评论 -
linux ALSA详解
https://www.linuxidc.com/Linux/2019-01/156223.htm转载 2019-05-16 11:17:08 · 956 阅读 · 0 评论 -
Linux内核的5个子系统
https://blog.csdn.net/xiaomage_307_/article/details/79117881转载 2019-05-15 17:00:13 · 344 阅读 · 0 评论 -
android 音频相关 技术点
音频框架https://www.jianshu.com/p/1e1821d189aealsa驱动框架https://blog.csdn.net/hongzg1982/article/details/56516837声卡asoc驱动Linux音频驱动-ASOC(ALSA System on Chip)https://blog.csdn.net/longwang155069/a...原创 2019-05-20 14:53:17 · 183 阅读 · 0 评论 -
线程和SMP
https://blog.csdn.net/sicofield/article/details/8720702转载 2019-05-15 10:45:43 · 143 阅读 · 0 评论 -
ARM Device Tree起源
Linus Torvalds在2011年3月17日的ARM Linux邮件列表宣称“this whole ARM thing is a f*cking pain in the ass”,引发ARM Linux社区的地震,随后ARM社区进行了一系列的重大修正。在过去的ARM Linux中,arch/arm/plat-xxx和arch/arm/mach-xxx中充斥着大量的垃圾代码,相当多数的代...转载 2019-05-09 19:43:27 · 110 阅读 · 0 评论