自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(261)
  • 资源 (28)
  • 收藏
  • 关注

原创 INIT_WORK(工作队列的理解)

以前内核里对这个函数是这样定义的 #define INIT_WORK(_work, _func, _data),可以理解为INIT_WORK会在你定义的_work工作队列里面增加一个工作任务,该任务就是_func。_func这个任务会需要一些数据作为参数,这个参数就是通过_data传递的 而现在看驱动的时候你会发现调用INIT_WORK的时候是只有两个参数,去掉了数据的部分。也许你

2012-12-11 10:15:13 2787

原创 多维数组与指针 精析

可以认为 C语言中只有一维数组,没有真正的二维数组。如二维数组 a[3][4]={{1,3,5,7},{9,11,13,15},{17,19,21,23}} ,可以认为是一个 一维数组 : a[3]={ a[0], a[1], a[2] }其中 a[0],a[1],a[2] 又是三个有四个元素的一维数组,   即 a[0]={ 1,3,5,7 },a[1]={ 9,11,13,15

2012-10-26 15:41:34 1277 1

原创 浅谈C中静态变量与全局变量初始化时间

int a;main(){while(1){   static b=1;   a=2;   b++;   a++;}}我们所理解的静态变量b,只知道它在上面的函数内部只初始化一次,其实是个假像 ,我要表达的是,事实上b初始化的值,不是在循环体完成的.继续下看.while(1){   st

2012-10-26 13:43:10 17596 4

转载 C中的const

问题1:const变量&常量  例:为什么下面的例子在使用一个const变量来初始化数组,ANSI C的编译器会报告一个错误呢?   const int n = 5;  int a[n];  答案与分析:  1)这个问题讨论的是“常量”与“只读变量”的区别。常量,例如5, "abc",等,肯定是只读的,因为常量是被编译器放在内存中的只读区

2012-10-26 10:36:14 1447

原创 ntohs和htons区别?

一直以来都对这个两个函数含含糊糊的,今天又用到所以特意查看linux的源代码(/include/netinet/in.h)# if __BYTE_ORDER == __BIG_ENDIAN/* The host byte order is the same as network byte order,   so these functions are all just identity

2012-09-26 20:19:17 6021

原创 一个c回调函数的例子

01#include02// 方法指针的格式为:int (*ptr)(char *p) 即:返回值(指针名)(参数列表)03 04typedef int (*CallBackFun)(char *p); // 为回调函数命名,类型命名为 C

2012-09-24 16:46:48 13045 1

原创 详解大端模式和小端模式

一、大端模式和小端模式的起源        关于大端小端名词的由来,有一个有趣的故事,来自于Jonathan Swift的《格利佛游记》:Lilliput和Blefuscu这两个强国在过去的36个月中一直在苦战。战争的原因:大家都知道,吃鸡蛋的时候,原始的方法是打破鸡蛋较大的一端,可以那时的皇帝的祖父由于小时侯吃鸡蛋,按这种方法把手指弄破了,因此他的父亲,就下令,命令所有的子民吃鸡蛋的时候,必

2012-09-13 19:07:57 1293

原创 memcpy memmove区别和实现

memcpy与memmove的目的都是将N个字节的源内存地址的内容拷贝到目标内存地址中。但当源内存和目标内存存在重叠时,memcpy会出现错误,而memmove能正确地实施拷贝,但这也增加了一点点开销。memmove的处理措施:(1)当源内存的首地址等于目标内存的首地址时,不进行任何拷贝(2)当源内存的首地址大于目标内存的首地址时,实行正向拷贝(3)当源内存

2012-09-03 11:39:34 1863

原创 Linux下串口参数VTIME和VMIN的用法

Linux下串口参数VTIME和VMIN的用法     VTIME指定了等待的时间,VMIN指定了读取字符的最小数量。    它们不同组合地取值会得到不同的结果,分别如下:    1.当VTIME>0,VMIN>0时。read调用将保持阻塞直到读取到第一个字符,读到了第一个字符之后开始计时,此后若时间到了VTIME或者时间未到但已读够了VMIN个字符则会返回;若在时

2012-08-21 08:33:42 5031 1

原创 修改内核编译配置菜单(make menuconfig)

1.所加目录为daiq,文件如下:[daiq@localhost daiq]$ tree.|-- Kconfig|-- Makefile`-- test.c#注意此时各个目录中的Makefile和Kconfig文件是空的2.在新增的相应目录添加Kconfig和Makefile文件,上面的目录中已经添加。3.修改新增目录的父目录的Kconfig和Makefile文

2012-08-07 11:23:35 2745

原创 修改内核编译配置菜单(make menuconfig)

A.在Linux内核中增加自己的程序步骤(注意这里只是程序文件): 1.将编写的源代码复制到Linux内核源代码的相应目录中。2.在目录的Kconfig文件中增加新源代码对应项目的编译配置选项3.在目录的Makefile文件中增加对新源代码的编译条目。B.在Linux内核drivers/目录中增加目录和子目录步骤: 1.所加目录为daiq,文件如下:[daiq@lo

2012-08-07 11:10:38 183

原创 C语言隐式类型转换

隐式类型转换分三种,即算术转换、赋值转换和输出转换。1.算术转换    进行算术运算(加、减、乘、除、取余以及符号运算)时,不同类型数招必须转换成同 一类型的数据才能运算,算术转换原则为:   整型提升:对于所有比int小的类型,包括char, signed char, unsigned char, short, unsigned short,首先会提升为int类型

2012-08-03 14:31:30 22526 3

原创 linux系统修改NAND Flash分区

在修改NAND Flash分区时,需要修改linux2.6.21/ arch/ mach-at91rm9200/目录中board-dk.c文件的dk_nand_partition结构。本系统将1G NAND Flash划分为1个分区。dk_nand_partition结构如下修改:static struct mtd_partition __initdata dk_nan

2012-07-26 21:27:29 268

原创 修改Bootstrap源码支持不同大小nandflash

原开发板是256M的NANDFLASH,目的是想用一个64M的nandflash,并且从nandflash启动。 主要是对bootstraps修改,修改地方如下:(以百特光盘自带的AT91Bootstrap1.2为例) 1:AT91Bootstrap1.2/include/nand_ids.h中的增加两行{0xecf1, 0x400, 0x20000, 0x800, 0x4

2012-07-26 11:41:21 3085 2

原创 内核配置的Default kernel command string和uboot的bootargs变量区别

1. 如果uboot的bootargs设置了,kernel的Boot options中的Default kernel command string设置与否,都不启作用,即bootargs覆盖掉设置的Default kernel command string,打印的信息也是bootargs传过来的command string。 2. 如果uboot的bootargs未设置

2012-07-26 11:12:32 2429 1

原创 从free到page cache

Free我们经常用free查看服务器的内存使用情况,而free中的输出却有些让人困惑,如下:  图1-1先看看各个数字的意义以及如何计算得到:free命令输出的第二行(Mem):这行分别显示了物理内存的总量(total)、已使用的 (used)、空闲的(free)、共享的(shared)、buffer(buffer大小)、 cache(cache的大小)的内存。

2012-05-18 10:37:25 1562

原创 linux free命令解析

因为LINUX的内核机制,一般情况下不需要特意去释放已经使用的cache。这些cache起来的内容可以增加文件以及的读写速度。先说下free命令怎么看内存[c-sharp] view plaincopy[root@ahsq proc]# free  total used free shared buffers cached  Me

2012-05-17 19:13:30 2712

原创 wait_event_interruptible_timeout和schedule_timeout区别

一、适用情况wait_event_interruptible_timeout和schedule_timeout的区别当在某个硬件驱动程序中使用wait_event_interruptible_timeout时,执行的继续可以通过以下两种方式获得:1.其他人在等待队列上调用了wake_up2.超时到期。而调用schedule_timeout的进程始终会在超时到期时被唤醒。二、

2012-04-22 21:17:01 12567

原创 xmlInitParser和xmlCleanupParser 多线程操作

使用libxml2库的朋友,可能会对它提供的初始化接口(xmlInitParser )和清除资源接口(xmlCleanupParser )感到困惑.因为在它主页中提供的例子里面,各处使用的情况差别很大. 我花了些时间把这两个接口使用方法整理如下:1. 在单线程(single-threaded)环境中   xmlInitParser 可以被调用一次,或者被调用多次(多于一次),甚至可

2012-04-20 18:25:09 2280 1

原创 select 和poll函数调用驱动的poll->poll_wait 理解

poll_wait不会挂起当前进程,而是把自己注册到某个事件等待队列中.poll_wait()是用在select系统调用中的. 一般你的代码会有一个struct file_operations结构, 其中fop->poll函数指针指向一个你自己的函数, 在这个函数里应该调用poll_wait() 当用户调用select系统调用时,select系统调用会 先调用

2012-04-10 19:53:49 6145 2

原创 Linux设备驱动编程之poll()函数原理

阻塞操作是指,在执行设备操作时,若不能获得资源,则进程挂起直到满足可操作的条件再进行操作。非阻塞操作的进程在不能进行设备操作时,并不挂起。被挂起的进程进入sleep状态,被从调度器的运行队列移走,直到等待的条件被满足。  在Linux  关于上述例程,我们补充说一点,如果将驱动程序中的read函数改为:static ssize_t globalv

2012-04-10 10:44:18 5228 2

原创 class_create(),class_device_create()创建/dev/xxx 名字

在刚开始写Linux设备驱动程序的时候,很多时候都是利用mknod命令手动创建设备节点,实际上Linux内核为我们提供了一组函数,可以用来在模块加载的时候自动在/dev目录下创建相应设备节点,并在卸载模块时删除该节点,当然前提条件是用户空间移植了udev。内核中定义了struct class结构体,顾名思义,一个struct class结构体类型变量对应一个类,内核同时提供了class_c

2012-03-27 11:30:48 2112

转载 Python的urllib2模块

http://mxdxm.iteye.com/blog/512728

2012-03-24 22:46:31 852

转载 用python爬虫抓站的一些技巧总结

http://www.webguo.com/?p=178072#more-178072

2012-03-24 22:17:08 1383

原创 Linux 内核配置选项详解

http://book.51cto.com/art/201012/240801.htm

2012-03-13 21:10:55 851

原创 字符设备驱动poll函数

#ifndef _MEMDEV_H_#define _MEMDEV_H_#ifndef MEMDEV_MAJOR#define MEMDEV_MAJOR 0 /*预设的mem的主设备号*/#endif#ifndef MEMDEV_NR_DEVS#define MEMDEV_NR_DEVS 2 /*设备数*/#endif

2012-03-08 17:47:17 1387

原创 字符设备驱动poll函数

#ifndef _MEMDEV_H_#define _MEMDEV_H_#ifndef MEMDEV_MAJOR#define MEMDEV_MAJOR 0 /*预设的mem的主设备号*/#endif#ifndef MEMDEV_NR_DEVS#define MEMDEV_NR_DEVS 2 /*设备数*/#endif

2012-03-08 17:45:54 95

原创 ARM9260内部中断和外部中断触发方式

1.内部中断(0~31)  内部中断可以有4中触发方式 static struct irq_chip at91_aic_chip = {   .name = "AIC", .irq_ack = at91_aic_mask_irq, .irq_mask = at91_aic_mask_irq,

2012-03-06 13:54:53 2835

原创 子网掩码和网关的关系

子网掩码有数百种,这里只介绍最常用的两种子网掩码,它们分别是“255.255.255.0”和“255.255.0.0”。   1.子网掩码是“255.255.255.0”的网络:最后面一个数字可以在0~255范围内任意变化,因此可以提供256个IP地址。但是实际可用的IP地址数量是256-2,即254个,因为主机号不能全是“0”或全是“1”。   2.子网掩码是“255.255.0

2012-02-25 16:00:40 23260 1

原创 深入分析Linux内核源码

http://oss.org.cn/kernel-book/

2012-02-21 09:51:14 1332

原创 linux 内核编译文档

一、makemenuconfig说明:make menuconfig(或者其他的配置命令),命令执行完后产生文件.config(隐含的),其中保存着配置信息。下一次再做make menuconfig将产生新的.config文件,原.config被改名为.config.old。 二、make oldconfig优点:迅速; 如果新内核选项没有出现在您的配置文件中,它会停下来并等候

2012-02-21 09:30:38 1528

原创 高级字符设备驱动--中断下半部机制之workqueue(二)

工作队列workqueue工作队列(work queue)是另外一种将中断的部分工作推后的一种方式,它可以实现一些tasklet不能实现的工作,比如工作队列机制可以睡眠。这种差异的本质原因是,在工作队列机制中,将推后的工作交给一个称之为工作者线程(worker thread)的内核线程去完成(单核下一般会交给默认的线程events/0)。因此,在该机制中,当内核在执行中断的剩余工作时就处在

2012-02-20 22:03:50 957

原创 libxml2 node type预定义常量

预定义常量以下常量由本扩展模块定义,因此只有在本扩展模块被编译到 PHP 中,或者在运行时被动态加载后才有效。XML constantsConstantValueDescriptionXML_ELEMENT_NODE (integer)1Node is an elementXML_ATT

2012-02-20 22:03:39 1443

原创 高级字符设备驱动--中断下半部机制之tasklet(一)

综述 Linux把中断处理例程分两部分:上半分:实际响应中断的例程。下半分:被顶部分调用,通过开中断的方式进行。两种机制实现:Tasklet工作队列work queue上半部的功能是"登记中断",当一个中断发生时,它进行相应地硬件读写后就把中断例程的下半部挂到该设备的下半部执行队列中去。因此,上半部执行的速度就会很快,可以服务更多的中断请求。但是,仅有"

2012-02-20 21:34:00 946

原创 c语言中的的内联(inline)函数

c语言中的的内联(inline)函数发表于 2011 年 01 月 26 日 由 adminc/c++中的inline,使用在函数声明处,表示程序员请求编译器在此函数的被调用处将此函数实现插入,而不是像普通函数那样生成调用代码(申请是否有效取决于编译器)。一般地说,这样作的优点是省掉了调用函数的开销;缺点则是可能会增加代所生成目标代码的尺寸(二班的除外,二班情况下,inli

2012-02-18 18:43:22 30740 1

原创 强制内联和强制不内联

1.强制不内联一个函数,如果代码量比较少的话,用 -O3优化开关的话,gcc有可能将这个函数强制内联(inline)即使,你在函数前没有写inline助记符。如果是一个手写汇编的函数,那样的话很有可能破坏参数。gcc里有强制不内联的,用法如下void foo() __attribute__((noinline));但是有的gcc可能会忽略 noinline。那么你可以将你实

2012-02-18 18:42:05 20679

原创 GCC and C99 inline

C语言的inline转以前我用Docbook写的一篇关于C语言inline关键字使用的文章。唉,要是能用docbook直接写Blog就好了。用得越多发现Docbook这个东西真是越好用啊~~ 本文介绍了GCC和C99标准中inline使用上的不同之处。inline属性在使用的时候,要注意以下两点:inline关键字在GCC参考文档中仅有对其使用在函数定义(Definitio

2012-02-17 19:27:41 1203

原创 GCC 中的inline关键字

inline关键字是C99中新加的,使用的时候,要注意以下两点:1、inline关键字在GCC参考文档中仅有对其使用在函数定义(Definition)上的描述,而没有提到其是否能用于函数声明(Declare)。从inline的作用来看,其放置于函数声明中应当也是毫无作用的:inline只会影响函数在translation unit(可以简单理解为C源码文件)内的编译行为,只要超出了

2012-02-17 19:26:32 140

原创 inline函数定义放在头文件中的作用

两个文件:main.c中得代码如下#include #include "print_inline.h"int main(int argc, char *argv[]){    print_inline();system("PAUSE");    return 0;}print_inline.h文件中得代码:#include inline

2012-02-17 19:25:35 6796 2

原创 errno 列表

errno.h 写道#define EPERM 1 /* Operation not permitted */#define ENOENT 2 /* No such file or directory */#define ESRCH 3 /* No such process */#define EINTR 4 /* Interrupted system call */#de

2012-02-15 19:16:53 3315

sscom5.13串口调试工具

sscom5.13串口调试工具可以调试串口和网络接口tcp,udp。sscom5.13串口调试工具可以调试串口和网络接口tcp,udpsscom5.13串口调试工具可以调试串口和网络接口tcp,udpsscom5.13串口调试工具可以调试串口和网络接口tcp,udpsscom5.13串口调试工具可以调试串口和网络接口tcp,udpsscom5.13串口调试工具可以调试串口和网络接口tcp,udpsscom5.13串口调试工具可以调试串口和网络接口tcp,udpsscom5.13串口调试工具可以调试串口和网络接口tcp,udpsscom5.13串口调试工具可以调试串口和网络接口tcp,udpsscom5.13串口调试工具可以调试串口和网络接口tcp,udp

2023-03-27

sttoolset-STM32读写HEX工具

STM32芯片烧写工具,兆易芯片烧写工具,STM32芯片烧写工具,兆易芯片烧写工具,STM32芯片烧写工具,兆易芯片烧写工具,STM32芯片烧写工具,兆易芯片烧写工具,STM32芯片烧写工具,兆易芯片烧写工具,STM32芯片烧写工具,兆易芯片烧写工具,STM32芯片烧写工具,兆易芯片烧写工具,STM32芯片烧写工具,兆易芯片烧写工具,STM32芯片烧写工具,兆易芯片烧写工具,STM32芯片烧写工具,兆易芯片烧写工具,STM32芯片烧写工具,兆易芯片烧写工具,STM32芯片烧写工具,兆易芯片烧写工具,STM32芯片烧写工具,兆易芯片烧写工具,STM32芯片烧写工具,兆易芯片烧写工具,STM32芯片烧写工具,兆易芯片烧写工具,

2023-03-27

CmBacktrace开源代码,亲测可用

CmBacktrace ARM芯片cortex-M型芯片hardfault错误解决神器。CmBacktrace ARM芯片cortex-M型芯片hardfault错误解决神器。CmBacktrace ARM芯片cortex-M型芯片hardfault错误解决神器。CmBacktrace ARM芯片cortex-M型芯片hardfault错误解决神器。CmBacktrace ARM芯片cortex-M型芯片hardfault错误解决神器。CmBacktrace ARM芯片cortex-M型芯片hardfault错误解决神器。CmBacktrace ARM芯片cortex-M型芯片hardfault错误解决神器。

2023-03-27

ucosIII+stm407+lwip cubemx 亲测可用

亲测可用ping通

2021-12-22

PT1000 分度表C语言代码

PT1000 分度表原始数据 u32_t PT1000[1000]= { 1000.000, 1000.391, 1000.782, 1001.172, 1001.563, 1001.954, 1002.345, 1002.736, 1003.126, 1003.517, 1003.908

2020-12-29

Configuration-Wizard-V2.10-详细使用说明

Configuration-Wizard-V2.10-详细使用说明.PDF

2020-12-29

STM32_OS.zip

基于STM32f10x芯片的轻量级操作系统。系统基本功能包括,任务调度 内存管理 任务同步等功能基于STM32f10x芯片的轻量级操作系统。系统基本功能包括,任务调度 内存管理 任务同步等功能

2020-06-17

source insight3.5 带SN码

sourceinsight3.5 自带sn码的,不需要破解,不许要产生KEY。

2015-10-15

secureCRT破解版

CRT破解版不需要验证码,直接安装能用。

2015-03-23

libxml2开源库 libxml2开源库 libxml2开源库

开源库libxml2库,

2014-11-04

Jlink 驱动

驱动jlink

2013-11-01

uboot,start.S汇编文件分析

uboot中start.S文件分析

2013-07-09

Quartus_13.0_WinXp_32bit破解器

用Quartus_II_13.0_x86破解器.exe破解C:\altera\13.0\quartus\bin下的sys_cpt.dll文件(运行Quartus_II_13.0_x86破解器.exe后,直接点击“应用补丁”,如果出现“未找到该文件。搜索该文件吗?”,点击“是”,(如果直接把该破解器Copy到C:\altera\13.0\quartus\bin下,就不会出现这个对话框,而是直接开始破解!)然后选中sys_cpt.dll,点击“打开”。安装默认的sys_cpt.dll路径是在C:\altera\13.0\quartus\bin下)。 #把license.dat里的XXXXXXXXXXXX 用您老的网卡号替换(在Quartus II 13.0的Tools菜单下选择License Setup,下面就有NIC ID)。 #在Quartus II 13.0的Tools菜单下选择License Setup,然后选择License file,最后点击OK。 #注意:license文件存放的路径名称不能包含汉字和空格,空格可以用下划线代替。 #备注:此软件在Windows XP和Windows 7的32/64位操作系统下都验证过了,没有问题!Windows Vista 32/64因为微软都放弃了,所以没有验证,理论上应该可以正常使用。

2013-06-24

9260nand启动镜像+烧写文档

at9260Nand启动烧写文档+镜像文件

2013-01-17

Linux-C-编程一站式学习

Linux C 编程一站式学习.pdfLinux C 编程一站式学习.pdfLinux C 编程一站式学习.pdfLinux C 编程一站式学习.pdfLinux C 编程一站式学习.pdfLinux C 编程一站式学习.pdfLinux C 编程一站式学习.pdfLinux C 编程一站式学习.pdfLinux C 编程一站式学习.pdfLinux C 编程一站式学习.pdfLinux C 编程一站式学习.pdfLinux C 编程一站式学习.pdfLinux C 编程一站式学习.pdfLinux C 编程一站式学习.pdfLinux C 编程一站式学习.pdfLinux C 编程一站式学习.pdfLinux C 编程一站式学习.pdf

2012-09-03

at9260 nand启动方式系统烧写文档

at91sam9260 nand启动方式系统烧写文档

2012-08-02

sam-ba2.10

sam-ba2.10软件及其操作文档

2012-08-02

kernel中断代码分析.pdf

kernel中断代码分析.pdf

2012-06-30

python教程pdf合集

深入Python.pdf Python简明教程.pdf [深入Python](Dive.Into.Python).Mark.Pilgrim.文字版.pdf

2012-03-18

AT9260 gpio 操作函数

at9260系列芯片GPIO操作手册

2012-01-12

AT9260 中断分析

描述了AT91sam9260系列中断的详细步骤,从中断触发-》查找中断号-》找到中断处理函数

2011-12-24

librtp0.1源码

纯C语言源码包,可以直接应用到你的项目中。官方源码。

2011-08-19

Xpath参考手册CHM

xpath教程,一本比较好的官方参考手册

2011-05-17

C语言函数速查手册--标准库函数

C语言是Combined Language(组合语言)的中英混合简称。是一种计算机程序设计语言。它既具有高级语言的特点,又具有汇编语言的特点。它可以作为工作系统设计语言,编写系统应用程序,也可以作为应用程序设计语言,编写不依赖计算机硬件的应用程序。因此,它的应用范围广泛,不仅仅是在软件开发上,而且各类科研都需要用到C语言,具体应用比如单片机以及嵌入式系统开发。

2010-08-03

QT教程--由浅入深

初学QT的好帮手。 这一行包含了QApplication 类的定义。在每一个使用Qt 的应用程序中都必须 使用一个QApplication 对象

2010-08-03

linux_USB驱动指南

对于想在linux下写驱动的朋友是本好书,以USB驱动为例详细的介绍了驱动的流程和代码。

2009-02-24

空空如也

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

TA关注的人

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