摘要:
1 #include<stdio.h> 2 #include<time.h> 3 4 int main(int argc, char *argv[]) 5 { 6 time_t rawtime; 7 struct tm *info; 8 char buffer[80]; 9 time( &rawti 阅读全文
摘要:
Linux系统、系统服务 阅读全文
摘要:
Linux驱动、UART、TTY 阅读全文
摘要:
Kernel_3.0.35版本和Kernel_4.1.15版本内核在SPI驱动实现机制的差异 一、Kernel_4.1.15版本 1.SPI控制器驱动(基于NXP处理器平台分析) 入口函数 static int spi_imx_probe(struct platform_device *pdev) 阅读全文
摘要:
一、前言 前面第二篇文章中,我总结了Linux系统下i2c驱动中的适配器驱动,但是一个完整的总线-设备驱动模型应该包含总线驱动和设备驱动,总线驱动也就是前面所总结的i2c适配器驱动,现在再来总结一下i2c设备驱动的具体实现步骤。 二、硬件平台及内核版本 硬件平台:NXP I.MX6Q(四核) Ker 阅读全文
摘要:
前面讲到工作队列是一种可以将工作推后执行的一种机制,当我们希望某个工作以一个固定的周期去执行的时候可以使用延迟的工作队列来实现,通过分析延迟工作队列函数我们发现,它本质上也是通过注册内核定时器来保证这个延迟的时间的, 因此我们也可以使用内核定时器+工作队列的方式来代替延迟的工作队列。不过这种基于内核 阅读全文
摘要:
工作队列是一种可以将我们的工作推后执行的一种机制,在大部分时候,我们并不需要自己建立新的工作队列,而只需要定义工作就可以了,但是还是有必要了解工作队列的创建步骤如下: 1.先定义一个工作队列 static struct workqueue_struct *my_workqueue = NULL; 2 阅读全文
摘要:
前言:这篇文章不会对系统软中断、tasklet、工作队列work queue的内核实现机制进行深入分析,仅仅是谈一下这几种机制的不同以及简单的使用。有描述不对的地方,欢迎大家指出。 说明:在分析具体代码时候,用I.MX6Q平台的串口驱动代码来进行分析,内核版本是3.0.35版本 一、系统软中断 讲软 阅读全文
摘要:
事情描述:前段时间做项目,遇到了一个比较奇怪的问题,应用层下发的数据,经过驱动使用SPI发送到打印头上,数据出现被拉宽的现象。刚开始是怀疑应用层给的数据不及时导致数据输出受到延迟,后来放开串口调试,发现一按下打印,大量通过SPI输出数据的时候,会不断打印调试的语句,如果把调试语句去掉,打印就正常了, 阅读全文
摘要:
前言:标题谈的是多核CPU下绑定某个中断到指定的CPU的方法,但是实际工作中,这个方法可以适配很多种数据接收的情况,所以就记录一下自己之前工作上遇到的具体某一个问题以及解决方法。 之前有一个项目,需要串口接收大量的数据,硬件平台采用的是NXP的I.MX6D系列芯片,双核CPU。实际发现,在接收数据的 阅读全文