摘要: clock source用于为linux内核提供一个时间基线,如果你用linux的date命令获取当前时间,内核会读取当前的clock source,转换并返回合适的时间单位给用户空间。在硬件层,它通常实现为一个由固定时钟频率驱动的计数器,计数器只能单调地增加,直到溢出为止。时钟源是内核计时的基础, 阅读全文
posted @ 2016-09-05 15:42 newapi 阅读(4441) 评论(0) 推荐(1) 编辑
摘要: 对一棵二叉树进行遍历,我们可以采取3中顺序进行遍历,分别是前序遍历、中序遍历和后序遍历。这三种方式是以访问父节点的顺序来进行命名的。假设父节点是N,左节点是L,右节点是R,那么对应的访问遍历顺序如下: 前序遍历 N->L->R 中序遍历 L->N->R 后序遍历 L->R->N /********* 阅读全文
posted @ 2016-09-05 15:38 newapi 阅读(26703) 评论(6) 推荐(4) 编辑
摘要: 我们知道,SPI数据传输可以有两种方式:同步方式和异步方式。所谓同步方式是指数据传输的发起者必须等待本次传输的结束,期间不能做其它事情,用代码来解释就是,调用传输的函数后,直到数据传输完成,函数才会返回。而异步方式则正好相反,数据传输的发起者无需等待传输的结束,数据传输期间还可以做其它事情,用代码来 阅读全文
posted @ 2016-09-05 15:34 newapi 阅读(684) 评论(0) 推荐(0) 编辑
摘要: 通过第一篇文章,我们已经知道,整个SPI驱动架构可以分为协议驱动、通用接口层和控制器驱动三大部分。其中,控制器驱动负责最底层的数据收发工作,为了完成数据的收发工作,控制器驱动需要完成以下这些功能:1. 申请必要的硬件资源,例如中断,DMA通道,DMA内存缓冲区等等;2. 配置SPI控制器的工作模式和 阅读全文
posted @ 2016-09-05 15:33 newapi 阅读(3116) 评论(0) 推荐(0) 编辑
摘要: 通过上一篇文章的介绍,我们知道,SPI通用接口层用于把具体SPI设备的协议驱动和SPI控制器驱动联接在一起,通用接口层除了为协议驱动和控制器驱动提供一系列的标准接口API,同时还为这些接口API定义了相应的数据结构,这些数据结构一部分是SPI设备、SPI协议驱动和SPI控制器的数据抽象,一部分是为了 阅读全文
posted @ 2016-09-05 15:32 newapi 阅读(4282) 评论(0) 推荐(1) 编辑
摘要: SPI是"Serial Peripheral Interface" 的缩写,是一种四线制的同步串行通信接口,用来连接微控制器、传感器、存储设备,SPI设备分为主设备和从设备两种,用于通信和控制的四根线分别是: CS 片选信号 SCK 时钟信号 MISO 主设备的数据输入、从设备的数据输出脚 MOSI 阅读全文
posted @ 2016-09-05 15:31 newapi 阅读(848) 评论(0) 推荐(1) 编辑
摘要: C语言中没有输入输出语句,所有的输入输出功能都用 ANSI C提供的一组标准库函数来实现。文件操作标准库函数有: 文件的打开操作 fopen 打开一个文件 文件的关闭操作 fclose 关闭一个文件 文件的读写操作 fgetc 从文件中读取一个字符 fputc 写一个字符到文件中去 fgets 从文 阅读全文
posted @ 2016-09-05 15:28 newapi 阅读(295) 评论(0) 推荐(0) 编辑
摘要: Linux网络编程API函数初步剖析 今天我们来分析一下前几篇博文中提到的网络编程中几个核心的API,探究一下当我们调用每个API时,内核中具体做了哪些准备和初始化工作。 1、socket(family,type,protocol) 当我们在开发网络应用程序时,使用该系统调用来创建一个套接字。该AP 阅读全文
posted @ 2016-09-05 15:20 newapi 阅读(426) 评论(0) 推荐(0) 编辑
摘要: ps -ef是查看所有的进程,然后用grep筛选出你要的信息。 eg. 阅读全文
posted @ 2016-09-05 15:17 newapi 阅读(3085) 评论(0) 推荐(0) 编辑
摘要: Vi编辑器有一些选项设置可以帮助人们更好的使用。 在vi中选项分为两种: 1、 开关选项,如果要打开这类选项就使用ex命令——:set 选项;如果要关闭这类选项就是用ex命令——:set no选项(注意no和选项之间没有空格)。 2、 字符串选项,设置这类选项的格式为使用ex命令——:set 选项= 阅读全文
posted @ 2016-09-05 15:13 newapi 阅读(156) 评论(0) 推荐(0) 编辑
摘要: Problem A: 2016 Description 给出正整数 n 和 m,统计满足以下条件的正整数对 (a,b) 的数量: 1. 1≤a≤n,1≤b≤m; 2. a×b 是 2016 的倍数。 给出正整数 n 和 m,统计满足以下条件的正整数对 (a,b) 的数量: 1. 1≤a≤n,1≤b≤ 阅读全文
posted @ 2016-09-05 15:04 newapi 阅读(129) 评论(0) 推荐(0) 编辑
摘要: 最近比较无聊,为了找点事干,就花了两天时间把Glide的源码大概看了一下。刚开始看Glide的源码头脑还是比较乱的,因为作者引入了几个概念,又大量用了泛型,如果不了解这些概念读起代码来就比较痛苦,我也没有详细看各种实现细节的东西,只是了解了下这个框架的大概样子,在这篇文章里,我会介绍下Glide中的 阅读全文
posted @ 2016-09-05 14:56 newapi 阅读(97) 评论(0) 推荐(0) 编辑
摘要: 博客引用书单 索引 0 A、B、C、D、E、F、G H、I、J、K、L、M、N O、P、Q、R、S、T、 U、V、W、X、Y、Z 0 1984(电子版,1984) 返回目录 A 安全软件开发之道(构建安全的软件) (Building Secure Software,官网) 暗时间 Android安全 阅读全文
posted @ 2016-09-05 14:46 newapi 阅读(136) 评论(1) 推荐(0) 编辑
摘要: 13.内存管理 13.1.引言 Linux对物理内存的描述机制有两种:UMA和NUMA。Linux把物理内存划分为三个层次来管理:存储节点(Node)、管理区(Zone)和页面 (Page)。UMA对应一致存储结构,它只需要一个Node就可以描述当前系统中的物理内存,但是NUMA的出现打破了这种平静,此时需要多个 Node,它们被统一定义为一个名为discontig_no... 阅读全文
posted @ 2016-09-05 11:38 newapi 阅读(537) 评论(0) 推荐(0) 编辑
摘要: 13.内存管理 13.1.引言 Linux对物理内存的描述机制有两种:UMA和NUMA。Linux把物理内存划分为三个层次来管理:存储节点(Node)、管理区(Zone)和页面 (Page)。UMA对应一致存储结构,它只需要一个Node就可以描述当前系统中的物理内存,但是NUMA的出现打破了这种平静,此时需要多个 Node,它们被统一定义为一个名为discontig_no... 阅读全文
posted @ 2016-09-05 11:27 newapi 阅读(521) 评论(0) 推荐(0) 编辑
摘要: , GCC特性之__init修饰解析 - kasalyn的专栏 - 博客频道 - CSDN.NET GCC特性之__init修饰解析 在driver文件中经常看到"__init"修饰的代码,那么__init标记有什么意义?先看下面这段英文说明:(include/linux/init... 阅读全文
posted @ 2016-09-05 10:51 newapi 阅读(1602) 评论(0) 推荐(0) 编辑
摘要: usb host和device的关系 疑问1:我们通常所用的u盘应该是usbdevice吧?我想这个不用多说,呵呵。 ===============恩.============== 疑问2:我们通常看到的u盘里面的构造是否也是总线结构的,比如有一个usb总线什么的? =============内部就没有USB总线了。可以是一个MCU控制一个存储芯片(例如FLASH)和USB接口芯片。也可以是其... 阅读全文
posted @ 2016-09-05 10:49 newapi 阅读(2516) 评论(0) 推荐(0) 编辑