- 博客(21)
- 资源 (21)
- 收藏
- 关注
原创 6410 uboot代码重定位问题
6410uboot有一段代码用于重定位代码:adr r0, _start cmp r0, r6 beq clear_bss /* skip relocation */ mov r1, r6 /* r1 <- scratch for copy_loop */ ldr r3, _bss_start_ofs add r2, r0, r3 /* r2 <- source end
2013-02-27 23:18:15
1462
转载 IO - 同步,异步,阻塞,非阻塞 (亡羊补牢篇)
转自historyasamirror的http://blog.csdn.net/historyasamirror/article/details/5778378;当你发现自己最受欢迎的一篇blog其实大错特错时,这绝对不是一件让人愉悦的事。《 IO - 同步,异步,阻塞,非阻塞 》是我在开始学习epoll和libevent的时候写的,主要的思路来自于文中的那篇link 。写完之后发
2013-02-17 16:36:02
796
原创 ubuntu环境下重新编译内核
由于调试内核、驱动或工作需要,有可能需要对ubuntu下的内核进行重新编译,本文对内核重新编译过程进行简单分析,在进行重新编译内核前你可以通过uname -a来确认你的linux系统的当前版本。1.根据你的需要获取内核源码,获取内核源码有两种方式,一种是直接到http://www.kernel.org/下载你要的源码,另一种是通过在terminal中输入shell命令 sudo apt-g
2013-01-26 17:53:08
18717
原创 内存管理相关知识
对于32位的系统,它的寻址空间为4GiB,linux系统通常会把这个4GiB的虚拟地址空间按3:1进行分配,即前面3GiB用于用户空间,后而1GiB用于内核空间。 用户空间通过中断异常或系统调用切换到内核空间,用户空间访问内存时,它不会直接去访问物理内存,而是通过页表机制去访问,虚拟地址与物理地址之间的关系如图1所示:图1 32位处理上虚拟地址与物理地址之间关系
2013-01-21 14:46:50
979
转载 翻译:Linux的电源管理架构
本文转自DroidPhone的“http://blog.csdn.net/droidphone/article/details/6664057”Linux的源代码里,大部分都属于设备驱动程序的代码,因此,大多数电源管理(PM)的代码也是存在于驱动程序当中。很多驱动程序可能只做了少量的工作,另外一些,例如使用电池供电的硬件平台(移动电话等)则会在电源管理上做了大量的工作。 这
2013-01-08 14:47:09
955
原创 usb枚举过程分析之hub_events
当守护程序第一次运行或usb port上状态发生变化,守护进程被唤醒都会运行hub_events函数,这个函数在usb系统中处理核心位置,usb的枚举过程就是由它完成,usb枚举过程流程图如图1所示;图1 usb枚举流程图 由于hub_events函数比较长这里分几个部分进行讲解:static void hub_events(void){ struct
2013-01-08 14:23:33
19875
1
原创 usb枚举过程分析之守护进程及其唤醒
usb热插拔,即usb设备可以实现即插即用,像U盘一样,插到电脑里就可以用,不用时可以直接拔除,这个动作不会影响USB设备使用性能。 在linx 系统中,usb热插拔由两部分方面共同实现,即内核空间和用户空间,内核由一个守护进程实现,用户空间由udev 程序实现。在内核空间里,有一个专门用于监控usb hub的状态的守护进程,守护进程通过等待队列实现,等待队列平时处理休眠状态
2013-01-04 16:13:34
6696
原创 基于s3c6410 otg controller的gadget driver及usb枚举分 析
一.简介 一个完整的USB系统由两部分构成,即usb主机(usb host)和usb设备(usb device)。usb主机通常是指我们的pc机、具有host controller的嵌入式设备;像u盘、usb鼠标、键盘属于usb设备,具有otg controller的usb设备,它即可工作在host模式又可以工作在device模式,模式之间通过HNP协议来进行转换,如我们平时比较常
2012-12-29 15:41:13
9988
转载 linux下热插拔事件的产生是怎样通知到用户空间,kobject_uevent_env之uevent
1.kobject, ktype, ksetkobject代表sysfs中的目录。ktype代表kobject的类型,主要包含release函数和attr的读写函数。比如,所有的bus都有同一个bus_type;所有的class都有同一个class_type。kset包含了subsystem概念,kset本身也是一个kobject,所以里面包含了一个kobject对象。
2012-12-12 16:49:15
2145
原创 ohci之usb_submit_urb 一
usb控制器与usb设备之间是通过urb结构来传递数据,urb是usb通信基础。 驱动在使用urb之前要先通过usb_alloc_urb来创建struct urb结构,并通过usb_fill_xx_urb来初始化创建的urb,然后通过usb_submit_urb把urb提交给主控制器,由控制器进行实际发送,发送完给控制器把urb所有权交还给驱动,并可通过回调函数获取urb发送状
2012-12-07 10:55:01
6381
原创 usb中urb相关接口函数
一. 简介 usb总线是一种轮询式总线,协议规定所有的数据传输都必须由主机发起,usb主机与设备之间是通过管道(pipe)传输的,管道两边分别对应主机中的数据缓冲区和设备侧的端点(endpoint),端点是通信的发送和接收点,要发送数据,只要把数据发到对应的端点就可以,而这个数据发送的动作由usb主机实现,驱动中只需确定接收端点,然后把数据提交给主机控制器,主机会把数据
2012-12-05 17:46:02
6191
原创 各种总线match匹配函数
当向linux系统总线添加设备或驱动时,总是会调用各总线对应的match匹配函数来判断驱动和设备是否匹配,这些match函数之间都存在一定的差异,本文先对常用的match匹配函数进行讲解,以后会陆续添加新的内容。 一. 驱动和设备匹配过程常用数据结构1. of_device_idstruct of_device_id{charname[32];char type[32]
2012-11-13 15:28:17
21053
原创 中断及其延期执行技术
一 .中断基础 中断是除了系统调用之外的另一种可进行用户空间和内核空间切换的途径; 中断分为硬件中断(hardware interrupt)和软中断(softirq),下文中的中断是指硬件中断。 硬件中断:由系统本身和它所接外设产生的,用于实现更高效率的驱动程序,也可能是由处理器运行错误和异常的程序所导致。前者可称为异步中断,后者叫同步中断
2012-11-02 09:02:29
1480
原创 i2c driver
一. 简介 I2C(Inter-Intergrated circuit)及子集smbus(System Mangement Bus)接口是嵌入式系统中比较常见的设备接口,这类设备主要有eeprom,hwmon,rtc等。I2C及SMBUS为两线接口,分别为SDA(串行数线),SCL(串行时钟);SDA是双向数据线,可以读写命令来控制SDA方向,I2C支持最高传输速率为100kbit
2012-10-29 13:25:58
6330
原创 RTC系统
一. RTC及驱动简介 RTC即real time clock实时时钟,主要用于为操作系统提供可靠的时间;当系统处于断电 的情况下,RTC记录操作系统时间,并可在电池供电情况下继续正常工作,当系统正常启动后,系统可从RTC读取时间信息,来确保断电后时间运行连续性。 目前,很多CPU中都已集成RTC系统,且有许多独立的外接RTC芯片可用于实现RTC功能;
2012-10-26 17:28:51
20981
原创 input-dev输入子系统
一.input子系统简介: linux系统中,input输入子系统驱动主要可以分为:设备驱动层、input core层和input handler事件处理层。设备驱动层为具体用户设备驱动,输入设备由struct input-dev 结构表示,并由input_register_device和input_unregister_device来注册和卸载;input hander事件处理
2012-09-26 15:27:19
8544
原创 内核调试技术 profs
/proc文件系统是一种特殊的,由软件创建的文件系统,内核通过它向用户输出信息;/proc下面的每个文件都绑定一个内核函数,当用户读取其中文件时,内核函数会动态生成文件的内容。例如,/proc/modules列出的是当前系统中已加载模块;linux中的很多工具都是通过/proc来获取它们所需要的信息,如ps,top等 /proc文件可以通过下面函数创建
2012-09-21 14:08:45
786
原创 linux 阻塞等待
对于一个进程"睡眠"意味着什么? 当一个进程被置为睡眠, 它被标识为处于一个特殊的状态并且从调度器的运行队列中去除. 直到发生某些事情改变了那个状态, 这个进程将不被在任何 CPU 上调度, 并且, 因此, 将不会运行. 一个睡着的进程已被搁置到系统的一边, 等待以后发生事件. 当你运行在原子上下文时不能休眠,如果在获得自旋锁情况下,在中断处理函数中;当进程从休眠中醒来时,必须对
2012-09-07 14:45:45
3965
原创 linux notifier
Linuxnotifier技术内核通知链介绍(引用网络资料):在linux内核系统中,各个模块、子系统之间是相互独立的。Linux内核可以通过通知链机制来获取由其它模块或子系统产生的它感兴趣的某些事件。例如,可以通过通知链来获取某总线上的设备增加、删除情况,来动态添加和卸载dev文件设备。Linux内核中包含四种类型通知链:Atomic notifierchains: 这种类型通知
2012-08-29 11:11:39
2106
基于Zigbee的簇树协议分析
2014-05-16
基于ZigBeeMAC层的多信道接入协议的研究
2014-05-16
linux device driver
2014-05-16
无线传感器网络中TinyOS的研究
2014-05-16
基于Tinyos的传感器网络程序实例开发
2014-05-16
基于ARM核处理器的TinyOS实现
2014-05-16
tinyos programming
2014-05-16
tinyos 简单 中文
2014-05-16
something about tinyos
2014-05-16
Data Fragmentation Scheme in IEEE 802.15.4
2011-05-11
无线传感网络目标定位系统建模与仿真
2011-03-22
无线智能传感系统的实现
2011-03-22
一种多传感模块无线传感器网络新型节点的设计与实现
2011-03-22
TinyOS下基于MSP430平台的EEPROM驱动程序设计
2011-03-22
TinyOS任务调度机制与实时调度构件设计
2011-03-22
TinyOS集成开发环境的设计与实现.pdf
2011-03-22
TinyOS环境下音频数据采集原型系统的设计与实现
2011-03-22
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人