linux内核与驱动
guan506713512
进门前,请脱去烦恼回家时,带快乐回来
展开
-
Linux驱动程序设计之一---- Linux内核模块设计
UNIT 1 Linux内核模块设计 1. 单体内核 VS 微内核2. Hello,kernel模块实例3. 内核模块的Makefile4. 模块的加载与测试5. 内核符号表6. 应用程序 VS Linux 内核模块7. 其他转载 2012-10-08 15:33:03 · 1002 阅读 · 0 评论 -
ARM Linux 3.x的设备树(Device Tree)
宋宝华 Barry Song 1. ARM Device Tree起源Linus Torvalds在2011年3月17日的ARM Linux邮件列表宣称“this whole ARM thing is a f*cking pain in the ass”,引发ARM Linux社区的地震,随后ARM社区进行了一系列的重大修正。在过去的ARM Linux中,arch/arm/pla转载 2014-08-26 22:48:25 · 694 阅读 · 0 评论 -
(DT系列三)系统启动时, dts 是怎么被加载的
转自:http://blog.csdn.net/lichengtongxiazai/article/details/38941913转载 2014-09-15 09:48:46 · 1299 阅读 · 0 评论 -
(DT系列四)驱动加载中, 如何取得device tree中的属性
转自:http://blog.csdn.net/lichengtongxiazai/article/details/38941933转载 2014-09-15 09:50:47 · 972 阅读 · 0 评论 -
(DT系列五)Linux kernel 是怎么将 devicetree中的内容生成plateform_device
转自:http://blog.csdn.net/lichengtongxiazai/article/details/38942033转载 2014-09-15 09:54:28 · 2596 阅读 · 0 评论 -
指针的灵活使用(分析Device tree案例)
/** Checks if the given "compat" string matches one of the strings in * the device's "compatible" property */int of_device_is_compatible(const struct device_node *device,const char *compat)转载 2014-09-15 09:57:23 · 886 阅读 · 0 评论 -
(DT系列一)DTS结构及其编译方法
DTS结构及其编译方法一:主要问题1,需要了解dtsi与dts的关系2,dts的结构模型3,dts是如何被编译的,以及编译后会生成一个什么文件.二:参考文字1,DTS(device tree source).dts文件是一种ASCII文本格式的DeviceTree描述。基本上,在ARMLinux内,一个.dts文件对应一个ARM的machine,一般转载 2014-09-15 09:46:53 · 1317 阅读 · 0 评论 -
(DT系列二)device tree的书写规范
devicetree的书写规范下面从节点,属性,reg,ranges,中断控制器等几个方面叙述devicetree的书写规范。1,dts的基本元素:节点.dts(或者其include的.dtsi)基本元素为结点和属性。举例说明节点的概念:/ { node1 { a-string-property = "A string"; a-strin转载 2014-09-15 09:49:38 · 996 阅读 · 0 评论 -
(DT系列六)devicetree中数据和 struct device有什么关系
devicetree中数据和structdevice有什么关系总体来说,devicetree与structdevice的关系应该还是在其生成platformdevice的时候,一直传递的structdevice *parent参数。下面先把其源码中传递过程描述如下(仍以At91rm9200为例):1,DT_MACHINE_START(at91sam_dt,"Atmel转载 2014-09-15 09:55:50 · 879 阅读 · 0 评论 -
lcd fb参数如何计算
本文参考了:http://www.linuxidc.com/Linux/2011-01/31800.htm感谢该文的作者。Linux内核的amba lcd控制器使用clcd_panel结构体表示一个LCD屏的硬件参数:/* include/linux/fb.h */struct fb_videomode {const char *name; /* optional */u32转载 2014-08-26 11:02:57 · 740 阅读 · 0 评论 -
Linux内核栈信息获取与理解
1内核栈获取C语言的函数调用,是通过栈来实现的。如下图所示:函数调用栈内核异常或死机时,经常在内核日志中看到打印的栈信息和寄存器值。从函数栈信息,我们可以知道函数间的调用关系,从栈和寄存器数据,还可以得到各个变量、参数的值。对Linux内核理解和故障定位非常有帮助。若希望打印出栈信息的函数中加上转载 2013-09-27 15:28:00 · 1810 阅读 · 0 评论 -
linux内核调试方法总结
内核开发比用户空间开发更难的一个因素就是内核调试艰难。内核错误往往会导致系统宕机,很难保留出错时的现场。调试内核的关键在于你的对内核的深刻理解。一 调试前的准备在调试一个bug之前,我们所要做的准备工作有: 有一个被确认的bug。包含这个bug的内核版本号,需要分析出这个bug在哪一个版本被引入,这个对于解决问题有极大的帮助。可以采用二分查找法来逐步锁定bug引入版转载 2013-09-27 10:31:55 · 1376 阅读 · 0 评论 -
Linux驱动程序设计之二---Linux字符驱动程序(上)
UNIT 2 Linux字符驱动程序(上) 1. 机制和策略2. Linux驱动程序概述3. 设备节点与设备号4. 重要的数据结构5. 字符驱动的注册与注销6. 文件操作接口7. 使用新设备 1.机制和策略转载 2012-10-08 15:35:24 · 859 阅读 · 0 评论 -
Linux驱动程序设计之三---Linux字符驱动程序(下)
Linux字符驱动程序(下) 4.重要的数据结构如同你想象的, 注册设备编号仅仅是驱动代码必须进行的诸多任务中的第一个. 我们将很快看到其他重要的驱动组件, 但首先需要涉及一个别的. 大部分的基础性的驱动操作包括 3 个重要的内核数据结构, 称为 file_operations, file, 和 inode. 需要对这些结构的基本了解才能够做大量感兴趣的事情,因此我们现转载 2012-10-08 15:36:21 · 899 阅读 · 0 评论 -
Linux驱动程序设计之四---并发和竞态
UNIT 3 并发与竟态 1. 并发与竞争条件概述2. 信号量与互斥体3. Completion4. 原子操作5. Spinlock6. 信号量 VS spinlock7. 避免死锁的规则 1. 并发转载 2012-10-08 15:37:20 · 678 阅读 · 0 评论 -
volatile
volatile 影响编译器编译的结果,指出,volatile 变量是随时可能发生变化的,与volatile变量有关的运算,不要进行编译优化,以免出错,(VC++ 在产生release版可执行码时会进行编译优化,加volatile关键字的变量有关的运算,将不进行编译优化。)。例如: volatile int i=10; int j = i; ... int k = i;转载 2013-05-23 15:02:53 · 625 阅读 · 0 评论 -
dump_stack的简单使用
刚刚接触内核,在调试过程中用printk打印信息当然是直接有效的办法,但当我们不知道一个函数或者一个模块到底在哪里出了问题时我们可以利用dump_stack有效的找到问题的根源,下面只是简单的给出了使用方法。 我在自己的主机上试了一下dump_stack() Makefile文件: obj-m := hello.oKERNELBUILD :=/lib/modules/转载 2013-10-08 11:08:18 · 2646 阅读 · 0 评论 -
linux内核学习大纲 .
1. 内核学习方法,编译、调试等常见问题1.1 关于编译升级内核到2.6.0的一些问题 作者:ommm http://linux.chinaunix.net/bbs/thread-281831-1-5.html1.2 VMWare Workstation 6.0调试Linux Kernel,竟如此方便 作者:albcamus http://linux转载 2013-10-08 13:50:02 · 1130 阅读 · 0 评论 -
linxu s3c2440 LCD驱动 测试程序 .
对应的LCD设备驱动参见:http://blog.csdn.net/gzliu_hit/article/details/6738659#include #include #include #include #include #define RED_COLOR565 0x0F100#define GREEN_COLOR565 0x007E0#define BL转载 2013-10-09 17:22:06 · 846 阅读 · 0 评论 -
写个dump_stack
写个dump_stackhttp://bbs.chinaunix.net/thread-1916616-1-1.html简单实现dump_stack0.首先确保你能写个内核模块:打印"hello kernel" 如果熟悉dump_stack的话,完全可以绕开此文,或者自己去看dump_stack代码实现之。1.dump_stack是什么经常调试内核一定对这个函数不陌生转载 2013-09-26 17:36:01 · 776 阅读 · 0 评论 -
Linux下可执行文件格式详解
Linux下面,目标文件、共享对象文件、可执行文件都是使用ELF文件格式来存储的。程序经过编译之后会输出目标文件,然后经过链接可以产生可执行文件或者共享对象文件。Linux下面使用的ELF文件和Windows操作系统使用的PE文件都是从Unix系统的COFF文件格式演化来的。 我们先来了解一些基本的想法。首先,最重要的思路是一个程序从人能读懂的格式转换为供操作系统执行的二进制格式之后,代码转载 2014-09-02 10:37:07 · 2157 阅读 · 0 评论