- 博客(33)
- 资源 (5)
- 收藏
- 关注
转载 C语言根据日期判断星期几(使用基姆拉尔森计算公式)
C语言根据日期判断星期几(使用基姆拉尔森计算公式)算法如下: 基姆拉尔森计算公式W= (d+2*m+3*(m+1)/5+y+y/4-y/100+y/400) mod 7在公式中d表示日期中的日数,m表示月份数,y表示年数。注意:在公式中有个与其他公式不同的地方
2011-08-02 16:09:29 60765 7
转载 Linux下c开发之线程通信
<br />1.Linux“线程”<br /> 进程与线程之间是有区别的,不过Linux内核只提供了轻量进程的支持,未实现线程模型。Linux是一种“多进程单线程”的操作系统。Linux本身只有进程的概念,而其所谓的“线程”本质上在内核里仍然是进程。<br /> 大家知道,进程是资源分配的单位,同一进程中的多个线程共享该进程的资源(如作为共享内存的全局变量)。Linux中所谓的“线程”只是在被创建时clone了父进程的资源,因此clone出来的进程表现为“线程”,这一点一定要弄清楚。因此,L
2011-03-01 15:46:00 2301
转载 S3C2410的linux 下DMA驱动程序开发
<br />网上介绍LINUX下的一般驱动程序开发示例浩如烟海,或是因为简单,关于DMA驱动的介绍却寥寥无几;近期zhaoyang因工作需要,花了几日时间开发了某设备在S3C2410处理器Linux下DMA通信的驱动程序,有感于刚接手时无资料借鉴的茫然,故写点介绍,期待能给有DMA开发任务的网友们一点帮助。<br />本文将包括如下内容:<br />DMA驱动主要函数功能 <br />驱动中关键技术分析 <br />具体的DMA实例分析 <br />申明:本DMA驱动开发介绍仅适合S3C2410处理器类型,
2011-02-17 15:26:00 2330
转载 深入浅出 Linux设备驱动中断处理介绍
与Linux设备驱动中中断处理相关的首先是申请与释放IRQ的API: request_irq()和free_irq()。 request_irq()的原型为: int request_irq(unsigned int irq,void (*handler)(int irq, void *dev_id, struct pt_regs *regs),unsigned long irqflags,const char * devname, void *dev_id);
2011-01-10 14:42:00 1918
转载 关于LINUX中的中断处理
<br />一)、基本概念<br />1、安装中断处理程序<br />系统中中断信号线很有限,有时只有15或16根。内核维护了一个类似于I/O端口注册表的中断信号线的注册表。一个模块可以申请一个中断请求IRQ,处理完以后也可以释放掉它。相关函数:<br />头文件 <br /> <br />原型 1)int request_irq(unsigned int irq, void (*handler)(int, void*, struct pt_regs *), <br />unsigned long fla
2011-01-10 14:41:00 3300
转载 第七章 Linux内核的时钟中断(中)(转)
7.3 Linux对时间的表示7.4 时钟中断的驱动7.3 Linux对时间的表示 通常,操作系统可以使用三种方法来表示系统的当前时间与日期:①最简单的一种方法就是直接用一个64位的计数器来对时钟滴答进行计数。②第二种方法就是用一个32位计数器来对秒进行计数,同时还用一个32位的辅助计数器对时钟滴答计数,之子累积到一秒为止。因为232超过136年,因此这种方法直至22世纪都可以让系统工作得很好
2010-03-24 13:10:00 2410
转载 arm linux下的关于time部分的说明
main.c中start_kernel()函数调用linux/arch/arm/kernel/time.c 中的time_init(), time_init函数调用include/asm-arm/arch-s3c2410/time.h中的setup_timer();其具体内容见下面函数细节。 The xtime_lock is not only serializing the xtim
2010-03-24 11:51:00 7138
转载 Request_irq和setup_irq的区别
Linux 内核提供了两个注册中断处理函数的接口:setup_irq和request_irq。这两个函数都定义在kernel/irq/manage.c里。 这两个函数有什么样的区别呢?先看看setup_irqSetup_irq通常用在系统时钟(GP Timer)驱动里,注册系统时钟驱动的中断处理函数。下面举个列子, 如s3c2410 timer驱动:/* arch/a
2010-03-24 11:48:00 2198
转载 在Linux上找出并解决程序错误的主要方法
来源:http://www.y768.com/content/view/5755/109/Steve Best(sbest@us.ibm.com)JFS 核心小组成员,IBM2002 年 8 月您可以用各种方法来监控运行着的用户空间程序:可以为其运行调试器并单步调试该程序,添加打印语句,或者添加工具来分析程序。本文描述了几种可以用来调试在 Linux 上运行的程序的方法。我们将回顾四种调试问题的情
2010-03-05 09:36:00 2544
转载 自旋锁和信号量 介绍
1. 自旋锁 Linux内核中最常见的锁是自旋锁。一个自旋锁就是一个互斥设备,它只能有两个值:"锁定"和"解锁"。如果锁可用,则"锁定"位被设置,而代码继续进入临界区;相反,如果锁被其他进程争用,则代码进入忙循环并重复检查这个锁,直到锁可用为止。这个循环就是自旋锁的"自旋"。自旋锁最多只能被一个可执行的线程持有。如果一个执行线程试图获得一个被争用的自旋锁,那么该线程就会一直进行忙循环-旋
2010-01-19 15:32:00 2036
转载 一步步设计自己的驱动程序(转载)
实验目的:通过一个简单的设备驱动的实现过程。学会Linux中设备驱动程序的编写 实验内容:设计和实现一个虚拟命名管道(FIFO)的字符设备。写一个模块化的字符设备驱动程序 实验提示:一、设备的功能 设计和实现一个虚拟命名管道(FIFO)的字符设备。我们知道,管道是进程间通信的一种方式:一个进程向管道中写数据,另一个进程从管道中读取数据,先写入的数据先读出。我们的驱动程序要实现
2010-01-19 14:55:00 4821 4
转载 解读set_gpio_ctrl(GPIO_MODE_OUT | GPIO_H6)
做嵌入式底层的东西,初始化硬件设备应该是必须的。一个个内核调用函数足以让人头晕! 最近在看Linux嵌入式(s3c2410)方面的内容,遇到了这样一个函数:set_gpio_ctrl(); 它从字面上看来是对gpio口的设置扩展GPIO是什么呢?它是通用 IO端口引脚,在s3c2410用户手册中有A,B,C,D,E,F,G,H7组共117个引脚。这些引脚除了可作为INPUT/O
2010-01-19 12:30:00 8446 2
转载 fseek()/ftell()/rewind()/lseek()/fstat()
fseek(移动文件流的读写位置) 相关函数 rewind,ftell,fgetpos,fsetpos,lseek表头文件 #include定义函数 int fseek(FILE * stream,long offset,int whence);函数说明 fseek()用来移动文件流的读写位置。参数stream为已打开的文件指针,参数offset为根据参数whence来移动读写位置的位移数。参数
2010-01-04 16:39:00 6170
转载 理解Semaphore及其用法详解
Mutex是一把钥匙,一个人拿了就可进入一个房间,出来的时候把钥匙交给队列的第一个。一般的用法是用于串行化对critical section代码的访问,保证这段代码不会被并行的运行。Semaphore是一件可以容纳N人的房间,如果人不满就可以进去,如果人满了,就要等待有人出来。对于N=1的情况,称为binary semaphore。一般的用法是,用于限制对于某一资源的同时访问。Binary sem
2009-12-31 09:35:00 77115 2
转载 Kmalloc
Kmalloc内存分配和malloc相似,除非被阻塞否则他执行的速度非常快,而且不对获得空间清零。Flags参数#includeVoid *kmalloc(size_t size, int flags);第一个参数是要分配的块的大小,第二个参数是分配标志(flags),他提供了多种kmalloc的行为。最常用的GFP_KERNEL,他表示内存分配(最终总是调用get_free_
2009-12-30 16:43:00 25491
转载 kmalloc VS kmem_cache_alloc
Linux内核为需要动态分配内存的内核程序提供了kmalloc/kfree/kcalloc/krealloc函数接口,它们分别对应于C标准库的malloc/free/calloc/krealloc。除此之外,Linux还提供了kmem_cache_xxx系列系统调用,以提供比上述接口更低的时间复杂度和空间复杂度,那么两者的效率究竟能差多少,它们又各自适合于何种场合呢?Linux内存系统的层次结
2009-12-30 16:41:00 3289
原创 主次设备编号
主次编号字符设备通过文件系统中的名子来存取. 那些名子称为文件系统的特殊文件,或者设备文件, 或者文件系统的简单结点; 惯例上它们位于 /dev 目录. 字符驱动的特殊文件由使用 ls -l 的输出的第一列的"c"标识. 块设备也出现在/dev 中, 但是它们由"b"标识. 本章集中在字符设备, 但是下面的很多信息也适用于块设备.如果你发出 ls -l 命令, 你会看到在设备文件项中有 2 个数(
2009-12-30 14:39:00 2471
转载 Linux驱动程序开发 - 设备控制接口
序言设备驱动程序的一个基本功能就是管理和控制设备,同时为用户应用程序提供管理和控制设备的接口。我们前面的“Hello World”驱动程序已经可以提供读写功能了,在这里我们将扩展我们的驱动以支持设备控制接口,在Linux中这个接口是通过ioctl函数来实现的。设备控制接口(ioctl 函数)回想一下我们在字符设备驱动中介绍的struct file_operations 结构,这里我们将介绍一个新的
2009-12-29 09:08:00 4482 1
原创 Linux设备驱动程序--与硬件通信18051101072
I/O 端口和 I/O 内存每种外设都是通过读写寄存器来进行控制。 在硬件层,内存区和 I/O 区域没有概念上的区别: 它们都是通过向在地址总线和控制总线发出电平信号来进行访问,再通过数据总线读写数据。因为外设要与I/O总线匹配,而大部分流行的 I/O 总线是基于个人计算机模型(主要是 x86 家族:它为读和写 I/O 端口提供了独立的线路和特殊的 CPU 指令),所以即便那些没有单独I/O 端口
2009-12-27 16:36:00 2232
转载 嵌入式Linux之我行——深入理解DM9000在mini2440上的驱动
嵌入式Linux之我行,主要讲述和总结了本人在学习嵌入式linux中的每个步骤。一为总结经验,二希望能给想入门嵌入式Linux的朋友提供方便。如有错误之处,谢请指正。共享资源,欢迎转载:http://blog.chinaunix.net/u1/57901/showart_2023852.html首先看一下DM9000的引脚和MINI2440的
2009-12-26 23:51:00 2430
原创 简单linux网络编程
linux网络编程1. 基本概念 说到网络编程,不得不先提到OSI参考模型,其七层模型从下到上分别为 1.物理层(Physical Layer,PH) 2.数据链路层(Data Link Layer,DL) 3.网络层(Network Layer,N) 4.运输层(Transport Layer,T) 5.会话层(Session Layer
2009-12-25 15:19:00 693
转载 key(驱动程序)
#include #include #include #include #include #include #include #include #include #include #include MODULE_LICENSE("Dual BSD/GPL"); dev_t key_dev_t; //定义设备号描述类型struct cd
2009-12-25 14:47:00 1328
转载 cdev_init()函数
linux-2.6.22/include/linux/cdev.hvoid cdev_init (struct cdev *cdev,const struct file_operations *fops); @cdev: the structure to initialize @fops: the file_operations for this device Initi
2009-12-25 14:41:00 4520 1
转载 字符设备驱动模板
1. 字符设备驱动模块加载与卸载函数模板//设备结构体声明struct xxx_dev_t{ struct cdev cdev; …….}xxx_dev;//设备驱动模块加载函数static int __init xxx_init(void){ ……… cdev_init(&xxx_dev.cde
2009-12-25 14:38:00 806
转载 ARM嵌入式LINUX设备驱动设计入门学习
经过一段时间的学习之后,也开发了一些小型的驱动,正如我之前一篇中写到得,现在我就来写一下在ARM嵌入式LINUX下如何设计驱动的框架。 在这里我用的板子是micro2440板子,板子上的linux版本是2.6.13。因为我在前一篇介绍了驱动编程的两种框架设计,所以现在我就来分别写一下这两种框架设计的程序。 开发平台:RED HAT LINUX 9(Linux 2.4.
2009-12-25 14:17:00 670
原创 linux设备驱动之控制台驱动
一:前言 我们在之前分析过input子系统和tty设备驱动架构.今天需要将两者结合起来.看看linux中的控制台是怎么样实现的. 二:控制台驱动的初始化 之前在分析tty驱动架构的时候曾分析到.主设备为4,次设备为0的设备节点,即/dev/tty0为当前的控制终端. 有tty_init()中,有以下代码段: static int __init tty_init(vo
2009-12-25 14:09:00 872
原创 不错的博客
http://blog.chinaunix.net Linux设备驱动程序学习http://blog.chinaunix.net/u1/34474/showart.php?id=404278
2009-12-25 14:05:00 493
转载 big endian & little endian(大端字节序和小端字节序)
假设:a=0x12345678; 则大端字节序和小端字节序的存储如下图所示: Big-Endian Little-Endian 0字节 12h 78h 1字节 34h
2009-12-25 13:54:00 601
转载 ioctl ---IO通道管理函数
in_addr是存储ip地址的结构体 struct in_addr{ u_int32_t s_addr; }; ifreq是跟网络接口有关的结构 /* * interface request structure used for socket * ioctls. al
2009-12-25 13:43:00 797
转载 几个网络编程常用的数据结构
struct sockaddr_in { sa_family_t sin_family; /* address family: AF_INET */ u_int16_t sin_port; /* port in network byte order */ struct in_addr sin_addr; /* internet address */};struct in_addr {
2009-12-25 13:39:00 1158
转载 socket编程中的select(zz)
Select在Socket编程中还是比较重要的,可是对于初学Socket的人来说都不太爱用 Select写程序,他们只是习惯写诸如connect、accept、recv或recvfrom这样的阻塞程序(所谓阻塞方式block,顾名思义,就是进程或是线程执行到这些函数时必须等待某个事件的发生,如果事件没有发生,进程或线程就被阻塞,函数不能立即返回)。可是使用Select就可以完成非阻塞(所谓非阻塞方
2009-12-25 13:38:00 585
转载 linux网络编程基本流程
1. 基本概念 说到网络编程,不得不先提到OSI参考模型,其七层模型从下到上分别为1.物理层(Physical Layer,PH)2.数据链路层(Data Link Layer,DL)3.网络层(Network Layer,N)4.运输层(Transport Layer,T)5.会话层(Session Layer,S)6.表示层(Presentati
2009-12-25 13:34:00 2758 1
转载 操作网络设备的几个命令
到目前为止,对我而言看过的最好协议栈的blog(简单易懂),推荐一下。赫赫,看一篇转一篇。 网络真是好啊!!!!!!!!!!!!!!!!!!!!!!!!! 一般,用户在shell中使用ifconfig命令对网络接口进行参数配置,及接口的打开,关闭等操作。ifconfig实现网络接口配置的原理在于代表网络接口的结构体struct net_device的成员ip_ptr。前文已
2009-12-25 12:29:00 700
PIN Information for the MAXII EPM240 Devices
2015-08-06
北航国家精品课程嵌入式系统
2010-03-10
嵌入式Linux应用程序开发详解
2010-03-10
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人