摘要: 一:uloop概述 uloop有三个功能: 文件描述符触发事件的监控, timeout定时器处理, 当前进程的子进程的维护 二: uloop的整体框架 1: /** 2: * 初始化事件循环 3: *主要工作是poll_fd = epoll_create(32);/* 创建一个epoll的文件描述符 阅读全文
posted @ 2016-07-06 16:27 夕相待 阅读(14926) 评论(0) 推荐(1) 编辑
摘要: 1.看原理图中知芯片上66引脚控制一个LED2.在Datasheet中找出GPIO pin3.在ProgrammingGuid System Contrl中找到GPIO控制寄存器地址:4.控制GPIO的寄存器偏移地址是,起始地址是,但这个起始地址是物理地址,因此还要确定相应的虚拟地址(这个可以根据m... 阅读全文
posted @ 2014-08-05 14:25 夕相待 阅读(3424) 评论(4) 推荐(0) 编辑
摘要: C语言序列点总结 2013年11月21于浙大华家池C 语言副作用:(side effect)是指对数据对象或者文件的修改。例如,语句 v = 99;的副作用是把 v 的值修改成 99。C语言序列点:(sequence point)是指程序运行中的一个特殊的时间点,在该点之前的所有副作用已经结束,并且后续的副作用还没发生,而两个序列点之间所有的表达式或代码执行顺序是未定义的。1). 一个重要的序列点在完整表达式的结尾(即分号),所谓完整表达式,就是说这个表达式不是子表达式。而所谓的子表达式,则是指表达式中的表达式。也就是说,C 语句中由赋值、自增或者自减等引起的副作用在分号(序列点)之前必须.. 阅读全文
posted @ 2013-11-22 11:12 夕相待 阅读(2061) 评论(10) 推荐(1) 编辑
摘要: 1 #include 2 #include 3 #include 4 5 6 #define Test(arg) if(arg == NULL){\ 7 printf("Invalid arg!\n");\ 8 return -1;\ 9 } 10 11 /*单链表的实现可以各有不同,只要该实现,符合链表的定义即可。 12 *单链表最重要的数据结构是元素结点, 13 *最重要的操作是插入结点,删除结点和遍历。 14 *其它的操作基本上是这3个操作的组合,依据具体的要求而定。 15 */ 16 17 /***... 阅读全文
posted @ 2013-08-02 12:56 夕相待 阅读(350) 评论(0) 推荐(0) 编辑
摘要: /**********************头文件数据封装及函数声明****************/#ifndef _S_LIST_H#define _S_LIST_H#include #include #define PRINT printf("LINE: %d\n", __LINE__);/*单链表的实现可以各有不同,只要该实现,符合链表的定义即可。 *单链表最重要的数据结构是元素结点, *最重要的操作是插入结点,删除结点和遍历。 *其它的操作基本上是这3个操作的组合,依据具体的要求而定。*//****************************... 阅读全文
posted @ 2013-08-01 20:22 夕相待 阅读(727) 评论(0) 推荐(0) 编辑
摘要: 一: 这几天使用一款电信的4G网卡,发现了一些问题,所以决定打个pitch来解决问题,顺便把patch的生成与使用学习一下 二:安装patch的管理工具quilt 1. sudo apt-get install quilt 2.配置quilt vim ~/.quiltrc 创建配置文件 1: QUILT_DIFF_ARGS="--no-timestamps... 阅读全文
posted @ 2017-01-12 16:53 夕相待 阅读(2215) 评论(0) 推荐(0) 编辑
摘要: 一:注册platform device 注册一个platfrom device一般需要初始化两个内容,设备占用的资源resource和设备私有数据dev.platfrom_data。设备的resource占用的资源主要包含两个方面:IO内存和IRQ资源信息,有时也包含DMA。 resource结构: 1: struct resource { 2: resource_size_... 阅读全文
posted @ 2016-11-10 14:06 夕相待 阅读(2353) 评论(0) 推荐(0) 编辑
摘要: 一、核心数据结构 串口驱动有3个核心数据结构,它们都定义在1、uart_driver uart_driver包含了串口设备名、串口驱动名、主次设备号、串口控制台(可选)等信息,还封装了tty_driver(底层串口驱动无需关心tty_driver)。 1: struct uart_driver { 2: struct module *owner; ... 阅读全文
posted @ 2016-11-09 17:42 夕相待 阅读(5099) 评论(0) 推荐(0) 编辑
摘要: UART(Universal Asynchronous Receiver and Transmitter)通用异步收发器(异步串行通信口),是一种通用的数据通信协议,它包括了RS232、RS499、RS423、RS422和RS485等接口标准规范和总线标准规范,即UART是异步串行通信口的总称。 UART之间以全双工方式传输数据,最精确的连线方法只有3根电线:TxD用于发送... 阅读全文
posted @ 2016-11-09 16:58 夕相待 阅读(4442) 评论(0) 推荐(0) 编辑
摘要: 一: spidev_init注册spidev 1: static int __init spidev_init(void) 2: { 3: int status; 4: 5: /* Claim our 256 reserved device numbers. Then register a clas 阅读全文
posted @ 2016-11-04 16:28 夕相待 阅读(10622) 评论(0) 推荐(0) 编辑
摘要: 1.定义board设备 1: struct spi_board_info { 2: /* the device name and module name are coupled, like platform_bus; 3: * "modalias" is normally the driver na 阅读全文
posted @ 2016-11-03 17:23 夕相待 阅读(2384) 评论(0) 推荐(0) 编辑
摘要: 一: SPI核心,就是指/drivers/spi/目录下spi.c文件中提供给其他文件的函数,首先看下spi核心的初始化函数spi_init(void)。 1: static int __init spi_init(void) 2: { 3: int status; 4: 5: buf = kmal 阅读全文
posted @ 2016-11-03 16:45 夕相待 阅读(2516) 评论(0) 推荐(0) 编辑
摘要: 一:首先在我的平台注册platform_device,保证能让spi-gpio.c能执行到probe函数。 1: struct spi_gpio_platform_data { 2: unsigned sck; 3: unsigned mosi; 4: unsigned miso; 5: 6: u16 ... 阅读全文
posted @ 2016-11-03 11:06 夕相待 阅读(7153) 评论(0) 推荐(0) 编辑
摘要: 一:SPI简介以及应用 SPI, Serial Perripheral Interface, 串行外围设备接口, 是 Motorola 公司推出的一种同步串行接口技术. SPI 总线在物理上是通过接在外围设备微控制器(PICmicro) 上面的微处理控制单元 (MCU) 上叫作同步串行端口(Sync 阅读全文
posted @ 2016-11-02 17:25 夕相待 阅读(1737) 评论(0) 推荐(0) 编辑
摘要: 1.struct file_operations 字符设备文件接口 1: static int mpu_open(struct inode *inode, struct file *file) 2: { 3: return 0; 4: } 5: 6: 7: 8: static int mpu_close(struct i... 阅读全文
posted @ 2016-10-21 15:14 夕相待 阅读(1143) 评论(0) 推荐(0) 编辑