- 博客(16)
- 收藏
- 关注
转载 使用kgdb调试linux内核及内核模块
1. 几种内核调试工具比较kdb:只能在汇编代码级进行调试; 优点是不需要两台机器进行调试。gdb:在调试模块时缺少一些至关重要的功能,它可用来查看内核的运行情况,包括反汇编内核函数。kgdb:能很方便的在源码级对内核进行调试,缺点是kgdb只能进行远程调试,它需要一根串口线及两台机器来调试内核(也可以是在同一台主机上用vmware软件运行两个操作系统来调试)
2012-07-27 00:01:00 380
转载 嵌入式linux启动信息完全注释
嵌入式linux启动信息完全注释[日期:2006-8-21]来源:21IC中国电子网 作者:余涛 摘要我们在这里讨论的是对嵌入式linux系统的启动过程的输出信息的注释,通过我们的讨论,大家会对嵌入式linux启动过程中出现的、以前感觉熟悉的、但却又似是而非的东西有一个确切的了解,并且能了解到这些输出信息的来龙去脉。嵌入式linux的启动
2012-07-26 23:43:02 1052 1
转载 用户空间与kernel空间通信的例子(利用mmap)
#include linux/config.h>#include linux/module.h>#include linux/kernel.h>#include linux/mm.h>MODULE_LICENSE("GPL");MODULE_AUTHOR("Wheelz");MODULE_DESCRIPTION("mmap demo");static unsig
2012-07-26 23:38:36 606
转载 常用的简单的互斥的例子
总结一下, 我们写module的时候, 常用的简单的互斥的例子:以下是个一个例子, 只有一个进程才能打开open() , 其他的进程不可以,直接返回。大家可以比较一下优劣。 -------------------------------------------------用信号量:static DECLARE_MUTEX(char_se
2012-07-26 23:36:15 1814
转载 linux 实时和抢占的学习日记
Linux 实时技术与典型实现分析, 第 1 部分: 介绍http://www.ibm.com/developerworks/cn/linux/l-lrt/part1/Linux 实时技术与典型实现分析, 第 2 部分: Ingo Molnar 的实时补丁http://www.ibm.com/developerworks/cn/linux/l-lrt/part2/实
2012-07-26 23:32:19 416 1
转载 kernel与用户程序批量传输数据的方法
debugfs以前听说过, 没怎么用过 。现在知道relayfs ,可真是个好东西啊。 现在正在研究中,找到两篇经典的文章: 在 Linux 下用户空间与内核空间数据交换的方式,第 1 部分: 内核启动参数、模块参数与sysfs、sysctl、系统调用和netlinkhttp://www.ibm.com/developerworks/cn/linux/l
2012-07-26 23:28:24 709
转载 unix/Linux 低级IO函数的用法
写module ,必要的应用编程知识是应该要有的, 否则 ,怎么写应用程序来测试你的module或者driver呢?而且最主要的是 , 了解上层调用的接口, 你就明白了上层的开发者需要什么, 自己才好实现什么。 把手里的看书的事情都放下, 先把 Unix环境高级编程这本书 的第三章 彻底搞熟它 内容包括:open() ,尤其是各种常见的参数,到底是什么意思, 比如常
2012-07-26 23:25:42 365
转载 ARM的异常处理
ARM的异常处理 对于ARM核,可以且只能识别7种处理器异常,每种异常都对应一种ARM处理器模式,当发生异常时,ARM处理器就切换到相应的异常模式,并调用异常处理程序进行处理。 ARM核异常处理的一般过程是: (1)保存异常返回地址到r14_(确切的说是当前PC); (2)保存当前CPSR到SPSR_; (3)改写CP
2012-07-26 23:22:23 708
转载 System.map文件的作用
System.map文件的作用2008-11-11 19:48编译:赵炯 www.plinux.org (gohigh@sh163.net)有关System.map文件的信息好象很缺乏。其实它一点也不神秘,并且在整个事情当中它并不象看上去那么得重要。但是由于缺乏必要的文档说明,使其显得比较神秘。它就象耳垂,我们每个人都有,但却不知道是干什么用的。本网页就是用来说明这个问题的。注
2012-07-26 23:14:29 660
转载 kernel地址转换的函数
这个在编程的时候常用。 一定搞清楚他们之间的关系。 struct page * buffer_page; unsigned long buffer_virt; buffer_virt = get_zeroed_page(GFP_ATOMIC))) { buffer_page = virt_to_page(buffer_virt); u
2012-07-26 23:10:42 434
转载 查看vmlinux的符号信息
ld的中文手册:http://www.diybl.com/course/6_system/linux/Linuxjs/2008622/127448.html 这里还有一本书 http://book.51cto.com/art/200904/121018.htm 还不错介绍ELF。 用 xx-objdump 来查看 binary的信息,尤其是调试信息 这几天,一直在研究m
2012-07-26 23:06:47 5105
转载 Linux 内核软中断(softirq)执行分析
http://blog.csdn.net/leopard_ray/archive/2007/11/08/1874148.aspx 今天无意中看了眼 2.6 内核的软中断实现,发现和以前我看到的大不相同(以前也是走马观花,不大仔细),可以说改动很大。连 softirq 的调用点都不一样了,以前是三个调用点,今天搜索了一下源代码,发现在多出了ksoftirqd 这
2012-07-26 23:03:06 1070
转载 Linux内核学习笔记之网卡驱动的详细分析:RTL8139
学习应该是一个先把问题简单化,在把问题复杂化的过程。一开始就着手处理复杂的问题,难免让 人有心惊胆颤,捉襟见肘的感觉。读Linux网卡驱动也是一样。那长长的源码夹杂着那些我们陌生的变量和符号,望而生畏便是理所当然的了。不要担心,事情 总有解决的办法,先把一些我们管不着的代码切割出去,留下必须的部分,把框架掌握了,哪其他的事情自然就水到渠成了,这是笔者的心得。一般在使用的Linux网卡驱动代
2012-07-26 22:58:30 1865
转载 Linux 内核DMA机制
目录[隐藏]12 DMA控制器硬件结构2.1 DMA通道使用的地址2.2 DMA操作函数2.3 DMA映射2.3.1 (1)建立一致 DMA 映射2.3.2 (2)建立流式 DMA 映射2.3.3 (3)分散/集中映射2.4 DMA池2.5 一个简单的使用DMA 例子
2012-07-26 00:13:49 540
转载 关于 如何实践kernel/driver/u-boot ,怎么样按照作者的思路实现自己的代码
给你指一个方向或者说是方法, 可以提高自己编程kernel/driver/u-boot的能力,或者说写code的能力。 举个例子, 比如说 kernel 里面的clock时钟的初始化部分, kernel的代码也不复杂, 但是我们要达到的目标就是 根据datasheet 能自己写出来,而不仅仅能看明白, 好比说 ,会看小说的人,不见得都会写小说, 金庸只有一个。 我们现在就
2012-07-26 00:11:17 966
转载 理解编译预处理
在将一个C源程序转换为可执行程序的过程中, 编译预处理是最初的步骤. 这一步骤是由预处理器(preprocessor)来完成的. 在源流程序被编译器处理之前, 预处理器首先对源程序中的"宏(macro)"进行处理. C 初学者可能对预处理器没什么概念, 这是情有可原的: 一般的C编译器都将预处理, 汇编, 编译, 连接过程集成到一起了. 编译预处理往往在后台运行. 在有的C编译器中, 这些过程统
2008-03-11 09:05:00 901 1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人