内核编程
zhongyhc
天行健,君子以自强不息;地势坤,君子以厚德载物
展开
-
PCI 总线枚举
一:前言 Pci,是Peripheral Component Interconnect的缩写,翻译成中文即为外部设备互联.与传统的总线相比.它的传输速率较高.能为用户提供动态查询pci deivce.和局部总线信息的方法,此外,它还能自动为总线提供仲裁.在近几年的发展过程中,被广泛应用于多种平台. pci协议比较复杂,关于它的详细说明,请查阅有关pci规范的资料,本文不会重复这些部份. 对于转载 2013-06-06 22:43:14 · 2220 阅读 · 0 评论 -
linux内核编译步骤
linux内核编译步骤 对于linux新手来说,编译内核相对有一些难度,甚至不知道如何入手,我通过在网上收集这方面的资料,最终编译成功.现在 我归纳了一下,写出这一篇还算比较详细的步骤,希望能对各位新手有一些 帮助。 1、 准备工作(1) 整理出系统需要支持的硬件、文件系统类型以及网络协议等内容。(2) 建议用命令uname –r 查看一转载 2014-11-13 10:33:00 · 576 阅读 · 0 评论 -
Linux内核(3)——make mrproper与make clean的区别
首先,这两个命令都是用于删除编译内核时产生的相关文件的。两者的区别如下:make mrproper命令会删除所有的编译生成文件、内核配置文件(.config文件)和各种备份文件,所以几乎只在第一次执行内核编译前才用这条命令(见评论)。make clean命令则是用于删除大多数的编译生成文件,但是会保留内核的配置文件.config,还有足够的编译支持来建立扩展模块。所以你若只想删转载 2014-11-13 22:07:44 · 586 阅读 · 0 评论 -
Linux内核(4)——grub.conf文件参数详解
原文地址:http://zouqiu168.blog.163.com/blog/static/121732462006930105025141/解读grub.conf文件 我们将来看看grub.conf文件内语句,(注:...)内的东西是我们的解读内容.# grub.conf generated by anaconda## Note that you do no转载 2014-11-13 22:08:24 · 3682 阅读 · 0 评论 -
GRUB和LILO的区别
从普通的桌面用户到 Linux?系统管理员,大部分 Linux 用户都使用过一种名为引导加载程序的工具。此类工具的不同变种会提供不同层次的支持和功能。在很多情况下,Linux 发行版默认安装的引导加载程序并不总是适合需要;每个引导加载程序的默认设置也是如此。在本文中,Laurence Bonney 讨论了两个流行的引导加载程序 —— LILO 和 GRUB —— 的优点和缺点,并建议了很多配置,以原创 2014-11-14 10:26:25 · 921 阅读 · 0 评论 -
VirtualBox在CentOS中安装VBOXADDITIONS
在 Oracle Linux 上安装 Shared Folders对于 Oracle Database 11g,ZIP 安装文件总共有 2 GB 多。由于需要从每个来宾 VM 访问它们以安装数据库,我决定利用 Oracle VM VirtualBox 的 Shared Folders。Shared Folders 特性允许来宾 VM 访问主机文件系统中的存储,因此它允许我对每个 VM 都访问相转载 2014-11-14 17:17:47 · 677 阅读 · 0 评论 -
Linux内核(1)——copy_to_user和copy_from_user两个函数的分析
今天在做Linux设备驱动的实验,对copy_to_user和copy_from_user两个函数的功能很不了解,在网上搜到一篇文章贴出来供参考:http://apps.hi.baidu.com/share/detail/16028954 整理一下原文: copy_to_user和copy_from_user就是在进行驱动相关程序设计的时候,要经常遇转载 2014-11-13 22:06:08 · 1281 阅读 · 0 评论 -
Linux内核(5)——系统调用与内核编译实验
今天在做Linux系统调用与内核编译的实验,主要任务有两个:1)添加一个新的系统调用:mysyscall,功能仅为打印一条语句。2)编译内核。 实验步骤如下:1.在官网(www.kernel.org)上下载最新的内核压缩包,本次实验版本为:linux-2.6.36.2.tar.bz2 2.以root登录,将内核包复制到usr/src下:cp li转载 2014-11-13 22:09:07 · 684 阅读 · 0 评论 -
Linux下/proc目录简介
1. /proc目录Linux 内核提供了一种通过 /proc 文件系统,在运行时访问内核内部数据结构、改变内核设置的机制。proc文件系统是一个伪文件系统,它只存在内存当中,而不占用外存空间。它以文件系统的方式为访问系统内核数据的操作提供接口。用户和应用程序可以通过proc得到系统的信息,并可以改变内核的某些参数。由于系统的信息,如进程,是动态改变的,所以用户或应用程转载 2014-11-27 22:33:58 · 589 阅读 · 0 评论 -
BSOD及代码详解
BSoD,Blue Screen of Death,即蓝屏死机。微软操作系统的经典死机提示屏幕。通常是由于工作在Ring0级的内核程序出错导致的,比如内核程序访问了不可访问的内存会立即导致BSoD。Windows蓝屏错误代码详解编辑蓝屏错误代码祥解我们在使用Windows的时候,出现蓝屏是经常的事。大多数时候,我们只能reset,现在公布蓝屏错误代码含义,以备使用。 数 值 叙转载 2014-10-21 10:28:05 · 1656 阅读 · 0 评论 -
Linux系统结构 详解
Linux系统一般有4个主要部分:内核、shell、文件系统和应用程序。内核、shell和文件系统一起形成了基本的操作系统结构,它们使得用户可以运行程序、管理文件并使用系统。部分层次结构如图1-1所示。 1. linux内核 内核是操作系统的核心,具有很多最基本功能,它负责管理系统的进程、内存、设备驱动程序、文件和网络系统,决定转载 2014-11-06 17:24:14 · 714 阅读 · 0 评论 -
GCC 64位程序的makefile条件编译心得——32位版与64位版、debug版与release版(兼容MinGW、TDM-GCC)
为了适应现在越来越流行的64位系统,经常需要将代码分别编译为32位版和64位版。其次,除了需要生成debug版用于开发测试外,还需要生成release版用于发布。本文介绍了如何利用makefile条件编译来生成这些版本,而且不仅兼容Linux下的GCC,还支持MinGW、TDM-GCC等Windows下的GCC编译器。一、C程序代码 为了测试条件编译的效果,以下面这个C语言程序为例(转载 2014-11-07 16:57:56 · 995 阅读 · 0 评论 -
vmic命令行
1.wmic=Microsoft WindowsManagement Instrumentation2. C:\WINDOWS\system32\wbem 下的东西,特别是.xsl格式化文件,实现wmic的格式化输出如wmic /output:c:\process.html process list /format:htable.xsl/format:textvaluelist.x转载 2014-12-04 16:27:25 · 5115 阅读 · 1 评论 -
【Linux】rsync用法
【Linux】rsync用法 rsync 最早是想要取代 rcp 这个指令的,因为 rsync 不但传输的速度快,而且他在传输时, 可以比对本地端与远端主机欲复制的档案内容,而仅复制两端有差异的档案而已,所以传输的时间就相对的降低很多! 此外, rsync 的传输方式至少可以透过三种方式来运作:· 在本机上直接运作,用法就与 cp 几乎一模一样,转载 2015-04-23 17:55:26 · 484 阅读 · 0 评论 -
Linux内核的抽象结构
图1.2 Linux内核子系统及其之间的关系 1.进程调度(SCHED)控制着进程对CPU的访问。当需要选择下一个进程运行时,由调度程序选择最值得运行的进程。可运行进程实际是仅等待 CPU 资源的进程,如果某个进程在等待其他资源,则该进程是不可运行进程。Linux 使用了比较简单的基于优先级的进程调度算法选择新的进程。转载 2015-11-27 17:38:06 · 520 阅读 · 0 评论 -
linux device tree源代码解析
//Based on Linux v3.14 source codeLinux设备树机制(Device Tree)一、描述ARM Device Tree起源于OpenFirmware (OF),在过去的Linux中,arch/arm/plat-xxx和arch/arm/mach-xxx中充斥着大量的垃圾代码,相当多数的代码只是在描述板级细节,而这些板级细节对于内核来讲,转载 2016-03-22 14:19:47 · 805 阅读 · 0 评论 -
一步一步学GTK+之布局
本来想接上篇把关于窗口方面的写的更详尽一点,但因为我做软件的习惯来说还暂时用不不到、我们先跳过,然后先说说窗口中的布局。跟大多数软件界面一样,一般包含标题栏、菜单栏、工具栏、状态栏和工作区等。首先,我必须要有一个初步的规划,因为是自己设计一些软件,我只需要问我自己几个问题(why/how),而不需要跟设计部进行沟通。1.Q:为什么要设计这个demo? A:初步认识GTK+的转载 2014-11-09 22:59:48 · 711 阅读 · 0 评论 -
Linux下的GTK图形界面编程
GTK(GIMP Toolkit)是一个图形用户编程的接口。它完全免费,所以用来开发自由软件或商业软件都不需要花费什么。现在很多Linux集成系统都已经将 GTK1.2版本打包进去了。包括RedHat Linux 6.0以上版本,还有中文化的Turbo Linux等等。它也越来越被普遍的应用于UNIX系统编程。 还有一个组件叫Glib,它包含转载 2014-11-09 22:57:26 · 6576 阅读 · 1 评论 -
PCI 总线初始化
在《Linux内核修炼之道》里,文章作者对如何使用Kconfig和Makefile定位内核源码有精彩的阐述。并且该作者还在《Linux那些事儿 之 我是PCI》系列文章中对X86架构下的PCI总线和设备驱动做了很详细的分析。由于工作需要,我在此基础上分析了ARM体系结构的PCI总线驱动,并把心得和笔记整理一下,或许对日后解析其他子系统有所帮助。以下涉及到的Linux内核源码均为2.6.23版本。转载 2013-06-06 22:49:39 · 1424 阅读 · 0 评论 -
Linux oops
什么是Oops?从语言学的角度说,Oops应该是一个拟声词。当出了点小事故,或者做了比较尴尬的事之后,你可以说"Oops",翻译成中国话就叫做“哎呦”。“哎呦,对不起,对不起,我真不是故意打碎您的杯子的”。看,Oops就是这个意思。在Linux内核开发中的Oops是什么呢?其实,它和上面的解释也没什么本质的差别,只不过说话的主角变成了Linux。当某些比较致命的问题出现时,我们的Linux转载 2013-06-06 23:30:50 · 708 阅读 · 0 评论 -
内核调试
1.调试技术内核编程带来了它自己的,独特的调试挑战。内核代码不能简单地在调试器中执行,也不能被简单地跟踪,因为它是一组不与特定进程相关的功能。内核代码的错误非常难重现并且可能导致整个系统崩溃,因此破坏很多用来发现它们的证据。本章将介绍在如此恼人的情况下你可以用来监视内核代码和跟踪错误的技术。1.1.内核中的调试支持在第二章中,我们建议你编译和安装你自己的内核,而不是运行你所使用的发转载 2013-06-06 23:34:19 · 935 阅读 · 1 评论 -
内核启动
分析setup_arch(setup.c):setup_processor 设置处理器的类型,并进行初始化setup_machine 返回机器类型描述结构体信息setup_arch()对内核参数的解析 setup_arch()函数是体系结构相关的内核初始化过程,这其中对内核参数有涉及的变量和操作如下 void __init setup_arch(char **cmdline转载 2013-06-06 23:37:57 · 608 阅读 · 0 评论 -
内核移植相关
嵌入式Linux内核移植相关代码分析 [转载请注明出处,www.linuxforum.net,作者:张洪耿,patrick_zhg@hotmail.com] 本文通过整理之前研发的一个项目(ARM7TDMI +uCLinux),分析内核启动过程及需要修改的文件,以供内核移植者参考。整理过程中也同时参考了众多网友的帖子,在此谢过。由于整理过程匆忙,难免错误及讲解的不够清楚之处,请各转载 2013-06-06 23:39:14 · 627 阅读 · 0 评论 -
make menuconfig 执行流程分析
linux/2.6.20.6/make menuconfig 当在顶层目录执行”make menuconfig”会执行顶层Makefile 第415行的规则 config %config: scripts_basic outputmakefile FORCE $(Q)mkdir -p include/linux include/config转载 2013-06-06 23:51:04 · 781 阅读 · 0 评论 -
lmbench的使用方法
一、引言要评价一个系统的性能,通常有不同的指标,相应的会有不同的测试方法和测试工具,一般来说为了确保测试结果的公平和权威性,会选用比较成熟的商业测试软件。但在特定情形下,只是想要简单比较不同系统或比较一些函数库性能时,也能够从开源世界里选用一些优秀的工具来完成这个任务,本文就通过lmbench 简要介绍系统综合性能测试。二、测试软件Lmbench是一套简易,可移植的,符合ANSI/转载 2013-06-06 23:27:44 · 3026 阅读 · 0 评论 -
Linux命令行解析
处理模型Linux kernel 的启动包括很多组件的初始化和相关配置,这些配置参数一般是通过command line 进行配置的。在进行后续分析之前,先来理解一下command line 的处理模型:要处理的对象是一个字符串,其中包含了各种配置信息,通常各个配置之间通过空格进行分离,每个配置的表达形式是如:param=value1,value2或者很简单就是一个rw 。转载 2013-06-06 23:32:17 · 777 阅读 · 0 评论 -
Linux内核调试技术指南
前两天,完成了ucos在2440上的移植,以及boot的修改。今天突然想到,我在linux下,该如何来编写,调试比较复杂的驱动。我想这个问题应该从如何调试内核入手,先转载两个文字,待西西看来。系统搭建过程中,对于系统平台搭建工程师在完成Bootloader 的调试之后就进入Kernel 裁减移植的阶段,其中最重要的一步是Kernel 启动的调试,在调试Kernel过程中通常遇到最常见的问题是启转载 2013-06-06 23:36:26 · 1972 阅读 · 0 评论 -
根文件系统的挂载流程分析
一:前言前段时间在编译kernel的时候发现rootfs挂载不上。相同的root选项设置旧版的image却可以。为了彻底解决这个问题。研究了一下rootfs的挂载过程。特总结如下,希望能给这部份知识点比较迷茫的朋友一点帮助。二:rootfs的种类总的来说,rootfs分为两种:虚拟rootfs和真实rootfs.现在kernel的发展趋势是将更多的功能放到用户空间完成。以保持内核的精简转载 2013-06-06 23:46:37 · 595 阅读 · 0 评论 -
根文件系统的加载
前言:本篇文章以S3C6410公版的Linux BSP和U-Boot来进行分析,文中所有提及的名词和数据都是以该环境为例,所有的代码流程也是以该环境为例来进行分析。哈哈。如果有不正确或者不完善的地方,欢迎前来拍砖留言或者发邮件到guopeixin@126.com进行讨论,先行谢过。简单的来说,根文件系统包括虚拟根文件系统和真实根文件系统。在Kernel启动的初始阶段,首先去创建虚拟转载 2013-06-06 23:47:58 · 630 阅读 · 0 评论 -
Linux 内核配置机制(make menuconfig、Kconfig、makefile)讲解
前面我们介绍模块编程的时候介绍了驱动进入内核有两种方式:模块和直接编译进内核,并介绍了模块的一种编译方式——在一个独立的文件夹通过makefile配合内核源码路径完成 那么如何将驱动直接编译进内核呢? 在我们实际内核的移植配置过程中经常听说的内核裁剪又是怎么麽回事呢?我们在进行linux内核配置的时候经常会执行make menuconfi转载 2013-06-06 23:49:50 · 722 阅读 · 0 评论 -
Linux source code Makefile分析
linux-2.6.x makefile linux-2.6.20.6/Documentation/kbuild/makefiles.txt 一、 概述 linux的makefile有五个部分: Makefile:顶层Makefile .config:内核配置文件 arch/$(ARCH)/Makefile:体系结构相转载 2013-06-06 23:52:20 · 889 阅读 · 0 评论 -
GUID Partition Table
帮忙统计下TS140和TD340的实际的测试时间转载 2014-05-14 11:18:28 · 3415 阅读 · 0 评论 -
MBR & GPT
MBR 和 GPT 的问题已经走到了非常现实的阶段-3T硬盘开始普及。MBR 由于对 3T 硬盘寻址无法支持,终于要开始被弃用了。但仅仅只是“开始”,我感觉至少10年之内 MBR 还不会消失。恐怕当GPT适应不了需求的时候,MBR才会消失。一、MBR 的失误说“失误”牵强了一点。我们不能要求当年只有5M的硬盘就扣出2M来放寻址信息。计算机永远比你想象的要发展的快。首先你要有一些转载 2014-05-14 11:21:23 · 618 阅读 · 0 评论 -
Linux在应用层读写寄存器的方法
转载地址:https://blog.csdn.net/liukang325/article/details/26601811可以通过操作/dev/mem设备文件,以及mmap函数,将寄存器的地址映射到用户空间,直接在应用层对寄存器进行操作,示例如下:#include <stdio.h>#include <stdlib.h>#include <time.h&g...转载 2019-09-29 22:56:36 · 720 阅读 · 0 评论