自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(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

Dedicated Pin Information for the MAX® II EPM240 / EPM240G Devices

2015-08-06

北航国家精品课程嵌入式系统

包含详细的实验源代码和设计的详细说明,很有价值。 第一章 嵌入式LINUX 开发基础知识 1.1 嵌入式LINUX 简介 1.2 嵌入式LINUX 开发平台简介 1.3 嵌入式LINUX 开发流程 1.4 嵌入式LINUX 开发环境的建立 第二章 基础实验 2.1 熟悉LINUX 开发环境 2.2 多线程应用程序设计 2.3 串行端口程序设计 2.4 A/D 接口实验 2.5 D/A 接口实验 2.6 CAN 总线通讯实验 2.7 简单嵌入式WEB 服务器实验 2.8 RS-485 通讯实验 2.9 直流电机实验 2.10 步进电机实验 第三章 图形界面应用程序设计 3.1 安装与建立QT 桌面运行环境 3.2 QT DESIGNER 简介以及QT/E 的交叉编译 3.3 建立本机QTOPIA 虚拟平台 3.4 QTOPIA2.1.1 在2410-S 上的移植 第四章 内核实验 4.1 LINUX 内核移植与编译实验 第五章 驱动模块实验 5.1 内核驱动设计入门-模块方式驱动实验 5.2 内核驱动设计实验-触摸屏驱动 5.3 IC 卡读写实验 5.4 PS2 键盘鼠标驱动实验 5.5 SD 卡使用实验 5.6 IDE_CF 卡模块读写实验 5.7 音频驱动及应用实验 5.8 双网卡演示实验 第六章 无线通讯实验 6.1 GPS 通讯实验 6.2 GPRS 通讯实验 6.3 基于PCMCIA 的CF 卡读写和无线局域网通讯实验6.4 红外通讯实验6.5 蓝牙无线通讯实验

2010-03-10

嵌入式Linux应用程序开发详解

...........................\第1章快速入门.pdf ...........................\第2章 linux基础命令.pdf ...........................\第3章 linux下的C编程基础.pdf ...........................\第4章 嵌入式系统基础.pdf ...........................\第5章 嵌入式Linux开发环境的搭建.pdf ...........................\第6章 文件IO编程.pdf ...........................\第7章 进程控制开发.pdf ...........................\第8章 进程间通信.pdf ...........................\第9章(多线程编程).pdf 第10章(嵌入式Linux网络编程).pdf ...........................\第11章(嵌入式Linux设备驱动开发).pdf ...........................\第12章(Qt图形编程).pdf

2010-03-10

嵌入式系统开发ARM入门文章集锦

基于友善之臂mini2440开发板为基础,详细介绍了ARM开发中遇到的基本概念和存在的一些误区,对于初学者很有帮助.

2009-12-19

空空如也

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

TA关注的人

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