自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(41)
  • 资源 (15)
  • 收藏
  • 关注

原创 代码质量优化之静态代码扫描

质量是保证产品和服务满足顾客需求的关键,真正的好产品,是能以用户为中心,和用户做朋友的。作为开发人员,除了保证产品基础功能正常外,还要保证高标准的代码质量。代码质量可以从代码的严谨性、可读性、可维护性、健壮性、性能和效率、代码覆盖度、易测性、可移植性几个方面的评价。严谨性:指的是逻辑严谨,代码逻辑要符合运行预期。在这一环节,要避免内存泄漏、句柄泄漏、使用恰到的同步\异步机制等。好的代码质量,在某段代码指令执行后,会产生什么样的动作、内存功耗占用多少都是要符合预期的。

2024-04-20 00:01:15 407

原创 Android startForegroundService与startForeground

service启动有四种形式。1.显示启动(如直接按service的全路径启动)2.隐示启动(如通过intent-filter的action标签启动)3.通过bindservice显示启动。4.通过bindservice隐示启动。

2024-04-18 20:29:55 134

原创 ByteBuffer操作简介

ByteBuffer操作简介。

2022-09-07 16:49:52 836 1

原创 WearOS复杂数据的刷新

表盘可以通过setDefaultSystemComplicationProvider(int watchFaceComplicationId, int systemProvider, int type)来设置要显示的系统复杂数据。一.系统支持哪些复杂数据SystemProviders列举了目前系统支持的复杂数据。package android.support.wearabl...

2020-03-19 14:59:57 1060

原创 WearOS Offload模式下的表盘开发

offload指的是屏幕渲染通过SidekickService交给bg处理,不用ap来渲染,这样会节约功耗,增加手表待机时长,在只保留基本运动传感器功能,未开启运动模式/GPS/WIFI/心率灯等模块时,功耗大约能节约10%。一.WearOS手表offload模式下的表盘渲染,是通过BG绘制的。表盘进入offload的条件是手表处于微光模式且表盘是Decomposable的。...

2020-03-09 20:00:03 2479

原创 android app设置亮屏的几种方式以及功耗对比

在Android app开发中,为了让某个页面持续显示一定时间,需要设置亮屏代码。常用的方法有四种,分别如下:方法1:通过PowerManager获取wakelock。方法2:在view中设置view.setKeepScreenOn(true);方法3:设置WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON 和 setTurnScreenO...

2020-01-17 12:55:43 2633 1

原创 WearOS 复杂数据的使用

通过提高复杂数据service,可以使支持复杂数据的表盘展示service提供的数据。参考:https://developer.android.com/training/wearables/watch-faces/exposing-data-complications例如//创建一个复杂表盘servicepublic abstract class BaseSportRecord...

2019-11-30 17:44:32 5

转载 [转载] FileInputStream 与 BufferedInputStream 效率对比

【问题】FileInputStream & FileOutputStream 和BufferedInputStream & BufferedOutputStream 都能完成文件的读写。它们在原理上、时间效率上有什么不同,实际应用时应该如何选择呢?【实验】我们采用文件复制来做效率对比的实验。在FileOperator类的copyWithFileStream方法实现...

2019-11-27 12:26:21 318 1

转载 各个击破搞明白PorterDuff.Mode

原文:https://www.jianshu.com/p/d11892bbe055做过图形图像处理coding的Android程序员一定用过或了解过PorterDuff.Mode这个枚举变量中的某些值,对此了解不多理解不深刻的时候是不是会很纠结到底该用那个模式呢?至少不能快速准确地用到恰当的模式,那么PorterDuff.Mode究竟是什么,它的各个枚举值有什么作用呢?这里我整理一下笔记,加深...

2019-01-03 18:20:53 151

转载 Android hdpi ldpi mdpi xhdpi xxhdpi适配详解

原文: https://www.cnblogs.com/xuan52rock/p/8065778.html1、了解几个概念(1)分辨率。分辨率就是手机屏幕的像素点数,一般描述成屏幕的“宽×高”,安卓手机屏幕常见的分辨率有480×800、720×1280、1080×1920等。720×1280表示此屏幕在宽度方向有720个像素,在高度方向有1280个像素。(2)屏幕大小。屏幕大小是手机对角线...

2019-01-03 14:56:04 289

原创 android传感器数据流程

一. android传感器有哪些?在frameworks/base/core/java/android/hardware/Sensor.java中定义了android系统所能支持的传感器,例如 public static final int TYPE_ACCELEROMETER = 1; public static final String STRING_TYPE_ACCELER...

2018-11-09 19:46:02 2765 1

转载 【转】socket服务器开发中的SO_REUSEADDR选项

转自:https://www.cnblogs.com/qiaoconglovelife/p/5416715.html1 发现问题    我在开发一个socket服务器程序并反复调试的时候,发现了一个让人无比心烦的情况:每次kill掉该服务器进程并重新启动的时候,都会出现bind错误:error:98,Address already in use。然而再kill掉该进程,再次重新启动的时候,...

2018-09-26 19:06:14 342

转载 【转】TCP三次握手详解及释放连接过程

TCP三次握手详解及释放连接过程TCP在传输之前会进行三次沟通,一般称为“三次握手”,传完数据断开的时候要进行四次沟通,一般称为“四次挥手”。两个序号和三个标志位:  (1)序号:seq序号,占32位,用来标识从TCP源端向目的端发送的字节流,发起方发送数据时对此进行标记。  (2)确认序号:ack序号,占32位,只有ACK标志位为1时,确认序号字段才有效,ack=seq+1。  ...

2018-09-26 19:01:00 175

原创 Linux中pthread_detach()线程注意

一、创建分离线程有两种方式创建分离线程:(1)在线程创建时将其属性设为分离状态(detached);(2)在线程创建后将其属性设为分离的(detached)。二、分离线程的作用由系统来回收线程所占用资源。三、实例#include <stdlib.h>#include <string.h>#include <unistd.h>#include <semaph...

2018-05-23 10:02:18 12679 1

原创 memcpy的速度测试

想把一组char a[4096]的数组拷贝到short b[6][256]中,尝试过用循环移位的方式,还用中间变量short c[2048]的方式。得出的结论: 1. 移位方式效率最低 2. 借用中间变量,变量如果是局部栈中,那么速度比全局的中间变量速度快,缺点是怕栈溢出。 验证代码如下://file name testcpyspeed.c#include<stdio.h>#inclu

2017-07-27 10:51:56 6533

原创 linux tty系统分析

tty_driver_register 注册字符设备,内核提供fops=tty_fops。 tty_fops–>线路规程的方法—>驱动定义的fops,如果是虚拟串口,则直接定义,如果是物理串口则使用内核提供的uart_fops。 如果是物理串口,内核提供是uart_fops会调用uart_start,继而调用port的port->ops->start_tx,这个start_tx是由驱动层提供。

2017-05-25 10:55:18 392 1

原创 利用awk命令统计code size

awk命令是一个强大的文本处理工具,用于在Unix和Linux系统中对文本进行模式扫描和处理。它逐行读取文本,默认以空格或制表符为分隔符进行字段分割,并将分隔后的字段保存到内建变量中,可以根据模式或条件执行编辑命令,使得用户可以进行复杂和强大的文本操作。利用nm命令和cat、grep、awk命令组合来实现一个code size统计的脚本。awk [参数] [处理内容] [操作对象]以下内容来自awk的man手册。

2017-05-23 16:24:49 228

转载 iperf命令使用

摘自 http://man.linuxde.net/iperf iperf命令 网络测试 iperf命令是一个网络性能测试工具。iperf可以测试TCP和UDP带宽质量。iperf可以测量最大TCP带宽,具有多种参数和UDP特性。iperf可以报告带宽,延迟抖动和数据包丢失。利用iperf这一特性,可以用来测试一些网络设备如路由器,防火墙,交换机等的性能。 iperf分为两种版本,Unix/Lin

2017-05-23 16:17:54 1146

转载 【转】Linux软连接和硬链接

转载 http://www.cnblogs.com/itech/archive/2009/04/10/1433052.html 1.Linux链接概念 Linux链接分两种,一种被称为硬链接(Hard Link),另一种被称为符号链接(Symbolic Link)。默认情况下,ln命令产生硬链接。【硬连接】 硬连接指通过索引节点来进行连接。在Linux的文件系统中,保存在磁盘分区中的文件不管是

2017-05-22 19:02:39 290

原创 【转】linux中断流程详解

参考 :http://blog.csdn.net/yimu13/article/details/6803957中断早期初始化 1. irq_desc[]struct irq_desc { struct irq_data irq_data; struct timer_rand_state *timer_rand_state; unsigned int __percp

2017-05-21 20:05:33 343

原创 platform device driver注册过程

platform设备注册过程。 已/sys/devices/platform/xxxxx 目录下的文件与/sys/bus/platform/xxxxx之间是用软连接对应起来的。 系统每添加一个Kobject文件,就对应一个sys目录下的一个目录。 在系统调用的读文件时候,会判断文件类型,如果是sysfs文件系统,则会根据Kset–查找得到Kobject–>Kobj_type.attribute

2017-05-15 11:09:25 413

转载 Android 网络编程(2): HttpClient与HttpURLConnection

本文转自:http://android.jobbole.com/84180/前言上一篇我们了解了HTTP协议原理,这一篇我们来讲讲Apache的HttpClient和Java的HttpURLConnection,这两种都是我们平常请求网络会用到的。无论我们是自己封装的网络请求类还是第三方的网络请求框架都离不开这两个类库。1.HttpClientAndroid SDK中包含了HttpClient,在A

2017-03-09 17:55:37 277

转载 [转]Android开发实践:Java层与Jni层的数组传递

[转]Android开发实践:Java层与Jni层的数组传递 转自:http://blog.csdn.net/xinchen200/article/details/25333047 Android开发中,经常会在Java代码与Jni层之间传递数组(byte[]),一个典型的应用是Java层把需要发送给客户端的数据流传递到Jni层,由Jni层的Socket代码发送出去,当然,Jni层也需要把从S

2016-04-05 11:18:14 495

转载 【转载】为什么无线信号(RSSI)是负值

转自:http://www.cnblogs.com/lele/articles/2832885.html为什么无线信号(RSSI)是负值答:其实归根到底为什么接收的无线信号是负值,这样子是不是容易理解多了。因为无线信号多为mW级别,所以对它进行了极化,转化为dBm而已,不表示信号是负的。1mW就是0dBm,小于1mW就是负数的dBm数。弄清信号强度的定义就行了:

2016-02-15 10:31:32 877

原创 Omap4470 USB驱动分析之注册过程

平台:OMAP4470,linix3.4,Android4.2平台。 问题: 1. usb host/otg模式切换的时候容易导致系统卡顿,甚至死机。 2. omap4470的usb接了一个usb-Ethernet,正常情况下,omap4470的usb模式应该是host,但是有时候会工作模式不对,重新设置host mode也可让usb-Ethernet工作正

2015-09-15 18:21:20 1794

转载 转载 ARM Linux静态映射分析

ARM Linux静态映射分析http://www.embedu.org/Column/Column225.htm作者:易老师,华清远见嵌入式学院讲师。在华清远见上课过程中,发现静态映射方面初学者比较难于掌握和理解,下面分析一下静态映射机制的原理并通过GPIO和USB、LCD等的静态映射作为例子来说明如何通过这种静态映射的方式访问外设资源。内核提供了一个重要的结构体struct

2015-06-03 11:02:14 447

原创 内核软中断处理流程

软中断守护进程static __init int spawn_ksoftirqd(void){ void *cpu = (void *)(long)smp_processor_id(); int err = cpu_callback(&cpu_nfb, CPU_UP_PREPARE, cpu);//创建守护进程 BUG_ON(err != NOTIFY_OK); cp

2015-05-06 18:54:20 1571 1

原创 内核网络数据发送流程

为了了解TOE,以TCP协议为例子。以arm平台为例.首先看一下系统调用过程。 系统调用的时候会触发软中断,通过swi指令跳转到指定的入口函数。软中断属于arm异常模式的一种。在linux-.3.4 中,异常向量表的定义在entry-armv.S:include “calls.S” .globl __vectors_start__vectors_start: ARM( swi SY

2015-05-05 18:15:44 806

转载 Android平台体系结构中的虚拟机与JAVA中的虚拟机有什么不同

参考  http://zhidao.baidu.com/link?url=QSBPc9CmZF34l98BGnC_TrcFrRljHsb8vej9ravk2cGiiXZd9n1Kw95pzXHoSc4SoPZIhiPYdKJe6dP_wzfLKa参考 http://www.it165.net/pro/html/201403/11158.htmlAndroid

2015-05-04 11:55:39 2488

原创 Linux 内核启动过程--head.S(arch/xxx/kernel下的)

由上篇的分析可以知道,uImage是zImage加上64字节的头信息得到的,而zImage又是compressed下的vmlinux经过objcopy得到的,compressed下的vmlinux是由vmlinux.lds、 head.S 和 piggy.gzip.S misc.c编译而成的,其实就是在piggy.gzip中添加了解压代码。piggy.gzip是Image经过gzip -n -f -

2015-04-04 18:33:40 3028 1

原创 Linux 内核启动过程分析----zImage自解压

要想移植内核,肯定是要知道内核的启动过程的,包括协处理器的操作。这对我们理解ARM工作方式、MMU配置,中断是很有帮助的。最近写代码太少,有时间研究内核了。下面是我个人主观对内核启动过程的分析,如有不同,请提出探讨,共同进步! 上一篇分析过了,uboot引导的uImage,最先执行的函数的是由arch/arm/boot/compressed下的vmlinx.lds文件决定的。它就是_sta

2015-04-04 12:01:52 1653 1

原创 linux 内核 编译过程

作为一个linux的驱动工程师,总想在简历上写上"熟悉uboot/内核启动流程",可惜万一面试官问道,菜鸟我的实力还不足以应付面试。因此需要把内核启动流程仔细研究一下。uboot的启动过程这里不多说了,根据uboot的bootm执行过程可以知道,uboot在执行了 theKernel (0, machid, bd->bi_boot_params);就把剩下的任务交给了kernel。ker

2015-04-03 15:04:55 1948 1

原创 Linux ARM 下C嵌套汇编

在C中嵌套汇编的作用: 1) 汇编执行的代码效率更高; 2) 某些操作使用汇编编写代码更方便,如对协处理器的操作;那么如何在C中嵌套汇编呢? 基本语法: asm volatile (“code” : output : input : modify describtion); 如: asm volatile( “asm instruction \n”

2015-04-02 14:33:21 1136

原创 Linux内核I2C总线架构

总线是将设备与驱动联系在一起的纽带。 如果一个设备与驱动彼此绑在了一起,通过sys目录下的文件信息能看出其绑定的驱动/设备对象。 如:~# ls /sys/bus/i2c/drivers/ad-7441/ -llrwxrwxrwx 1 root root 0 Jan 1 00:07 2-0070 -> ../../../../devices/platfo

2015-03-24 18:33:11 2294 1

原创 module_init/subsys_initcall/postcore_initcall 执行顺序。

在看i2c_init的时候,发现 postcore_initcall(i2c_init);在modul_init之前肯定会执行的。 查看他与module_init的区别. 在init.h中定义:ifndef MODULEdefine postcore_initcall(fn) __define_initcall(“2”,fn,2)define subsys_initcall(fn)

2015-03-21 16:07:36 1192

原创 platform总线

platform 设备的注册、注销函数 int platform_device_register(struct platform_device *pdev) void platform_device_unregister(struct platform_device *pdev)platform driver的注册注销函数原型 int platform_driver_register(stru

2015-03-21 14:59:41 673

原创 stmmac probe 过程

本文以海思3535的stmmac驱动注册过程为例,介绍网络驱动探测、网络设备探测过程。1.由于我们使用的是以太网,直接用alloc_etherdev()函数返回一个struct net_device的地址ndev。 在alloc_ether的过程中,会把ndev->dev->name赋值为“eth%” 2. 第一步成功后,获取STMMAC的资源,包括内存、中断。 3. 初始化mac信息

2015-03-19 15:36:23 4242

转载 内核-虚拟文件系统

概述 虚拟文件系统(VFS)是linux内核和具体I/O设备之间的封装的一层共通访问接口,通过这层接口,linux内核可以以同一的方式访问各种I/O设备。虚拟文件系统本身是linux内核的一部分,是纯软件的东西,并不需要任何硬件的支持。 虚拟文件系统又称虚拟文件系统转换(Virual Filesystem Switch ,简称VFS)。说它虚拟,是因为它所有的数据

2015-03-12 15:47:06 524

转载 exit、_exit,return的区别

转自1. exit用于结束正在运行的整个程序,它将参数返回给OS,把控制权交给操作系统;而return 是退出当前函数,返回函数值,把控制权交给调用函数。2. exit是系统调用级别,它表示一个进程的结束;而return 是语言级别的,它表示调用堆栈的返回。3. 在main函数结束时,会隐式地调用exit函数,所以一般程序执行到main()结尾时,则结束主进程。exit将删除进程使

2014-08-10 09:49:39 596

转载 fork()与vfock()

转自:http://blog.csdn.net/jianchi88/article/details/6985326fork()与vfock()都是创建一个进程,那他们有什么区别呢?总结有以下三点区别: 1.  fork  ():子进程拷贝父进程的数据段,代码段     vfork ( ):子进程与父进程共享数据段 2.  fork ()父子进程的执行次序不确定     vf

2014-08-10 09:39:39 532

libsodium中文版本

Sodium是一个现代易于使用的软件库, 它可以用来做加密、 解密、 签名、 口令Hash以及更多的事情。它是一个可移植的、 可交叉编译的、 可安装的基于NaCl开发的加密库, 具有兼容的API以及扩展的API, 来进一步提高可用性。 它的目标是提供构建更高级加密工具所需的所有核心操作。 Sodium支持各种编译器和操作系统, 包括Windows(MinGW或Visual Studio, x86和x86_64) 、 iOS和Android。 这个设计选择强调安全性, “魔术常量”(magic constants)有明确的理论基础。 尽管强调了高安全性, 但是与NIST标准的大多数实现相比, 原语的速度要快得多。

2017-09-21

dspsapk_dspsipa

dsps.apk and dsps.ipa

2016-03-18

蓝牙常见uuid和gatt状态码

手机蓝牙各类服务对应的UUID和蓝牙连接,收发数据常见的GATT错误。

2016-03-18

AT24Cxx 系列芯片介绍及对比

文档对AT24WC01/02/04/08/16/256 1K/2K/4K/8K/16K位串行E2PROM 的芯片进行对比和介绍。

2014-02-27

Linux设备驱动开发第三版

Linux设备驱动开发第三版,中文。原著:Jonathan Corbet,Alessandro Rubini,Greg Kroah-Hartman,由 quickwhale 翻译的简体中文版。

2013-11-10

ARM体系结构与编程.pdf

ARM体系结构与编程,清华大学出版社,大学教材。

2013-03-21

V4L2的视频驱动/应用层开发

基于V4L2的视频驱动开发,详细介绍了V4L2驱动模块与应用层的调用关系,应用层IOCTL命令参数详解,做摄像头驱动、或摄像头应用开发的均可适用。

2013-03-21

GS2970.pdf

SDI,10bit/20bit,register map,refrence design.

2013-03-21

红外线数据通讯协议的实现

红外通信技术和网络技术正日益发展为网络化,信息化建设的一种标准技术,国际上正在对此开展普遍的研究和开发。IrDA国际标准协议的出现,为红外通信的标准化和不断成熟打下了基础。如何掌握和利用红外数字通信技术,与国际接轨,使我国的信息产品具有标准的红外通信能力,使我国通信技术研究的一个重要课题。

2012-11-08

I2C协议.pdf

本书详细介绍I2C协议的总线的接口规范,文档中给出了软件demo,电路连接,总线总裁等介绍。适合软件、硬件开发工程师看。

2012-11-08

I2C总线简介

本文介绍了I2C的时序介绍,连线方式,并给出了demo!很适合准备用GPIO模拟IIC程序员看。

2012-11-08

EDID在数字电视HDMI接口中的应用

一般来说,信号源设备可能是一台桌面计算机或笔记本电脑的显卡,但是现在又多了许多不同的设备,包括高清电视接收机和数字录像机、DVD和蓝光播放器,甚至还有游戏机,这就需要读取EDID并输出相应的视频。EDID最初是为了计算机模拟视频设备上的VGA接口而开发的,现在能够用于DVI、HDMI和DisplayPort。

2011-12-10

VGA接口和 RGB接口

VGA接口和 RGB接口的定义、VGA转 RGB的做法

2011-12-10

ADV7441 HDMI HDCp

ADV7441支持HDMI/dvi PAL NTSC COMP VGA输入

2011-12-10

空空如也

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

TA关注的人

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