内核&驱动
lizhiqiang5846
这个作者很懒,什么都没留下…
展开
-
ARM指令LDR和ARM伪指令LDR
LDR伪指令的形式是“LDR Rn,=expr”,例:COUNT EQU 0x40003100 …… LDR R1,=COUNT MOV R0,#0 STR R0,[R1] COUNT是我们定义的一个变量,地址为0x40003100。这种定义方法在汇编语言中是很常见的。 LDR R1,=COUNT是将COUNT这个变量的地址,也就是0x40003100放到R1中。 MO转载 2014-07-05 11:48:28 · 1142 阅读 · 1 评论 -
USB2.0速度识别(USB上电分析)
我们知道USB2.0向下兼容USB1.x,即高速2.0的hub能支持所有的速度类型的设备,而USB1.x的hub不能支持高速设备(High Speed Device)。因此,如果高速设备挂到USB1.x的hub上,那该设备只能工作在全速模式下。不管是hub还是设备(device),对于速度的区分是非常重要的,否则,后续的通信根本无法进行。 全速和低速识别 根据规范,全速(F转载 2014-07-12 11:49:22 · 7965 阅读 · 0 评论 -
8250.c
转自:http://www.360doc.com/content/12/0630/16/532901_221365564.shtml一:前言前一段时间自己实践了一下8250芯片串口驱动的编写。今天就在此基础上分析一下 linux kernel 自带的串口驱动。毕竟只有对比专业的驱动代码才能更好的进步, 同以往一样,基于linux kernel2.6.25.相应转载 2014-07-31 22:50:04 · 2078 阅读 · 0 评论 -
嵌入式系统 Boot Loader 技术内幕
转自IBM developerWorks 中国 http://www.ibm.com/developerworks/cn/linux/l-btloader/转载 2014-07-07 22:48:02 · 437 阅读 · 0 评论 -
/proc下面的每个文件都绑定于一个内核函数
/proc 下面的每个文件都绑定于一个内核函数,这个函数在文件被读取时,动态地生成文件的"内容",例如,/proc/modules 列出的是当前载入模块的列表。这样可以动态访问其中进程和内核信息。原创 2012-09-01 14:55:33 · 369 阅读 · 0 评论 -
USB: Endpoint
bNumEndpoints 就是接口描述符中的成员,表示这个接口有多少个端点,不过这其中不包括0 号端点,0 号端点是任何一个usb 设备都必须是提供的,这个端点专门用于进行控制传输,即它是一个控制端点.正因为如此,所以即使一个设备没有进行任何设置,usb 主机也可以开始跟它进行一些通信,因为即使不知道其它的端点,但至少知道它一定有一个0号端点,或者说一个控制端点.转载 2012-03-19 23:40:21 · 1122 阅读 · 0 评论 -
Linux prefers paging to segmentation info coreutils 'ls invocation'
One reason for giving programmers control over their memory map is to allow two or moreprocesses to share the same memory. If programmers can name regions of their memory, it may bepossible for on翻译 2014-01-24 14:54:06 · 610 阅读 · 0 评论 -
The kernel thread khubd, from 《Essential Linux Device Driver》
A hub driver for the root hub (and physical hubs) and a helper kernel thread khubd that monitors all portsconnected to the hub. Detecting port status changes and configuring hotplugged devices is ti原创 2012-03-17 23:05:08 · 1219 阅读 · 0 评论 -
A handler can’t transfer data to or from user space
A handler can’t transfer data to or from user space, because itdoesn’t execute in the context of a process. Handlers also cannot do anything thatwould sleep, such as calling wait_event, allocating翻译 2013-11-20 10:20:59 · 756 阅读 · 0 评论 -
little endian判断
#include int main(){ union ut{ short s; char c[2]; }u; if(sizeof(short) == 2) { u.s = 0x0102; if(u.c[0] == 1 && u.c[1] == 2) { printf("big enidan/n"); }else if(u.c转载 2012-03-21 12:43:03 · 291 阅读 · 0 评论 -
浅析proc文件系统的创建和create_proc_read_entry函数的具体实现
浅析kern_mount加载sysfs的流程 因为sysfs是一个内存文件系统, 所以文件的物理存储关系就需要使用sd来维护, 因此sysfs_dirent即sd就类似于硬盘中的磁道. sysfs文件系统是一个排它式的文件系统, 不论被mount多少次都只产生一个sb超级块, 如果尝试再次mount,即尝试再次调用sysfs_get_sb获取另一个sb超级块,那么将执行a转载 2013-05-30 19:26:19 · 809 阅读 · 0 评论 -
short驱动详解
转自:http://blog.sina.com.cn/s/blog_5f84dc840100o4u4.html/ *After you compile it, when you run the shell scriptshort_load, maybe you'll encounter the following error:insmod: error inserting '.转载 2013-10-31 18:24:30 · 1779 阅读 · 0 评论 -
Softirqs , tasklets, reentrant.
Softirqs are statically allocated (i.e., defined at compile time), while tasklets can also beallocated and initialized at runtime (for instance, when loading a kernel module). Softirqs canrun翻译 2013-11-07 18:09:15 · 630 阅读 · 0 评论 -
linux 用户空间与内核空间——高端内存详解
转自:http://blog.csdn.net/tommy_wxie/article/details/17122923/摘要:Linux 操作系统和驱动程序运行在内核空间,应用程序运行在用户空间,两者不能简单地使用指针传递数据,因为Linux使用的虚拟内存机制,用户空间的数据可能被换出,当内核空间使用用户空间指针时,对应的数据可能不在内存中。用户空间的内存映射采用段页式,而内核空间有自己的规则;本...转载 2018-03-16 11:50:20 · 262 阅读 · 0 评论