自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

转载 Android Input设备debug技巧

一、驱动层检查是否有点上报adb shell getevent -l /dev/input/eventX检查input设备支持的属性值adb shell getevent -i /dev/input/eventX二、Native层检查驱动上报的点是否被InputReader转发给上层在TouchInputMapper::sync(nsecs_t when)函数中,打印相...

2020-02-27 20:09:58 410

原创 STM32F103RCT6 各个字段的含义: 

STM32F103RCT6各个字段的含义:STM32(芯片系列):STM32代表ARMCortex-M内核的32位微控制器103(芯片子系列):101基本型,102USB基本型(USB2.0),103代表增强型系列,105或107互联型F(产品类型):F代表通用系列R(引脚数量):T=36,C=48,R=64,V=100,Z=144C(闪存容量):4=16K,6...

2020-02-17 15:24:55 11659

转载 检测sd卡,常用intent总结

版权声明:本文遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。本文链接:https://blog.csdn.net/Prohackers/article/details/810015701、public static final String ACTION_MEDIA_REMOVED = "android.intent.action.MEDIA_REMOVED"...

2019-09-19 16:07:39 644

转载 linux内核注意事项

转载自 https://blog.csdn.net/lbaihao/article/details/495085351) 驱动中的延时语句一般禁止使用mdelay(),msleep的话特别是较短10~20ms的时候常常会因为系统调度变成更长的时间,精度较差,需要较为精确的ms级别延时请使用usleep_range(a, b),比如原来mdelay(1)、mdelay(10)可改为usleep_...

2019-04-17 10:52:24 254

转载 ALSA声卡驱动中的DAPM详解之三:如何定义各种widget

转载自:https://www.xuebuyuan.com/2153086.htmlALSA声卡驱动中的DAPM详解之三:如何定义各种widget2014年09月05日 ⁄ 综合 ⁄ 共 16651字 ⁄ 字号 小 中 大 ⁄ 评论关闭上一节中,介绍了DAPM框架中几个重要的数据结构:snd_soc_dapm_widget,snd_soc_dapm_path,snd_soc_dapm_...

2018-11-28 15:00:46 680

原创 android LocalSocket与Binder区别

Binder进程间通信为单向的,如果想双向需要建立两条binder通道LocalSocket通信为双向的

2018-09-06 11:46:17 1422

原创 PAL制与NTSC制区别

          PAL       NTSC帧率      25        30扫描方式 先奇后偶    先偶后奇分辨率   720x576    720x486

2018-06-19 14:58:38 6313

转载 #ifdef 和 #if defined 的区别

#ifdef 和 #if defined 的区别在于,后者可以组成复杂的预编译条件,比如#if defined (AAA) && defined (BBB)xxxxxxxxx#endif#if defined (AAA) || VERSION > 12xxxxxxxxx#endif而#ifdef 就不能用上面的用法,也就是说,当你要判断单个宏是否定义时#ifdef 和 #if...

2018-06-15 10:38:04 1179

转载 linux 下串口编程VTIME和VMIN的设置

转载自 https://www.cnblogs.com/andtt/archive/2011/08/19/2145639.htmllinux 下串口编程VTIME和VMIN的设置VTIME定义要求等待的时间量(取值不能大于cc_t)。VMIN定义了要求等待的最小字节数。options.c_cc[VTIME] = X;   //设置从获取到1个字节后开始计时的超时时间options.c_cc[VMI...

2018-06-12 13:39:36 321

转载 Android touchscreen virtualkey驱动

转载自 https://www.cnblogs.com/aceheart/archive/2012/10/27/2742309.html最近将Android touchscreen virtualkey驱动,向上层report keyvalue 改成 向上层report X,Y的坐标值。对sysfs文件系统进行了一番研究。virtualkey 是基于sysfs文件系统实现的。上层要想访问到virt...

2018-06-08 20:47:20 403

转载 示波器的触发模式

示波器的“触发”就是使得示波器的扫描与被观测信号同步,从而显示稳定的波形。为满足不同的观测需要,需要不同的“触发模式”。示波器的基本触发模式有三种:    自动模式(Auto),在这种模式下,当触发没有发生时,示波器的扫描系统会根据设定的扫描速率自动进行扫描;而当有触发发生时,扫描系统会尽量按信号的频率进行扫描,所以在这种模式下不论触发条件是否满足,示波器都会产生扫描,都可以在屏幕上可以看到有变化...

2018-05-10 10:25:26 2000

原创 alsa主要数据结构

alsa主要数据结构codecstruct snd_soc_codec_driverstruct snd_kcontrol_newstruct snd_soc_dapm_widgetstruct snd_soc_dapm_routestruct snd_soc_dai_driverstruct snd_soc_dai_opsplatformsnd

2018-05-02 16:02:36 298

原创 v4l2细节2

关键结构体、宏定义、枚举enum v4l2_int_ioctl_num {    /*     *     * "Proper" V4L ioctls, as in struct video_device.     *     */    vidioc_int_enum_fmt_cap_num = 1,    vidioc_int_g_fmt_cap_num,    vidioc_int_s_fm...

2018-04-20 15:27:09 821 2

原创 MOS管栅级一定不能悬空!!!!

MOS管栅级一定不能悬空原因:MOS管每一级之间都会产生感应电容G极同S极D极可看成绝缘的,G极悬空后,感应电压没有释放回路,从而控制mos管导通。MOS管前端电压不受控制直接加在后端电路上了。...

2018-04-12 14:05:43 12976 1

转载 STM32系列单片机特色

1、ARM最新的Cortex-M3内核。优先级抢占的中断控制器,支持中断自动嵌套,硬件完成现场保护与恢复,中断嵌套时,只需保护和恢复一次现场,即使在恢复现场的时候再次中断也不需要再次保护现场,只需6个clk的调整时间。  2、居然只需7个滤波电容就能构成最小系统  3、外设的引脚居然可以重影射  4、RAM居然可以通过位绑定技术按位来访问  5、居然装备了可编程的掉电监测器  6、居然有带电池供电...

2018-04-12 13:39:30 2582

原创 什么时候需要设置波特率

    波特率一般是在硬件异步通信时需要指定的,即硬件上没有同步时钟线(CLK),正因为没有时钟线做同步,所以发送方与接收发需要设置发送与接收波特率,并且发送与接收波特率必须一致,才能保证数据无误。目前接触到需要设置波特率的硬件接口为:1)UART接口2) CAN接口3) SPI的quad模式,因为quad模式时spi的4个线(MOSI、MISO、CLK、CS)都作为数据线(半双工),此时无CLK...

2018-03-28 17:14:08 3534

原创 调整kernel_space与user_space的内存空间

通过修改.config里面的如下内容来达到调整linux kernel_space与user_space的内存空间的目的CONFIG_VMSPLIT_3G=y 内核空间大小CONFIG_PAGE_OFFSET=0xC0000000 内核空间起始地址

2018-02-07 13:38:32 1081

原创 usblib简单使用

struct libusb_device_handle *devh = NULL;      libusb_init(NULL);    if (r         printf("failed to initialise libusb\r\n");    }    devh = libusb_open_device_with_vid_pid(NULL, 0x0930, 0

2018-02-06 13:12:47 1618

原创 环形缓冲区实现总结

环形缓冲区的数据结构1.typedef struct{    char buf[DATA_LENGTH];    char head;    char tail;    char length;} ring_buf或者2.typedef struct{    char buf[DATA_LENGTH];    char head;  

2018-01-04 17:28:02 1518

原创 android 开发细节

1. 在Activity上下文之外启动Activity需要给Intent设置FLAG_ACTIVITY_NEW_TASK标志,不然会报异常。

2017-12-27 17:24:41 278

转载 android service 和 broadcast 进程问题

android service 和 broadcast 进程问题Caution: A service runs in the main thread of its hosting process—the service does not create its own thread and does not run in a separate process (unless you specif

2017-12-26 16:58:09 311

原创 v4l2细节

struct v4l2_file_operations {    long (*ioctl) (struct file *, unsigned int, unsigned long);    long (*unlocked_ioctl) (struct file *, unsigned int, unsigned long);};struct video_device {

2017-12-21 17:02:03 370

转载 linux下操作GPIO

linux下操作GPIO2016-04-14 19:01:10来源:CSDN作者:ioir123ju97人点击在嵌入式设备中对GPIO的操作是最基本的操作。一般的做法是写一个单独驱动程序,网上大多数的例子都是这样的。其实linux下面有一个通用的GPIO操作接口,那就是我要介绍的 “/sys/class/gpio” 方式。首先,看看系统中有没有“/sys/class/gpi

2017-12-06 11:22:58 1024 1

原创 Linux字符设备节点创建讲解

register_chrdev注册完字符设备之后,需要手动创建节点,misc_register注册的设备不需要手动创建节点,创建设备节点的关键就是device_add函数,该函数里面调用了devtmpfs(udev不会创建节点,udev在最新的内核里只负责动态加载驱动)系统函数实现创建节点,misc子系统先后调用了class_create, register_chrdev,device_creat

2017-12-06 11:22:01 724

转载 udev与devtmpfs

早期的作法應該是先建立一份 static /dev 提供系統 booting 時使用,當系統 booting 完成後再掛載 tmpfs 到 /dev 上.由 udevadm 重新 trigger kernel,再用 udev 動態建立相對應的 device node 在 /dev 裡在 linux kernel 2.6.32 後使用 devtmpfs 之後. Udev 並不負責 cre

2017-12-06 11:17:47 2146

原创 usb host发送数据api使用

linux  usb host 控制传输,首先需要填充urb,然后发送数据,在数据发送成功之前, 当前函数需要阻塞(wait_for_completion)数据成功发送之后,通过回调函数结束阻塞(complete)usb的控制传输有两套函数可以调用1.usb_fill_control_urb  ,usb_submit_urb, wait_for_completion usb_f

2017-12-06 11:15:00 1147

转载 内核模块加载顺序详解

Linux内核为不同驱动的加载顺序对应不同的优先级,定义了一些宏: include\linux\init.h#define pure_initcall(fn)   __define_initcall("0",fn,1)#define core_initcall(fn)   __define_initcall("1",fn,1) #define core_initcall_s

2017-12-06 10:46:47 3362 1

原创 linux的电源管理

linux的电源管理:linux中的电源需要指定supply与consumerreg_usb_otg_vbus: usb_otg_vbus {    compatible = "regulator-fixed";    regulator-name = "usb_otg_vbus";    regulator-min-microvolt = ;    regulat

2017-12-06 10:44:53 1425 1

原创 fsl平台anroid uboot配置

fsl android uboot使用注意点BoardConfig.mk里面的TARGET_BOOTLOADER_CONFIG有几项,最终生成的uboot镜像就有几个TARGET_BOOTLOADER_CONFIG里的选项名字,要与boards.cfg里面的子项相对应,如果是uboot(2015)需要与configs里面的具体配置文件的名字对应

2017-12-06 10:36:56 310

原创 sscanf解析字符串

贴一段android的代码,一看就懂以下代码为vold检测u盘是否挂载的代码,通过查看path是否存在,来确定u盘是否挂载成功sscanf(line, "%255s %255s %255s\n", device, mount_path, rest);为解析字符串的操作bool Volume::isMountpointMounted(const char *path) {   

2017-12-05 17:14:33 840

转载 linux pgrep命令的使用

pgrep 是通过程序的名字来查询进程的工具,一般是用来判断程序是否正在运行。在服务器的配置和管理中,这个工具常被应用,简单明了; 用法: #ps 参数选项   程序名 常用参数 -l  列出程序名和进程ID;-o  进程起始的ID;-n  进程终止的ID; 举例: [root@localhost ~]#

2017-12-05 16:43:07 27685

原创 linux常用库函数

1. setenv(),  getenv()  可以用来做全局传参首先要说明的是,通过此函数并不能添加或修改 shell 进程的环境变量,或者说通过setenv函数设置的环境变量只在本进程,而且是本次执行中有效。如果在某一次运行程序时执行了setenv函数,进程终止后再次运行该程序,上次的设置是无效的,上次设置的环境变量是不能读到的。例:void main() {    set

2017-12-05 11:11:48 2339

原创 ubuntu平台运行cooja的环境配置

下载contiki源码,如果不用git下载的话会出现缺少mspsim的问题git clone --recursive https://github.com/contiki-os/contiki.git解决仿真cooja时遇到的缺少msp430-gcc的问题 sudo apt-get -o Dpkg::Options::="--force-overwrite" install g

2017-11-30 12:11:00 819

原创 alsa生成/dev/snd/下设备节点函数调用流程

alsa生成/dev/snd/下设备节点函数调用流程snd_soc_register_card()-> snd_soc_instantiate_card()->  snd_card_register()->   snd_device_register_all()->    dev->ops->dev_register()->(函数指针)     snd_pcm_de

2017-11-23 17:05:34 5031

转载 如何使用 objdump 查看源代码

如何使用 objdump 查看源代码1. 在编译时必须使用-g选项,-g意为debug,一般可以修改源代码的 Makefile来实现 如:      CC =$(CROSSCOM_PILE)gcc    为      CC =$(CROSSCOM_PILE)gcc   -g    使成生的vmlinux中含有debug信息2.  所有生成   .o  的  rule  中再

2017-11-20 12:10:08 5728

原创 linux驱动中一个驱动代码如何与多个设备之间进行绑定

今天调试linux驱动时遇到了一些问题,现记录下来以便以后查阅和与大家分享我的心得。              我们在做linux驱动开发时往往会遇到这样的一个问题,即多个兼容的设备需要一个相同的驱动,此时我们可以复制两份驱动以供两个设备分别使用,但显然这样做是违背软件工程原则的,linux驱动的开发者已经为我们想到了这一点,linux内核的解决方式如下。             1.第一

2015-03-28 16:12:10 976

空空如也

空空如也

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

TA关注的人

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