自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(36)
  • 资源 (14)
  • 收藏
  • 关注

原创 内核驱动添加调试宏开关

想要对代码的debug部分做隔离或条件编译可以给EXTRA_CFLAGS增加-D选项。EXTRA_CFLAGS是MAKE命令默认参数。不需要显示添加在编译命令中ifneq ($(KERNELRELEASE),) obj-m := my.o my-objs := my.o EXTRA_CFLAGS += -I./ EXTRA_CFLAGS += -DDEBUG_S...

2019-05-25 17:32:35 1242

原创 收藏网址

udev规则以及编写:https://www.cnblogs.com/fah936861121/p/6496608.htmlLinux 运维 -- 存储:https://www.cnblogs.com/zk47/p/4736260.htmllinux查看设备信息和驱动安装信息https://blog.csdn.net/m1223853767/article/details/796150...

2019-03-27 19:24:09 196

转载 Adaptec raid卡命令行管理

IBM X3650使用的是Adaptec AAC-RAID集成raid卡,对此raid卡进行管理需要使用arcconf命令进行管理,此工具默认支持LINUX4,LINUX5系统;查看RAID卡型号:[root@linuxbak ~]# lspci |grep -i raid04:00.0 RAID bus controller: Adaptec AAC-RAID (Rocke...

2019-03-18 17:28:11 3871 1

转载 linux raid卡信息查询

首先获取scsi设备的信息。[root@server2 ~]# lsscsi[2:0:0:0] disk VMware, VMware Virtual S 1.0 /dev/sda[4:0:0:0] cd/dvd NECVMWar VMware SATA CD01 1.00 /dev/sr0有些操作系统没有lsscsi命令,则可以使用下面的方法获取scsi...

2019-03-18 11:09:35 10547

转载 加载内核模块-Unknown symbol错误分析

在调试过程中,发现一个问题,编译生成一个KO文件,insmod加载后报错:Unknown symbol var_set_integer (err 0)Unknown symbol parse_arg_eq (err 0)问题分析思路:一、用命令查看内核中是否已有这个内核符号,例如要查看是否有var_set_integer这个内核符号,输入命令:#cat /proc...

2019-03-04 16:54:23 2543

转载 存在依赖关系的内核模块的编译问题​​​​​​​

内核模块如果引用到Linux内核中的符号,这个则不属于模块间的依赖,因为内核导出的符号本身就是供内核模块所使用。本帖要讨论的是在两个独立编译的模块A和B之间,B如果要引用A导出的符号,在Makefile中该如何把这一信息加入的问题。绝大多数情形下,内核配置时能会启用CONFIG_MODVERSIONS,这意味着无论是内核还是内核模块,在导出符号时都会为该符号生成CRC校验码,这个校验码保存在Mo...

2019-03-04 15:38:14 773

原创 Linux设备模型(四)class

前面看过了设备驱动模型中的bus、device、driver,这三种都是有迹可循的。其中bus代表实际的总线,device代表实际的设备和接口,而driver则对应存在的驱动。但本节要介绍的class,是设备类,完全是抽象出来的概念,没有对应的实体。所谓设备类,是指提供的用户接口相似的一类设备的集合,常见的设备类的有block、tty、input、usb等等。     class对应的代码在d

2014-01-03 10:32:27 977

原创 Linux设备模型(三)platform

platform设备和驱动与linux设备模型密切相关。platform在linux设备模型中,其实就是一种虚拟总线没有对应的硬件结构。它的主要作用就是管理系统的外设资源。linux在引入了platform机制之后,内核假设所有的这些外设都挂载在platform虚拟总线上,以便进行统一管理。1.Platform初始化在系统中platform对应的文件drivers/base/platfor

2014-01-02 10:26:37 1052

原创 Linux设备模型(二)上层容器

linux提供了新的设备模型:总线(bus)、设备(device)、驱动(driver)。其中总线是处理器与设备之间通道,在设备模型中,所有的设备都通过总线相连;设备是对于一个设备的详细信息描述,驱动是设备的相关驱动。其基本关系如下:bus 相当于一个容器,是device 和device_driver 的管理机构,它包含了一个device 集合和一个driver 集合。其中,device集合包含了

2013-12-30 21:28:46 724

原创 linux 设备模型(一)对象层

linux提供了新的设备模型:总线(bus)、设备(device)、驱动(driver)。其中总线是处理器与设备之间通道,在设备模型中,所有的设备都通过总线相连;设备是对于一个设备的详细信息描述,驱动是设备的相关驱动。其基本关系如下:bus 相当于一个容器,是device 和device_driver 的管理机构,它包含了一个device 集合和一个driver 集合。其中,device集合包含了

2013-12-29 00:13:00 852

原创 Linux中断子系统-中断接口

前面学习了一下中断处理流程和linux对中断的管理所用的数据结构,接下来再学习一下linux对外提供的标准接口,几乎所有的接口都是围绕着irq_desc和irq_chip这两个结构体进行的。       驱动程序员最关心的就是linux提供的接口,我们学会使用这些接口,就可以编写我们的驱动程序。下面就列举和解析linux提供的中断操作接口。在linux中,EXPORT_SYMBOL(fun)宏

2013-12-25 22:57:53 1391

原创 Linux中断子系统-中断初始化

前面学习了一下linux中断子系统的中断处理过程,看到中断最终由desc->handle_irq(irq, desc)处理。那它是怎么跟我们注册的中断函数相关联的呢?我们应该怎么样去注册和使用中断呢?下面我们就从中断模型注册入手来继续学习linux的中断系统。      首先是linux中断机制的核心数据结构 irq_desc, 它完整地描述了一条中断线 (或称为 “中断通道” )。其中irq

2013-12-25 11:36:35 2516

原创 Linux中断子系统-中断处理

中断是指在CPU正常运行期间,由于内外部事件或由程序预先安排的事件引起的CPU暂时停止正在运行的程序,转而为该内部或外部事件或预先安排的事件服务的程序中去,服务完毕后再返回去继续运行被暂时中断的程序。Linux中通常分为外部中断(又叫硬件中断)和内部中断(又叫异常)。在实地址模式中,CPU把内存中从0开始的1KB空间作为一个中断向量表。表中的每一项占4个字节。但是在保护模式中,有这4个字节的表

2013-12-24 13:42:00 1371

原创 linux 3.6 启动源码分析(七) do_initcalls

do_initcalls()将按顺序从由__initcall_start开始,到__initcall_end结束的section中以函数指针的形式取出这些编译到内核的驱动模块中初始化函数起始地址,来依次完成相应的初始化。而这些初始化函数由__define_initcall(level,fn)指示编译器在编译的时候,将这些初始化函数的起始地址值按照一定的顺序放在这个section中。由于内核某些

2013-12-18 14:16:50 4038

原创 linux 3.6 启动源码分析(六) do_basic_setup

在内核init线程中调用了do_basic_setup,这个函数也做了很多内核和驱动的初始化工作/*好了, 设备现在已经初始化完成。 但是还没有一个设备被初始化过, 但是 CPU 的子系统已经启动并运行, 且内存和处理器管理系统已经在工作了。 现在我们终于可以开始做一些实际的工作了.. */static void __init do_basic_setup(void){ cpus

2013-12-16 16:20:06 2606

原创 linux 3.6 启动源码分析(五) kernel_init进程

在start_kernel最后的rest_init函数中内核创建了两个内核线程,一个是内核线程的管理者,另一个是内核初始化线程kernel_init.kernel_init它将完成设备驱动程序的初始化,并调用init_post函数启动用户空间的init进程。static int __init kernel_init(void * unused){ /*Wait until kthrea

2013-12-16 14:58:49 4324

原创 linux 3.6 启动源码分析(四) rest_init

在内核初始化函数start_kernel执行到最后,就是调用rest_init函数,这个函数的主要使命就是创建并启动内核线程init。这个函数虽然意思为剩下的初始化,但是这个“剩下”的可是内容颇多,下面详细分析如下:static noinline void __init_refok rest_init(void){ int pid; rcu_scheduler_starting();//

2013-12-16 14:25:13 1892

原创 linux 3.6 启动源码分析(三) setup_arch

setup_arch()函数是start_kernel阶段最重要的一个函数,每个体系都有自己的setup_arch()函数,是体系结构相关的,具体编译哪个体系的setup_arch()函数,由顶层Makefile中的ARCH变量决定:它首先通过检测出来的处理器类型进行处理器内核的初始化,然后通过 bootmem_init()函数根据系统定义的 meminfo结构进行内存结构的初始化,最后调

2013-12-16 14:05:46 3097

原创 linux 3.6 启动源码分析(二) start_kernel

在构架相关的汇编代码运行完之后,程序跳入了构架无关的内核C语言代码:init/main.c中的start_kernel函数,在这个函数中Linux内核开始真正进入初始化阶段,进行一系列与内核相关的初始化后,调用第一个用户进程-init 进程并等待用户进程的执行,这样整个 Linux 内核便启动完毕。该函数所做的具体工作有:1) 调用 setup_arch()函数进行与体系结构相关的第一个初

2013-12-16 13:38:12 4452

原创 linux 3.6 启动源码分析(一)

作为需要和硬件打交道的工程师来说,比较关注的是驱动和CPU初始化这一块。所以我沿着启动的路线,重点学习一下和硬件相关的代码。就从linux解压的入口说起。学习阶段,基本是参考大神文章http://blog.chinaunix.net/uid/20543672/cid-6411-list-7.html所写。linux自解压完成后就跳转到了解压后的内核(也就是vmlinux的bin版本Imag

2013-12-16 13:02:51 3418

原创 linux下读写u-boot环境变量

uboot下可以通过命令访问和修改环境变量,但有时候我们也需要在Linux系统下访问这些数据。为此u-boot为我们实现了一套工具fw_printenv。其源码在u-boot的u-boot/tools/env下。下面就来叙述一下这套工具的使用  1、编译fw_printenv工具    在你使用的uboot代码中用以下编译指令:    make env    这样就可以编译to

2013-11-04 13:22:33 2641

原创 3.linux arm button驱动

继续学习,选择一个较为简单的使用了终端的的button驱动。先来看看源码:#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include

2013-10-30 16:07:44 938

原创 2.linux arm led驱动

前面写了一个最简单的模块,现在继续写一个简单的linux下led的驱动。先看一下简单的驱动代码,命名为led_driver.c:#include #include #include #include #include #include #include #include #include #include #include #in

2013-10-29 16:28:29 757

原创 1.最简单的linux驱动

学linux也有段时间了,一直没什么条理。也不知道学了些什么做了些什么。现在一步步梳理一下linux驱动的学习过程。就从最简单的去看开始。 首先我们写一个最简单的模块。 #include static int hello_init(void){ }

2013-10-29 10:36:04 665

原创 嵌入式linux 运行期间升级u-boot,kernel和文件系统

本文主要就是介绍,在嵌入式Linux 系统下,已经实现了nand 驱动后, 如何利用mtd 工具,进行在线升级u-boot,Linux和文件系统。 主要使用到的工具是mtd-utils-1.3.1,如果你需要源码,可以到官网下载http://www.linux-mtd.infradead.org/source.html。也可以等我有空上传到资源里面去下载。 在利用 mtd 工具升级系统

2013-10-28 09:42:47 4505

原创 linux nandfalsh空间划分及启动参数

1.对nand的默认分区        分区只是内核的概念,就是说A~B地址放内核,C~D地址放文件系统,(也就是规定哪个地址区间放内核或者文件系统)等等。一般我们只需要分3-4个区,第一个为boot区,一个为boot参数区(传递给内核的参数),一个为内核区,一个为文件系统区。(但是有的内核就会有很多分区,比如内核参数会有两个,还有会Logo的地址)而对于bootloader 对分区的概念

2013-09-30 09:24:16 1250

原创 多文件Makefile组织

这几天要建一个linux工程,要用到多个文件目录。需要makefile来组织这些文件。怎么才能直接make就能编译呢,怎么能在make clean的时候能把所以文件目录下的目标文件给清理掉呢。 然后在网上找了个通用的makefile。如下:# The extra pre-processor and compiler options. EXTRA_CFLAGS = # T

2013-09-11 15:44:53 740

原创 虚拟机 ubuntu 不能联网

昨天想用apt-get安装点东西。才发现连不上网。然后各种设IP,网关,DNS。都不行。因为我是在公司用,所以是需要代理的。但是我发现别的虚拟机却是可以联网的。然后我就找他们的区别。最后发现。在创建虚拟机的时候,联网方式我选择的是桥接。能联网的是地址翻译。 没办法,就只有重新创建一下虚拟机了。为了吧原来虚拟机的文件全部保留。就直接用原来的虚拟磁盘就是。还是太菜太年轻了。

2013-09-11 14:11:25 876

原创 vs2005和ubuntu安装ccpunit测试工具

一。vs2005安装cppunit1. 下载解压文件cppunit-1.12.1.tar.gz2.编译a.编译前先修改src\msvc6\testrunner\MsDevCallerListCtrl.cpp文件。   把import "libid:1A31287A-4D7D-413e-8E32-3B374931BD89" version("7.0") lcid("0") raw_i

2013-09-10 14:44:02 739

原创 u-boot nand 驱动

上一片写了一个u-boot命令saveenv的实现。里面使用到的nand_write等函数。那就来学习一些u-boot里nand flash 的驱动。在学习nand flash驱动之前,我们要先熟悉u-boot中nand flash驱动架构以及nand flash操作原理。在u-boot启动过程中调用了nand_init函数,这就是nand flash驱动初始化的入口点。

2013-09-10 14:14:54 608

原创 u-boot一些关键命令的实现详解

1.saveenv命令1.文件common/env_common.c供u-boot调用的通用函数接口,它们隐藏了env的不同实现方式,比如dataflash, epprom, flash等common/env_dataflash.cenv 存储在dataflash中的实现common/env_epprom.cenv 存储在epprom中的实现common

2013-09-06 14:20:12 857

原创 u-boot常用命令

先看看命令列表(u-boot版本不同可能有所不同我使用2009.08版本)命令:help 或 ?就可以查看当前U-boot版本中支持的所有命令。 [u-boot@MINI2440]#help?       - alias for 'help'autoscr - DEPRECATED - use "source" command insteadbase

2013-09-06 11:08:49 1331

原创 虚拟机恢复已有系统

VMware workstation: VMware Workstation 生成虚拟机配置文件后缀名为.VMX关于VMDK格式文件.vmx 虚拟机配置文件.vmdk VM的虚拟磁盘特性.vmxf 其他虚拟机配置文件默认情况下,VMware可以直接打开.VMX文件,但却不能直接打开.VMDK格式的文件。 如果要恢复原来的文件,可以直接使用虚拟磁盘文件恢复。 

2013-09-05 13:31:45 1094

原创 u-boot添加命令

在u-boot中添加命令hello 1.  在common目录下添加文件cmd_hello.c      #include     #include      intdo_hello(cmd_tbl_t*cmdtp,intflag, intargc,char*argv[])     {          printf(“HelloWorld\n”);

2013-09-04 16:55:41 763

原创 Linux msmtp+mail邮件发送

用msmtp+mail 来发邮件竟然比msmtp+mutt还要简单第一步 先把 msmtp 安装好tar xf msmtp-1.4.17.tar.bz2cd msmtp-1.4.17./configure --prefix=/usr/local/msmtpmakemake installcd /usr/local/msmtp/mkdir etcc

2012-02-29 22:03:54 1103

原创 烧写2410-S linux 操作系统的详细步骤

烧写2410-S linux 操作系统在windows xp下进行,需要的文件在光盘中的Linux\img目录和flashvivi目录下提供。烧写2410-S linux 操作系统包括烧写vivi,kernel,root三个步骤,除此我们还要烧写yaffs.tar,这四个

2011-10-09 09:12:44 1367 1

netfilter 头文件

netfilter 头文件

2024-04-12

指定引用模块Makefile

指定引用模块Makefile,被引用模块路径由OFA变量获得。内核源码由变K_SRC,K_BUILD获得

2019-03-08

caffe离线环境搭建

caffe离线环境搭建所需的依赖包源码,搭建过程见内部文档

2018-04-27

mtd-utils-1.3.1

Linux运行期间升级u-boot Linux和文件系统的工具。使用说明见我的记录博客。源码里面默认设置的是64位支持4G大小。如果你的32位系统。请修改\include\mtd下mtd-abi.h里面的#define U64_VERSION 1.注释掉就行。

2013-10-28

android进程间通讯

Binder框架 Binder介绍 Android跨进程通讯 Activity Content Provider Broadcast AIDL

2012-08-14

android进程管理

Android进程 Android内存策略 Android虚拟机Dalvik Android与linux相比 进程间通讯

2012-08-14

android内存管理

android内存管理目录 Low Memory Killer Ashmem Pmem dalvik虚拟机内存管理

2012-08-14

linux邮件自动发送

Linux邮件 Linux脚本发送邮件,装一些工具,写个脚本。实现邮件的特定格式的发送

2012-02-26

QT自定义信号和槽

QT QT自定义信号和槽 QT自定义 信号和槽 QT信号。讲解怎么在 QT中自己定义消息和槽,QT编程可以看看

2011-11-05

(BMP文件格式详解

BMP文件格式详解 BMP文件 BMP 图片格式,包括BMP的头格式,及其意义和作用,指出数据区和文件信息区域。我自己也留着要用好找

2011-10-23

cmmi试题及解答

cmmi试题及解答 软件工程 东软培训用试题 cmmi试题及解答 软件工程 东软

2011-10-13

经典linux系统编程

经典linux系统编程(值得收藏) Linux linux软件工程师实用教程课件

2011-10-11

Gsteamer资料

gstreamer工作原理分析 GStreamer+开发手册 GStreamer 插件开发指南 GStreamer中文开发手册四个文档,我最近要做这个的开发,才收集的一点资料

2011-09-23

数据结构例题

数据结构 例题 链表操作,堆栈建立操作,各种排序算法,等

2011-09-21

c编程题于解答

c编程题,初学者值得做做,后面带解答源程序

2011-09-19

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除