- 博客(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
501
原创 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
12883
转载 检测sd卡,常用intent总结
版权声明:本文遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。本文链接:https://blog.youkuaiyun.com/Prohackers/article/details/810015701、public static final String ACTION_MEDIA_REMOVED = "android.intent.action.MEDIA_REMOVED"...
2019-09-19 16:07:39
738
转载 linux内核注意事项
转载自 https://blog.youkuaiyun.com/lbaihao/article/details/495085351) 驱动中的延时语句一般禁止使用mdelay(),msleep的话特别是较短10~20ms的时候常常会因为系统调度变成更长的时间,精度较差,需要较为精确的ms级别延时请使用usleep_range(a, b),比如原来mdelay(1)、mdelay(10)可改为usleep_...
2019-04-17 10:52:24
318
转载 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
776
原创 android LocalSocket与Binder区别
Binder进程间通信为单向的,如果想双向需要建立两条binder通道LocalSocket通信为双向的
2018-09-06 11:46:17
1498
转载 #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
1257
转载 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
382
转载 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
449
转载 示波器的触发模式
示波器的“触发”就是使得示波器的扫描与被观测信号同步,从而显示稳定的波形。为满足不同的观测需要,需要不同的“触发模式”。示波器的基本触发模式有三种: 自动模式(Auto),在这种模式下,当触发没有发生时,示波器的扫描系统会根据设定的扫描速率自动进行扫描;而当有触发发生时,扫描系统会尽量按信号的频率进行扫描,所以在这种模式下不论触发条件是否满足,示波器都会产生扫描,都可以在屏幕上可以看到有变化...
2018-05-10 10:25:26
2162
原创 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
383
原创 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
950
1
原创 MOS管栅级一定不能悬空!!!!
MOS管栅级一定不能悬空原因:MOS管每一级之间都会产生感应电容G极同S极D极可看成绝缘的,G极悬空后,感应电压没有释放回路,从而控制mos管导通。MOS管前端电压不受控制直接加在后端电路上了。...
2018-04-12 14:05:43
13646
1
转载 STM32系列单片机特色
1、ARM最新的Cortex-M3内核。优先级抢占的中断控制器,支持中断自动嵌套,硬件完成现场保护与恢复,中断嵌套时,只需保护和恢复一次现场,即使在恢复现场的时候再次中断也不需要再次保护现场,只需6个clk的调整时间。 2、居然只需7个滤波电容就能构成最小系统 3、外设的引脚居然可以重影射 4、RAM居然可以通过位绑定技术按位来访问 5、居然装备了可编程的掉电监测器 6、居然有带电池供电...
2018-04-12 13:39:30
2697
原创 什么时候需要设置波特率
波特率一般是在硬件异步通信时需要指定的,即硬件上没有同步时钟线(CLK),正因为没有时钟线做同步,所以发送方与接收发需要设置发送与接收波特率,并且发送与接收波特率必须一致,才能保证数据无误。目前接触到需要设置波特率的硬件接口为:1)UART接口2) CAN接口3) SPI的quad模式,因为quad模式时spi的4个线(MOSI、MISO、CLK、CS)都作为数据线(半双工),此时无CLK...
2018-03-28 17:14:08
3886
原创 调整kernel_space与user_space的内存空间
通过修改.config里面的如下内容来达到调整linux kernel_space与user_space的内存空间的目的CONFIG_VMSPLIT_3G=y 内核空间大小CONFIG_PAGE_OFFSET=0xC0000000 内核空间起始地址
2018-02-07 13:38:32
1180
原创 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
1702
原创 环形缓冲区实现总结
环形缓冲区的数据结构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
1649
原创 android 开发细节
1. 在Activity上下文之外启动Activity需要给Intent设置FLAG_ACTIVITY_NEW_TASK标志,不然会报异常。
2017-12-27 17:24:41
359
转载 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
359
原创 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
435
转载 linux下操作GPIO
linux下操作GPIO2016-04-14 19:01:10来源:优快云作者:ioir123ju97人点击在嵌入式设备中对GPIO的操作是最基本的操作。一般的做法是写一个单独驱动程序,网上大多数的例子都是这样的。其实linux下面有一个通用的GPIO操作接口,那就是我要介绍的 “/sys/class/gpio” 方式。首先,看看系统中有没有“/sys/class/gpi
2017-12-06 11:22:58
1084
1
原创 Linux字符设备节点创建讲解
register_chrdev注册完字符设备之后,需要手动创建节点,misc_register注册的设备不需要手动创建节点,创建设备节点的关键就是device_add函数,该函数里面调用了devtmpfs(udev不会创建节点,udev在最新的内核里只负责动态加载驱动)系统函数实现创建节点,misc子系统先后调用了class_create, register_chrdev,device_creat
2017-12-06 11:22:01
798
转载 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
2272
原创 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
1251
转载 内核模块加载顺序详解
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
3748
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
1609
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
379
原创 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
913
转载 linux pgrep命令的使用
pgrep 是通过程序的名字来查询进程的工具,一般是用来判断程序是否正在运行。在服务器的配置和管理中,这个工具常被应用,简单明了; 用法: #ps 参数选项 程序名 常用参数 -l 列出程序名和进程ID;-o 进程起始的ID;-n 进程终止的ID; 举例: [root@localhost ~]#
2017-12-05 16:43:07
27843
原创 linux常用库函数
1. setenv(), getenv() 可以用来做全局传参首先要说明的是,通过此函数并不能添加或修改 shell 进程的环境变量,或者说通过setenv函数设置的环境变量只在本进程,而且是本次执行中有效。如果在某一次运行程序时执行了setenv函数,进程终止后再次运行该程序,上次的设置是无效的,上次设置的环境变量是不能读到的。例:void main() { set
2017-12-05 11:11:48
2428
原创 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
883
原创 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
5085
转载 如何使用 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
6259
原创 linux驱动中一个驱动代码如何与多个设备之间进行绑定
今天调试linux驱动时遇到了一些问题,现记录下来以便以后查阅和与大家分享我的心得。 我们在做linux驱动开发时往往会遇到这样的一个问题,即多个兼容的设备需要一个相同的驱动,此时我们可以复制两份驱动以供两个设备分别使用,但显然这样做是违背软件工程原则的,linux驱动的开发者已经为我们想到了这一点,linux内核的解决方式如下。 1.第一
2015-03-28 16:12:10
1110
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人