自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(50)
  • 资源 (19)
  • 收藏
  • 关注

原创 io内存映射ioremap() 做点笔记

unsigned long GPBDAT,GPFDAT,GPGDAT;GPBDAT=(unsigned long )ioremap(0x56000014,4);GPFDAT=(unsigned long )ioremap(0x56000054,4);GPGDAT=(unsigned long )ioremap(0x56000064,4);switch(irq){      

2010-05-25 20:11:00 952

原创 #define A (* (volatile unsigned long *) 详解

#define A    (* (volatile unsigned long *)   0x48 ) // 8位处理#define A    (* (volatile unsigned long *)   0x48000000) // 32位处理器对于不同的计算机体系结构,设备可能是端口映射,也可能是内存映射的。如果系统结构支持独立的IO地址空间,并且是端口映射,就必须使用汇编语

2010-05-25 20:10:00 754

转载 signal_pending(current)用法

signal_pending(current)检查当前进程是否有信号处理,返回不为0表示有信号需要处理。返回 -ERESTARTSYS 表示信号函数处理完毕后重新执行信号函数前的某个系统调用。也就是说,如果信号函数前有发生系统调用,在调度信号处理函数之前,内核会检查系统调用的返回值,看看是不是因为这个信号而中断了系统调用.如果返回值-ERESTARTSYS,并且当前调度的信号具

2010-05-25 18:41:00 4759

转载 __atribute__使用:关于_attribute__ ((used,__section__(".xxxx")))的理解

从etherboot代码中发现有一个__attribute__的使用,#define __pci_driver __attribute__ ((used,__section__(".drivers.pci")))/* Defined by the linker... */extern const struct pci_driver pci_drivers[];extern co

2010-05-25 18:40:00 8557

转载 内存与I/O访问

typedef void (*lpFunction) ();//定义一个无参数,无返回类型的函数指针类型//定义一个函数指针,指向cpu启动后所执行的第一条指令的位置lpFunction lpReset = (lpFunction)0xF000FFF0;lpReset();//调用函数 MMU停供虚拟地址和物理地址的映射、内存访问权限保护和Cache缓存控制等硬件支持。操作

2010-05-25 18:09:00 852

转载 转一转 怎么样学习驱动步骤

linux驱动开发学习的步骤    1. 学会写简单的makefile    2. 编一应用程序,可以用makefile跑起来    3. 学会写驱动的mak

2010-05-24 19:09:00 447

转载 从PC总线到ARM的内部总线 收藏

总线的演变首先应该讲讲总线的演变历史,这方面《PC架构系列:CPU/RAM/IO总线的发展历史!》这篇文章写得很好!感谢文章的作者!以下内容大量来自这篇文章,可以说是这篇文章的缩减转载。 公共总线早期PC中,CPU/RAM/IO都是挂在一条总线上,所有的部件都必须在同步的模式下工作。这样就带来一个"互锁" (locked to each ot

2010-05-21 15:00:00 892 2

转载 堆 栈 区别

一、预备知识—程序的内存分配一个由c/C++编译的程序占用的内存分为以下几个部分1、栈区(stack)—   由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈。2、堆区(heap) —   一般由程序员分配释放, 若程序员不释放,程序结束时可能由OS回收 。注意它与数据结构中的堆是两回事,分配方式倒是类似于链表,呵呵。3、全局

2010-05-20 20:09:00 416

转载 _io _ior 笔记

_IO, _IOR, _IOW, _IOWR 宏的用法与解析在驱动程序里, ioctl() 函数上传送的变量 cmd 是应用程序用于区别设备驱动程序请求处理内容的值。cmd除了可区别数字外,还包含有助于处理的几种相应信息。 cmd的大小为 32位,共分 4 个域:bit31~bit30 2位为 “区别读写” 区,作用是区分是读取命令还是写入命令。bit

2010-05-19 18:05:00 631 1

转载 scull内存驱动

来自 http://dev.firnow.com/course/6_system/linux/Linuxjs/2008108/149162.html /* * scull.h -- definitions for the char module * * Copyright (C) 2001 Alessandro Rubini and Jonathan Corbet *

2010-05-17 20:29:00 540

原创 对于Tekkaman completion 的一点疑问?? 没有 解决

[Tekkaman2440@SBC2440V4]#./completion_testwprocess 817 (completion_test) awakening the readers...awoken 814 (completion_test)write code=0[Tekkaman2440@SBC2440V4]#r

2010-05-17 17:42:00 440

原创 mknod

名字mknod - 建立块专用或字符专用文件   总览mknod [options] name {bc} major minor mknod [options] name p   GNU 选项(缩写):[-m mode] [--help] [--version] [--]   描述mknod 用指定名称产生一个FIFO(命名管道),字符专用或块专用文件。

2010-05-17 16:36:00 608

原创 理解和认识udev

问:什么是udev?答:udev是一种工具,它能够根据系统中的硬件设备的状态动态更新设备文件,包括设备文件的创建,删除等。设备文件通常放在/dev目录下。使用udev后,在/dev目录下就只包含系统中真正存在的设备。问:udev支持什么内核?答:udev只支持linux-2.6内核,因为udev严重依赖于sysfs文件系统提供的信息,而sysfs文件系统只在linux-2.

2010-05-16 15:01:00 509

转载 如何解压.gz的压缩文件

 #gzip -d xxx.gztar命令 [root@linux ~]# tar [-cxtzjvfpPN] 文件与目录 ....参数:-c :建立一个压缩文件的参数指令(create 的意思);-x :解开一个压缩文件的参数指令!-t :查看 tarfile 里面的文件!特别注意,在参数的下达中, c/x/t 仅能存在一个!不

2010-05-16 14:06:00 699

原创 网上 资源 收藏

http://blog.chinaunix.net/u1/38994/article_56615.html   chinanuix 博客讲解 linux 等等  

2010-05-16 12:57:00 337

转载 内存管理

内存管理FAQ http://hi.baidu.com/%B8%F8%EB%DE%CC%ED%CD%EB%B7%B9 /blog/item/bc4854082ad7b336e8248839.html   Q:什么是mm?   A:指的是内存管理(memory management)。是内核中的一套软件机制,用于有效管理内存的使用。   Q:内存管理的软件实现了什么功能?

2010-05-16 10:38:00 446

原创 错误 中断 笔记!!

 Pid: 0, comm: swapperCPU: 0 Not tainted (2.6.30.4-EmbedSKy #18)PC is at default_idle+0x64/0x6cLR is at default_idle+0x58/0x6cpc : [] lr : [] psr: 60000013sp : c037d

2010-05-15 13:32:00 1867

原创 中断处理程序!!

为什么 中断处理程序不能执行任何柱塞过程?? 中断处理程序是代表进程执行的,他所代表的是进程必须总处于TASK_RUNNING状态,否则,就可能出现系统僵死情形。

2010-05-14 19:39:00 496

转载 Linux中等待队列机制分析

什么是等待队列?       在软件开发中任务经常由于某种条件没有得到满足而不得不进入睡眠状态,然后等待条件得到满足的时候再继续运行,进入运行状态。这种需求需要等待队列机制的支持。Linux中提供了等待队列的机制,该机制在内核中应用很广泛。        在Linux内核中使用等待队列的过程很简单,首先定义一个wait_que

2010-05-13 20:20:00 550 1

原创 test_irq.c 源代码 读书笔记

api: #include#include#includeint main(void){  int fd;  fd=open("dev/test_led",0);  printf("start the system");  while(1);  close(fd);  printf("bye the system/n");  return 0;}  #include#inc

2010-05-12 22:03:00 547

原创 test_led.c 和 api test_led.c 源代码 读书笔记!!!

API:#include#include#includeint main(void){  int fd;  fd=open("dev/test_led",0);  while(1)  {    ioctl(fd,0);sleep(1);    ioctl(fd,1);sleep(1);  }  close(fd);  return 0;}LINUX:#include#include

2010-05-12 21:56:00 495

原创 应该 成功 实现中断 操作!!!!

y由于 使用的是test_led.c的 源代码。在test_led.c 的代码中增加了open release test_irq_hander() 一些函数和数据如下:分析:       insmod test_irq.ko  mknod dev/test_led c 243 0后   在 api函数中,test_led  表示设备  因为源代码是test_

2010-05-12 21:39:00 445

原创 多问一些 为什么?? 什么是??

多问一些 为什么?? 什么是???

2010-05-12 17:25:00 399

原创 成功 test_led.ko+api !!! 但是还有疑惑 关于 指针和地址 问题

 优先级问题:struct example{         longnt idnumber;         char *name;}guo;对于*guo.name形式,由于运算符"."    >  "*",所以,*guo.name等价于*(guo.name)其含义是访问guo.name的目标变量。 struct test_led_dev={   

2010-05-11 19:54:00 453

原创 cdev 内存分配

三。字符设备的注册内核内部使用struct cdev结构来表示字符设备。在内核调用设备的操作之前,必须分配并注册一个或多个struct cdev。struct cdev的定义以及相关的一些辅助函数在头文件:中。 struct cdev { struct kobject kobj; struct module *

2010-05-11 13:04:00 1164

转载 linux内核register_chrdev_region()系列函数

内核中所有已分配的字符设备编号都记录在一个名为 chrdevs 散列表里。该散列表中的每一个元素是一个 char_device_struct 结构,它的定义如下:   static struct char_device_struct {       struct char_device_struct *next;    // 指向散列冲突链表中的下一个元素的指针

2010-05-11 12:29:00 389

原创 linux_led.ko 不知道怎么样解决??要仔细看看

 这个问题 貌似 以前 出现过!!   应该是指针问题!!明天 解决。。 2010.5.11在 linux 2.6中:register_chrdev_region() 是registere_chredv的升级版 内存分配:           在课本中 已经分配内存 globalmem_devp=kmalloc(sizeof(globalmem_dev),GFP

2010-05-10 22:20:00 410

转载 arm linux 等待队列简单分析

Author-------Dansen-----xzd2734@163.comwait_queue_head_t wait_q;首先看看wait_queue_head_t这个等待队列的结构在wait.h中定义了这个结构typedef struct __wait_queue_head wait_queue_head_t;struct __wait_queue_head

2010-05-09 10:24:00 502

原创 自旋锁 spinlock 理解

     自旋锁spinlock是一种对临界资源进行互斥手访问的典型手段,其名称源于他的工作方式。为了获得一个自旋锁,在某cpu上运行的代码需先执行一个原子操作,该操作测试并设置test-and-set某个内存变量,由于他是原子操作,所以在该操作完成之前其它执行单元不可能访问这个内存变量。    如果测试结果表明锁已经空闲,则程序获得这个自旋锁并继续执行;如果测试结果表明锁仍被占用,程序将在一

2010-05-09 09:49:00 516

转载 Spinlock简介

作者 : cjc86在 这篇文章中,我将会介绍 Kernel 提供用来使用 spinlock 的 function。除此之外,我还会告诉各位,为何在 SMP 的环境里,使用 spinlock 会比将所有 CPU 的中断 disable 这个方法来的有效率,我也会告诉各位如何针对不同的使用需求,使 spinlock 的 cost 再降低,进而使系统的效能更好... 前言

2010-05-09 09:30:00 358

原创 定义指针

在定义指针时,编译器并不为指针所指向的对象分配空间,他只是分配指针本身的空间,除非在定义时,同时赋给指针一个字符串常量进行初试化。列如:下面的定义创建了一个字符串常量(为其分配了空间内存)char *p="abcd"; 在 ansi c 中,初始化指针时所创建的字符串常量被定义为只读      

2010-05-07 17:53:00 399

转载 Linux设备驱动程序学习(1)-字符设备驱动程序

Linux设备驱动程序学习(1)-字符设备驱动程序今天进入《Linux设备驱动程序(第3版)》第三章字符设备驱动程序的学习。这一章主要通过介绍字符设备scull(Simple Character Utility for Loading Localities,区域装载的简单字符工具)的驱动程序编写,来学习Linux设备驱动的基本知识。scull可以

2010-05-06 21:30:00 435

转载 linux 中断处理

中断处理 在 2.4 内核和 2.6内核中都使用 request_irq() 函数来注册中断服务函数。在 2.4 内核中,需要包含的头文件是 #include ,2.6 内核中需要包含的头文件则是 #include 。函数原型如下:2.4 内核int request_irq (unsigned int irq, void

2010-05-04 12:53:00 407

转载 linux设备驱动 IO Port

1. I/O Port  和硬件打交道离不开I/O Port,老的ISA设备经常是占用实际的I/O端口,在linux下,操作系统没有对I/O口屏蔽,也就是说,任何驱动程序都可对任意的I/O口操作,这样就很容易引起混乱。每个驱动程序应该自己避免误用端口。   有两个重要的kernel函数可以保证驱动程序做到这一点。 

2010-05-04 12:49:00 797

转载 linux cat echo cal date clear命令

cat 命令使用方式:cat [-AbeEnstTuv] [--help] [--version] fileName 说明:把档案串连接后传到基本输出(萤幕或加 > fileName 到另一个档案) 参数: -n 或 --number 由 1 开始对所有输出的行数编号 -b 或 --number-nonblank 和 -n 相似,只不过对于空白行不编号 -s

2010-05-04 12:39:00 822

转载 linux设备驱动开发详解——globalmem

  linux设备驱动开发详解——globalmem 收藏 常见的两种错误:1.在插入模块的时候出现如下问题: # insmod globalmem.ko in

2010-05-04 12:37:00 582

转载 sbc_2410开发板内核2.6.30.4移植

大概又过了一个星期了,没想到内核的移植是如此的繁琐,今天下午5:20的时候,我终于看到了刚开始的启动界面,我和燕齐开心不已啊。废话少说,我要把我和他的开发过程记录一下。首先是下载2.6.30.4的内核源码,同时使用的编译器是4.3.3,有了这两个东西后就是使用已有的文件系统yaffs2文件镜像,我使用的天嵌公司的文件系统镜像,因为我的板子的nandflash是64MB的,一定要使用相应的

2010-05-03 10:26:00 884

转载 linux 2.6.22.1内核在s3c2410平台的移植(完美版)

linux 2.6.22.1内核在s3c2410平台的移植(完美版)-------------------作者:无猫 ++++++++++++++++++++++++++++++++++++++++++++++----------------------------------------------bootloader编译环境:vivi版本:0.1.4交叉编译器(CROS

2010-05-03 10:17:00 538

原创 vmlinux,EABI

vmlinux是内核映象,它是内核在虚拟空间运行时代码的真实反映。(vm是virtual memory)以下示例程序所使用的编译器为 arm-linux-gcc-4.3.2 with EABI,如果你使用了其他版本的交叉编译器,编译完有可能无法在开发板上运行。因为友善之臂采用的是Linux2.6内核,而交叉编译器在编译源代码的时候,对于浮点运算的会预设使用FPA(Float Point

2010-05-03 10:08:00 362

原创 内核编程接口

2010-05-02 21:22:00 399

linux设备驱动开发详解二源代码

linux设备驱动开发详解 第二版 课本源代码 欢迎下载

2011-12-21

linux 内核模块编程

linux 内核模块编程指南 中文版 很适合初学者 学习使用

2011-12-16

linux proc 文件系统 编程手册

linux proc 文件系统 编程手册,对初学者 很有用

2011-12-16

linux 内核定时器 编程

linux 内核定时器编程: 包括代码程序和makefile文件 my_timer定时器每个1s 打印1 和 second_timer定时器每隔2s打印2 将rar修改为.tar.bz2

2011-12-12

精通Qt4编程 源代码

精通Qt4编程 源代码 这本书很适合初学者看看

2010-12-05

qt 经典中文学习教程

qt 经典中文学习教程 很适合 初学者

2010-12-01

自己动手写操作系统 光盘及其代码

自己动手写操作系统 光盘及其代码 学校的图书馆下的

2010-12-01

24小时学会TCP_IP.rar

24小时学会 TCP IP 童鞋们可以看看

2010-12-01

24l01 无线模块学习资料 详细

24l01 无线模块 这是我在 淘宝购买模块 配送的 模块资料

2010-07-28

lm3s1138定时器学习资料

ti context-M3定时器 章节 学习资料 包括一个 pdf和 多个 程序 使用IAR 编程环境

2010-07-28

s3c2410设备注册

s3c2410设备注册,程序,主要讲一个普通的设备注册模型

2010-05-25

source insight 经典手册

source insight 经典使用教程很短篇幅介绍了source insight 的使用

2010-05-23

windows程序设计教程代码

windows程序设计教程windows progamming 代码 人民邮电出版社

2010-05-05

nokia5110程序

这是nokia5110完整的程序显示 s51平台

2010-05-05

menuconfig 配置文档

这是一个关于linux2.4内核配置的文档 make menuconfig

2010-05-01

手把手教你虚拟机安装

手把手教你安装虚拟机,可以简单方便的安装虚拟机

2010-03-04

Linux 常用命令大全

Linux常用命令大区可以方便的查找使用Linux命令

2010-03-04

嵌入式编程之道Linux arm

嵌入式编程之道关于Linux arm方面的可以看看

2010-03-04

跟我一起学makefile

Linux arm 学习Makefile

2010-03-04

空空如也

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

TA关注的人

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