- 博客(27)
- 资源 (1)
- 收藏
- 关注
转载 转载_linux内核分析(某位大牛的文章)
启动 当PC启动时,Intel系列的CPU首先进入的是实模式,并开始执行位于地址0xFFFF0处的代码,也就是ROM-BIOS起始位置的代码。BIOS先进行一系列的系统自检,然后初始化位于地址0的中断向量表。最后BIOS将启动盘的第一个扇区装入到0x7C00,并开始执行此处的代码.这就是对内核初始化过程的一个最简单的描述。 最初,Linux核心的最开始部分是用8086汇
2013-08-29 15:11:06 20154 1
转载 转载_Linux 运行时内核分析
我们基于RH9 内核从两部分来分析Linux系统动态运行过程 一: 系统初始化开始,Linux进入保护模式,初始内存系统、中断系统、文件系 统等,直到创建第一个用户进程。 二: 用户进程通过系统调用主动进入内核,CPU 接受中断请求被动执行各种中断服务。 第一部分 系统初始化 进入保护模式 Arch/i386/boot/Setup.s gdt: .fil
2013-08-29 13:54:10 1808
转载 转载_内核启动详解
第一部分 背景知识简介 几乎所有编写代码的人都有这种体会:如今在计算机这个行业中,许多技术不是你不懂,而是你不知道。所以,在分析之前有些背景知识是必须要知道的。 一. 硬盘结构简介 1. 硬盘参数释疑 到目前为止, 人们常说的硬盘参数还是古老的 CHS (Cylinder/Head/Sector)参数. 那么为什么要使用这些参数, 它们的意义是什么? 它们的
2013-08-29 13:35:08 696
转载 转载_Linux 的多线程编程的高效开发经验
背景Linux 平台上的多线程程序开发相对应其他平台(比如 Windows)的多线程 API 有一些细微和隐晦的差别。不注意这些 Linux 上的一些开发陷阱,常常会导致程序问题不穷,死锁不断。本文中我们从 5 个方面总结出 Linux 多线程编程上的问题,并分别引出相关改善的开发经验,用以避免这些的陷阱。我们希望这些经验可以帮助读者们能更好更快的熟悉 Linux 平台的多线程编程。
2013-08-29 13:26:32 691
转载 转载_获取Linux内核未导出符号的几种方式
从Linux内核的2.6某个版本开始,内核引入了导出符号的机制。只有在内核中使用EXPORT_SYMBOL或EXPORT_SYMBOL_GPL导出的符号才能在内核模块中直接使用。然而,内核并没有导出所有的符号。例如,在3.8.0的内核中,do_page_fault就没有被导出。 而我的内核模块中需要使用do_page_fault,那么有那些方法呢?这些方法分别有什么优劣呢?
2013-08-28 10:31:18 975
转载 转载_Linux内核调试方法
kdb:只能在汇编代码级进行调试; 优点是不需要两台机器进行调试。 gdb:在调试模块时缺少一些至关重要的功能,它可用来查看内核的运行情况,包括反汇编内核函数。 kgdb:能很方便的在源码级对内核进行调试,缺点是kgdb只能进行远程调试,它需要一根串口线及两台机器来调试内核(也可以是在同一台主机上用vmware软件运行两个操作系统来调试)printk() 是调试内核代码时最常
2013-08-27 16:00:34 2275
转载 转载_Linux内核延时研究与函数代码分析
jiffies 以前提过,但是用来计算函数调用的时间确实显得粒度太大(一个 jiffies = 1ms or 4ms )gettimeofday (用户态)和do_gettimeofday(内核态)用下来感觉不错。粒度可以达到us级别。试验过一个while 循环unsigned long i =0xffffffff; while(i--);按代码来讲,这个时间应该不算短,测出来的时间却是0. 估计
2013-08-27 10:18:32 691
转载 转载_如何得知深睡眠等各类进程的函数堆栈 -- DW-SW等
1. Abstract.2. Introduction我们开发的时候很痛苦的一件事情就是在进程进入深睡眠以后,没有调试手段,往往这种问题还都是一些很难解的概率性难题,而此时又不知道这个进程到底在什么地方深睡眠了。针对此问题,我开发了相应的驱动(请参考文章后附录的完整源代码)和应用 tool ,大家使用该方法就能够将一个进程的函
2013-08-27 10:17:16 3178
转载 转载_kdump的出现(基于嵌入式Linux的内核错误跟踪技术)
随着嵌入式Linux系统的广泛应用,对系统的可靠性提出了更高的要求,尤其是涉及到生命财产等重要领域,要求系统达到安全完整性等级3级以上[1],故障率(每小时出现危险故障的可能性)为10-7以下,相当于系统的平均故障间隔时间(MTBF)至少要达到1141 年以上,因此提高系统可靠性已成为一项艰巨的任务。对某公司在工业领域14 878个控制器系统的应用调查表明,从2004 年初到2007 年9月底
2013-08-26 19:51:05 1692
转载 转载_移植LINUX ARM篇
初学嵌入式Linux,感觉需要学习的东西太多了。把学习过程中的收获和问题记录在这里,算是一份经验吧。2006-08-10 前面利用开发板带的现成的东西step by step让Linux 2.4.19在开发板上跑起来了,对于开发的流程也有了一定的认识。现在想对每一步进行详细深入的探讨,好好学习一下,把笔记记录下来,省得忘记了。有些内容是从看过的书中摘要过来的,大部分是自己实践后的心得
2013-08-26 19:47:57 2185
转载 转载_Linux 内核驱动--阻塞与非阻塞机制及Poll/Select分
阻塞操作是指,在执行设备操作时,若不能获得资源,则进程挂起直到满足可操作的条件再进行操作。非阻塞操作的进程在不能进行设备操作时,并不挂起。被挂起的进程进入sleep状态,被从调度器的运行队列移走,直到等待的条件被满足。 在Linux驱动程序中,我们可以使用等待队列(wait queue)来实现阻塞操作。wait queue很早就作为一个基本的功能单位出现在Linux内核里了,它以队列为基
2013-08-23 11:20:05 651
转载 转载_理解poll_wait
poll_wait()是用在select系统调用中的. 一般你的代码会有一个struct file_operations结构, 其中fop->poll函数指针指向一个你自己的函数, 在这个函数里应该调用poll_wait() 当用户调用select系统调用时,select系统调用会 先调用 poll_initwait(&table); 然后调用你的 fop-
2013-08-23 10:49:49 667
转载 转载_ARM-Linux内核驱动加载过程思路
Ø 取得驱动C文件并建立相应文件夹实现内核添加(以编译测试驱动程序为例)1) 在相应的文件夹下面建立驱动文件夹将C程序放入该驱动文件夹下2) 创建或下载驱动C文件的头文件3) 编辑该驱动集合(该驱动模块)下面的Makefile 添加编译选项#===============driver_test=========
2013-08-16 16:46:17 971
转载 转载_Linux下patch的制作和应用
转自:http://blog.chinaunix.net/u3/100239/showart_1984963.html首先介绍一下diff和patch。在这里不会把man在线文档上所有的选项都介绍一下,那样也没有必要。在99%的时间里,我们只会用到几个选项。所以必须学会这几个选项。1、diff -------------------- NAME
2013-08-16 16:39:38 495
转载 转载_Linux下如何查看系统启动时间和运行时间
1.uptime命令输出:16:11:40 up 59 days, 4:21, 2 users, load average: 0.00, 0.01, 0.002.查看/proc/uptime文件计算系统启动时间cat /proc/uptime输出: 5113396.94 575949.85第一数字即是系统已运行的时间5113396.94 秒,运用系统工具date即可算出系统
2013-08-15 19:42:42 746
转载 转载_Linux驱动开发必看
分类: LINUX详解神秘内核转载于http://www.it168.com 来源:Chinaunix 作者:Chinaunix 【IT168 技术文档】在开始步入Linux设备驱动程序的神秘世界之前,让我们从驱动程序开发人员的角度看几个内核构成要素,熟悉一些基本的内核概念。我们将学习内核定时器、同步机制以及内存分配方法。不过,我们还是得从头开始
2013-08-14 16:18:20 928
转载 转载___attribute__机制介绍
1. __attribute__GNU C的一大特色(却不被初学者所知)就是__attribute__机制。__attribute__可以设置函数属性(Function Attribute)、变量属性(Variable Attribute)和类型属性(Type Attribute)__attribute__前后都有两个下划线,并且后面会紧跟一对原括弧,括弧里面是相应的__attribu
2013-08-14 11:44:20 841
转载 转载_进程、轻量级进程(LWP)、线程
进程、轻量级进程(LWP)、线程进程、轻量级进程(LWP)、线程进程:程序执行体,有生命期,用来分配资源的实体线程:分配CPU的实体。 用户空间实现,一个线程阻塞,所有都阻塞。 内核实现,不会所用相关线程都阻塞。用LWP实现,用线程组表示这些线程逻辑上所属的进程。进程描述符进程描述符(简称pd, process descriptors),结构
2013-08-14 09:42:34 7731
转载 转载_linux 两种方式 创建内核线程
kernel_thread()、daemonize()------------------------------------------------------int thread_func(void *arg){ /* * 设置线程名 -- thread_name,ps可以看到的线程名 * 如果不使用daemonize设置内核线程名,并且kern
2013-08-13 16:41:55 1873
转载 转载_开漏(open drain)和开集(open collector)
在电路设计时我们常常遇到开漏(open drain)和开集(open collector)的概念。 所谓开漏电路概念中提到的“漏”就是指MOS FET的漏极。同理,开集电路中的“集”就是指三极管的集电极。开漏电路就是指以MOS FET的漏极为输出的电路。一般的用法是会在漏极外部的电路添加上拉电阻。完整的开漏电路应该由开漏器件和开漏上拉电阻组成。如图1所示: 组
2013-08-13 13:37:04 835
转载 转载_uboot传递内核参数全解析
一:启动参数的传递过程 启动参数是包装在数据结构里的,在linux kernel启动的时候,bootloader把这个数据结构拷贝到某个地址, 在改动PC跳向内核接口的同时,通过通用寄存器R2来传递这个地址的值,下面这句话就是uboot跳向linux kernel的代码(bootm命令) theKernel (0, bd->bi_arch_number, bd->bi_boot_p
2013-08-12 20:19:22 619
转载 转载_linux 串品驱动的 uart_port api
基于内核版本2.6.16.14. 写于(美国)东部时区 2006年05月05日 22点49分 . 下层串行API -------------------- $Id: driver,v 1.10 2002/07/22 15:27:30 rmk Exp $本文简要介绍了新的串行驱动的某些方面。这并不完整,有任何问题请联系在serial_amba.c可
2013-08-09 16:00:26 775
转载 转载_Linux procfs开发指南(部分翻译并做了精简)
Linux Kernel Procfs Guide Chapter 1. Introduction /proc文件系统(procfs)在linux内核中是一个特殊的文件系统,是一个虚拟的文件系统,只存在于内存中 注:proc/sys是sysctl文件,不属于procfs Chapter 2. Managing procfs entries 要使用proc
2013-08-09 14:24:38 1158
转载 转载_LINUX内核中的xx_initcall初始化标号
LINUX内核中有很多的初始化指示标志postcore_initcall(), arch_initcall(), subsys_initcall(), device_initcall(), etc. 这些起什么作用呢?查阅源代码(android goldfish-2.6.29)并搜索网上相关文章,对此做一总结。初始化标号先看这些宏的定义(定义在文件include/linux/ini
2013-08-09 13:43:55 555
转载 转载_linux设备驱动:poll和sellct
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx接下来会讲系统调用select在驱动中的实现,如果对系统调用select不太懂的话,建议先看书补习一下。xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
2013-08-05 18:38:40 543
转载 转载_15个步骤创立技术公司,并收获千万用户(一)
6Wunderkinder成立于2010年,是一家位于柏林的德国初创企业,公司创建一年后获得了Skype创始人设立的泛欧投资机构 Atomico投资420万美元。他们最早的产品是跨平台、基于云的任务管理工具——Wunderlist,用户可以使用它来制作详细的待办清单,并可以在朋友及同事之间分享这些代办事宜。随后该公司还发布了名为Wunderkit的项目管理软件,被认为是项目管理软件中的一匹黑马;然
2013-08-02 12:04:43 1148
转载 转载_i2c 知识点总结
0、 总线端:主要是mach-smdkc110.c和i2c_s3c2410.c两个文件:主要完成资源的注册,在s3c24xx_i2c_probe中创建adapter和client后总线端退出 设备端:主要是用户写的部分 通过i2c_add_driver 匹配i2c_driver的id_table中的name和 client中的name后,进一步初始化client并调用i2c_driv
2013-08-01 16:59:29 886
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人