自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(19)
  • 资源 (2)
  • 收藏
  • 关注

原创 usb

usb设备逻辑结构:1.设备2.配置3.接口4.端点usb数据通信1.传输 2.事物 3包 4 域

2016-08-31 19:40:17 300

转载 USB子系统

http://blog.csdn.net/leesagacious/article/details/50890858usb_debugfs_initbus_registerbus_register_notifier内核通知链U盘驱动usb_debugfs_init/** 这个函数主要做了一下事情: 在de

2016-08-31 18:43:41 306

转载 "阻塞--中断"驱动模型在i2c在子系统、uart驱动、spi子系统中的实现

最近总结了这个kernel中的这个模型,下面我们 开始欣赏吧。先看i2c中的实现阻塞的过程唤醒的过程实验验证UART中的实现实验验证spi中的实现实验验证我们需要明白的是 : 1. 进程为什么要阻塞 2. 阻塞后又是 在什么时候被唤醒的? 3. 从阻塞到唤醒 这中间的过程 是怎么样的 ? 先上一符图 阻

2016-08-31 18:37:44 335

原创 spi/i2c调用框架

1.板级信息中通过 spi_register_board_info来添加设备drivers/spi/spi.c:    spi_register_board_info        /* 对于每一个spi_master,调用spi_match_master_to_boardinfo */        list_for_each_entry(master, &spi_master_

2016-08-31 14:26:31 401

原创 spi子系统调用流程

spi驱动:1.注册platform_device在arch/arm/mach-s3c2440/smdk2440.c 中注册platform_device ,其中s3c2410_spi_info 作为platform_device.private_data. platform_device.name 为"s3c2410-spi".2:在arch/arm/mach-s3c

2016-08-30 20:31:49 698

转载 module_platform_driver的作用

该函数实际是一个宏,它在include/linux/platform_device.h中定义如下:[cpp] view plain copy  /* module_platform_driver() - Helper macro for drivers that don't do  * anything special in 

2016-08-30 20:27:49 1232

转载 spi驱动

转载地址:http://www.embedu.org/Column/Column367.htm作者:刘洪涛,华清远见嵌入式学院讲师。一、概述基于子系统去开发驱动程序已经是linux内核中普遍的做法了。前面写过基于I2C子系统的驱动开发。本文介绍另外一种常用总线SPI的开发方法。SPI子系统的开发和I2C有很多的相似性,大家可以对比学习。本主题分为两个部分叙述,第一部分介绍基

2016-08-28 18:15:24 398

转载 应用:线程同步

正式开始之前先简单的解释捋捋几对概念同步/异步: 打电话和发短信阻塞/非阻塞:它们是程序在等待消息(无所谓同步或者异步)时的状态.A. 阻塞阻塞调用是指调用结果返回之前,当前线程会被挂起。函数只有在得到结果之后才会返回有人也许会把阻塞调用和同步调用等同起来,实际上他是不同的。对于同步调用来说,很多时候当前线程还是激活的,只是从逻辑上当前函数没有返回而已。

2016-08-28 10:21:25 306

转载 互斥和同步

为什么要用到互斥,是由于cpu调度引起来的,任何一个进程或线程随时都有可能被终止, 运行另一个进程和线程,假如两个进程同时操作一个共享资源(全局变量),就可能引起问题.     驱动里的互斥主要有两种方法:   信号量 和 自旋锁    信号量: (休眠了)        void sema_init (struct semaphore *sem, int val);

2016-08-28 10:10:28 354

原创 字符设备驱动

字符设备驱动内核提供三种注册方法:    *2.6以前老版本注册方式        register_chrdev (unsigned int major, const  char *name, struct file_operations*fops);//他只分配主设备号。从设备号在mknod的时候指定            register_chrdev函数的major参数

2016-08-28 10:02:00 329

转载 lcd驱动

LCD是Liquid  Crystal  Display的简称,也就是经常所说的液晶显示器LCD能够支持彩色图像的显示和视频的播放,是一种非常重要的输出设备 Framebuffer 是Linux系统为显示设备提供的一个接口,它将显示缓冲区抽象,屏蔽图像硬件的底层差异,允许上层应用程序在图形模式下直接对显示缓冲区进行操作 Framebuffer又叫帧缓冲,是L

2016-08-27 21:07:36 453

原创 input输入子系统

输入子系统由驱动层、输入子系统核心、事件处理层三部分组成。一个输入事件,如鼠标移动、键盘按下等通过Driver->Inputcore->Event handler->userspace的顺序到达用户控件的应用程序。    驱动层:将底层的硬件输入转化为统一事件形式,想输入核心(Input Core)汇报。输入子系统核心:承上启下。

2016-08-25 14:13:30 285

原创 字符设备驱动访问原理

1.字符驱动的访问都有一个统一的入口,位于arch/arm/kernel/entry_common.S的207行(我使用的linux-3.4.2)ENTRY(vector_swi)                                                                                   //入口sub sp, sp, #S_FRAM

2016-08-22 16:45:07 276

转载 字符驱动访问过程

1.字符驱动的访问都有一个统一的入口,位于arch/arm/kernel/entry_common.S的207行(我使用的linux-3.4.2)ENTRY(vector_swi)             //入口subsp, sp, #S_FRAME_SIZEstmia sp, {r0 - r12}@ Calling r0 - r12 ARM( add r8, sp,

2016-08-22 16:38:40 218

原创 epoll机制

什么是epollepoll是什么?按照man手册的说法:是为处理大批量句柄而作了改进的poll。当然,这不是2.6内核才有的,它是在2.5.44内核中被引进的(epoll(4) is a new API introduced in Linux kernel 2.5.44),它几乎具备了之前所说的一切优点,被公认为Linux2.6下性能最好的多路I/O就绪通知方法。epoll的接

2016-08-19 21:46:39 375

原创 线程池技术

1:初始化线程池void pool_init (int max_thread_num) 1.1:创建线程池pthread_create (&(pool->threadid[i]), NULL, (void *)thread_routine, NULL); 1.2:执行线程函数void * thread_routine (void *arg) //线程池初始化void pool_in

2016-08-19 18:05:39 237

原创 对 void *(* func)(void *) 的理解

对 void *(* func)(void *) 的理解func是一个 指向 形参为 void* 返回值为 void* 的函数的指针.

2016-08-19 16:18:57 2546 1

原创 sizeof和strlen的区别

sizeof()用来计算内存的strlen用来计算字符长度的。来个具体点的,一看就知道了。char a[] = "hello";sizeof(a) = 6;strlen(a) = 5;sizeof会计算字符结尾的\0strlen 不会计算\0sizeof操作符返回占的空间;而对于一个数组,sizeof返回这个数组所有元素占的总空间。而strlen不区分是数组还是

2016-08-19 10:32:49 252

转载 函数指针与指针函数的区别

一、在学习arm过程中发现这“指针函数”与“函数指针”容易搞错,所以今天,我自己想一次把它搞清楚,找了一些资料,首先它们之间的定义:1、指针函数是指带指针的函数,即本质是一个函数。函数返回类型是某一类型的指针     类型标识符    *函数名(参数表)      int *f(x,y); 首先它是一个函数,只不过这个函数的返回值是一个地址值。函

2016-08-16 14:32:52 244

基于深度学习的文本相似度计算模型和代码

基于深度学习的文本相似度计算模型和代码,亲自跑过可以直接使用,对nlp领域的学习非常有借鉴意义,在智能问答系统上经常会用到。

2020-03-30

基于深度学习的故障诊断模型代码和数据

基于深度学习的故障诊断模型代码和数据,有数据,有源码,可以直接跑通! 亲测可以直接使用,对深度学习和故障诊断应用有一定的借鉴意义,代码注释全面

2020-03-30

空空如也

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

TA关注的人

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