自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

  • 博客(15)
  • 收藏
  • 关注

原创 wait_event_interruptible返回-ERESTARTSYS(-512)

最近做一个驱动,在等待FPGA结果的时候调用wait_event_interruptible,期望能进入睡眠状态,并且在需要的时候可以使用ctrl+c杀死进程,但是在使用过程中发现wait_event_interruptible一直返回-ERESTARTSYS(-512)值,究其原因是因为在wait_event_interruptible里会调用signal_pending(current)检查当...

2018-09-22 17:53:59 4474

原创 PCIe驱动调试过程中遇到的问题

PCIe驱动和fpga设备调试遇到的问题解决问题1. FPGA设备通过PCIe读取DDR内容失败现象:观察FPGA侧的PCIe核,发现在执行一段时间后,PCIe核发出读存储器请求,不能得到内存的数据;同时系统侧通过lspci -vvv命令发现设备的UESta信息出现overflow标志(RxOF+)。通过与正常系统上的PCIe设备的配置空间内容比较,发现我们设备的DevCtl设置了E...

2018-08-24 12:00:50 5677 1

原创 Linux x86_64/arm 分配大块物理连续内存

Linux x86 分配大于4M空间的内存实现一个PCIe设备驱动,需要分配几个128M的物理连续内存作为DM缓冲区,受制于伙伴系统最多分配4M,所以需要使用到CMA机制,来分配大块的物理连续内存:硬件平台:x86_64 软件平台:CentOs7.4 linux-3.10.0linux在x86下支持cma在x86下linux的swiotlb是使能的,这种情况下cma是不使能的,所以dm...

2018-04-18 20:08:42 2669

原创 ttyUSB串口设备节点生成过程

usbserial和option模块加载时做的事和设备插入后tty设备的注册

2017-03-19 21:37:47 3633

原创 ttyUSB串口设备节点生成过程

usb serial和option模块的初始化和USB串口插入后驱动的工作

2017-03-19 21:26:43 1120

原创 Linux USB子系统(2) 设备、配置、接口、端点

linux usb子系统 设备 配置 接口 设置 端点

2016-12-04 22:35:38 3129

原创 Linux USB子系统(1)-设备、驱动、框架

linux USB子系统 设备 驱动 框架

2016-11-28 23:20:23 2236

原创 select和poll实现及驱动支持

select poll 驱动 实现

2016-11-21 23:47:34 1530

原创 内核Oops信息调试

kernel 内核 模块 调试

2016-11-20 23:45:10 852

原创 linux USB调试

配置内核打开调试选项:Kernel hacking  ---> [*] Debug Filesystem 挂载调试程序文件系统:mount -t debugfs none /sys/kernel/debug抓取总线0上的数据:cat  /sys/kernel/debug/usb/usbmon/0u

2016-11-17 22:31:59 1082

原创 零散的东西

内核unlikely

2016-11-12 20:21:12 384

原创 [linux系统编程]网络编程 服务器多路复用

作为一个命令台使用的服务器:#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #in

2014-01-27 16:53:39 472

原创 [linux系统编程]System V IPC 消息队列

//进程1    int msg_id = -1;    if((msg_id = msgget((key_t)MSG_R_KEY, 0777|IPC_CREAT)) == -1 ) //创建或者获取KEY值的消息队列    {        printf("msgget failure!!!\n");        return (-1);     }      

2014-01-24 11:16:25 714

原创 [linux系统编程]System V IPC 共享内存

用于Linux进程通信共享内存。 int segment_id;    char *shared_memory;        segment_id = shmget((key_t)123457, size, IPC_CREAT | 0644);  //创建或者获取size字节的与KEY值相等的共享内存    if(segment_id == -1)    {

2014-01-24 10:05:47 963

原创 [linux系统编程]System V IPC 信号量做进程间互斥

static int sem_id;int lock_db(){ struct sembuf sops; sops.sem_num = 0; sops.sem_op = -1; sops.sem_flg = SEM_UNDO; //sops.sem_flg = 0; return semop(sem_id, (struct sembuf *)

2014-01-23 10:22:42 469

空空如也

空空如也

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

TA关注的人

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