自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

  • 博客(62)
  • 资源 (2)
  • 收藏
  • 关注

原创 linux下的头文件和哭的搜索

C/C++程序在linux下被编译和连接时,GCC/G++会查找系统默认的include和link的路径,以及自己在编译命令中指定的路径。自己指定的路径就不说了,这里说明一下系统自动搜索的路径。【1】include头文件路径除了默认的/usr/include, /usr/local/include等include路径外,还可以通过设置环境变量来添加系统include的路径:# C

2017-08-14 14:14:51 391

原创 python学习之路一

1.1 Python是什么  Python(英国发音:/ˈpaɪθən/ 美国发音:/ˈpaɪθɑːn)是什么呢?简单的说,它是一种计算机编程语言及一组配套的软件工具和库。是一种面向对象、解释型计算机程序设计语言,由Guido van Rossum于1989年发明,第一个公开发行版发行于1991年[1]。  Python是纯粹的自由软件, 源代码和解释器CPython遵循 GP

2017-05-28 23:59:52 491

原创 linux的内核时间

jiffies在内核中是一个全局变量,它用来统计系统启动以来系统中产生的总节拍数,这个变量定义在include/Linux/jiffies.h中,定义形式如下。unsigned long volatile jiffies;想要理解jiffies的含义,我们需要首先理解时钟  节拍率  节拍的概念。内核一般通过jiffies值来获取当前时间。尽管该数值表示的是自上次系统启动到当前的时间间

2017-05-03 19:25:04 674

原创 记录一些makefile 的规则、变量函数使用

http://blog.sina.com.cn/s/blog_b3dc8bf301017e8g.htmlmakefile是一个make的规则描述脚本文件,包括四种类型行:目标行、命令行、宏定义行和make伪指令行(如“include”)。makefile文件中注释以“#”开头。当一行写不下时,可以用续行符“\”转入下一行。Makefile中的预定义变量:CC,

2017-04-21 16:17:55 910

转载 linux信号处理机制2

本文简单介绍下Linux信号处理机制,为介绍二进制翻译下信号处理机制做一个铺垫。本文主要参考书目《Linux内核源代码情景分析》《独辟蹊径品内核:Linux内核源代码导读》  信号概述   ●  信号是在软件层次上对中断机制的一种模拟。在原理上,一个进程收到一个信号与处理器收到一个中断请求可以说是一样的。   ●  信号是异步的,一个进程不必通过任何操作来等待信号的到达,事实上

2017-04-14 17:24:27 590

原创 linux部分信号使用

The signals SIGKILL and SIGSTOP cannot be caught, blocked, or ignored.signal的sigkill信号,也就是kill -9 pid是无法在程序内部捕获的,那怎么办?你反抗不了,一般关于sigkill的日志会在/var/log/messages里,如果非deamon程序在终端也是有日志体现的。对于内核暴力完杀,你只能找到原因

2017-04-13 11:09:28 440

原创 linux进程详解

什么是进程直观点说,保存在硬盘上的程序运行以后,会在内存空间里形成一个独立的内存体,这个内存体有自己的地址空间,有自己的堆,上级挂靠单位是操作系统。操作系统会以进程为单位,分配系统资源,所以我们也说,进程是资源分配的最小单位。Linux的进程相互之间有一定的关系。比如说,在Linux进程基础中,我们看到,每个进程都有父进程,而所有的进程以init进程为根,形成一个树状结构。我们

2017-04-11 11:40:20 1051

转载 在C语言中,double、long、unsigned、int、char类型数据所占字节数

和机器字长及编译器有关系:所以,int,long int,short int的宽度都可能随编译器而异。但有几条铁定的原则(ANSI/ISO制订的): 1 sizeof(short int)<=sizeof(int) 2 sizeof(int)<=sizeof(long int) 3 short int至少应为16位(2字节) 4 long int至少应为32位。 unsigned 是

2017-04-08 11:05:52 623

原创 linux内核链表

#define container_of(ptr, type, member) ({ / const typeof( ((type *)0)->member ) *__mptr = (ptr); / (type *)( (char *)__mptr - offsetof(type,member) );}) con

2017-04-07 23:10:18 502

转载 linux内存管理的实质---通俗易懂

转载   http://bbs.chinaunix.net/thread-2055231-1-1.html1. 内核初始化:    * 内核建立好内核页目录页表数据库,假设物理内存大小为len,则建立了[3G--3G+len]::[0--len]这样的虚地址vaddr和物理地址paddr的线性对应关系;    * 内核建立一个page数组,page数组和物理页面系列完全

2017-03-28 19:19:57 508

原创 linux下得时间函数time 与gettimeofday

两个都是glibc获取时间的函数,    gettimeofday支持返回微妙的精度, time返回秒的精度,  在性能上有差别吗? 基本上没有性能差别, 因为time其实就是把gettimeofday包装了一层. 但是测试过程中发现 time比gettimeofday性能好了一点点, 可能是time函数的接口形式简单吧, 堆栈处理的快.Epoch是指定为1970年1月1日

2017-03-28 18:52:36 2180

原创 linux内存管理

一提到内存管理,我们头脑中闪出的两个概念,就是虚拟内存,与物理内存。这两个概念主要来自于linux内核的支持。1. 虚拟地址、物理地址、逻辑地址、线性地址 虚拟地址又叫线性地址。linux没有采用分段机制,所以逻辑地址和虚拟地址(线性地址)(在用户态,内核态逻辑地址专指下文说的线性偏移前的地址)是一个概念。物理地址自不必提。内核的虚拟地址和物理地址,大部分只差一个线性偏移量。用

2017-03-27 10:40:10 298

原创 linux安装配置CONFIGURE详解

tar.gz、tar.bz2的是源代码包,需要编译之后才能安装,在编译过程中你可以指定各种参数以适应你的系统需求,比如安装位置,优化参数,要哪些功能不要哪些功能等等。这类源代码包需要解压后(tar.gz的用 tar zxvf 解压,tar.bz2的用 tar jxvf 解压),进入解压目录,一般都有一个 INSTALL 的文本文件,里面一般都是安装的详细说明,可以用vi、nano、pico或X

2017-03-15 20:37:52 11994 1

原创 linux常用命令

linux之 cat命令cat主要有三大功能:1.一次显示整个文件。如 cat   filename2.从键盘创建一个文件。如 cat  >  filename只能创建新文件,不能编辑已有文件.3.将几个文件合并为一个文件(点击查看实用例子)。如 cat   file1   file2  > file3cat具体命令格式为 : cat [-AbeEnst

2017-03-03 16:44:35 642

原创 linux常用命令sed

linux之sed用法      sed是一个很好的文件处理工具,本身是一个管道命令,主要是以行为单位进行处理,可以将数据行进行替换、删除、新增、选取等特定工作,下面先了解一下sed的用法sed:Stream Editor文本流编辑,sed是一个“非交互式的”面向字符流的编辑器。能同时处理多个文件多行的内容,可以不对原文件改动,把整个文件输入到屏幕,可以把只匹配到模式的内容

2017-03-03 16:36:11 643

转载 PowerPC的工具链制作过程及内核编译

作者:冲天飞豹(youbest)原文链接:http://www.linuxsir.org/bbs/showthread.php?t=267672http://youbest.cublog.cn/更新日志2006年9月28日:修改错字一处。2006年8月30日:修改错误命令一处。2006年8月22日:修改文字中的笔误两处。2006年8月18日:修改图片中的笔误

2017-03-02 20:20:34 1688

原创 llinux系统头文件、C标准库头文件简介

头文件概述:在进行有关系统软件的安装的时候(编译一个新的驱动,或者安装一个系统级别的测试工具,例如systemtap),经常需要重新编译内核,相应的问题往往与内核头文件有关。那么,什么是内核头文件,为什么需要更新内核头文件?内核头文件作用是什么,如何更新?本文主要为你解答这些疑问。在 Linux 2.2/2.4 的纯真年代,内核头文件一直保持着 Unix 世界的"KISS"传统,只需将内核

2017-03-02 19:53:08 1993

原创 linux的configure、glibc

./configure是用来检测你的安装平台的目标特征的。比如它会检测你是不是有CC或GCC,并不是需要CC或GCC,它是个shell脚本。configure是源代码安装的第一步,主要的作用是对即将安装的软件进行配置,检查当前的环境是否满足要安装软件的依赖关系。使用命令./configure –help输出详细的选项列表--cache-file=FILE  'configure

2017-02-28 14:03:10 1840

原创 gcc编译选项

1.gcc编译时指定宏定义编译时:gcc -DMAX=32 -o a a.c 相当于在文件a.c中定义:#define MAX 322.链接静态库的顺序问题         链接静态库时,如果多个静态库之间存在依赖关系,则有依赖关系的静态库之间存在顺序问题,这个在使用静态库时,需要注意,否则会报符号找不到问题,举例:       libb.a依赖于是liba

2017-02-27 14:03:51 1869

原创 gprof工具使用介绍

一、gprof介绍       gprof是GNUprofiler工具。可以显示程序运行的“flat profile”,包括每个函数的调用次数,每个函数消耗的处理器时间。也可以显示“调用图”,包括函数的调用关系,每个函数调用花费了多少时间。还可以显示“注释的源代码”,是程序源代码的一个复本,标记有程序中每行代码的执行次数。二、Gprof功能:    打印出程序运行中各个函数

2017-02-27 11:33:44 2910

原创 shell脚本学习一

在win下创建的XX.sh文件,在linux上执行,经常执行失败。对比能执行的文件,没有发现什么不同。                执行shell出现的错误是bad interpreter:No such file or directory解决方法:       因为操作系统是windows,在windows下编辑的脚本,所以有可能有不可见字符。从的脚本及报告的错误看来,

2017-02-25 15:43:37 330

原创 设计模式之----- 反应器(Reactor)模式

概述JavaNIO非堵塞技术实际是采取反应器模式,或者说是观察者(observer)模式为我们监察I/O端口,如果有内容进来,会自动通知我们,这样,我们就不必开启多个线程死等,从外界看,实现了流畅的I/O读写,不堵塞了。同步和异步区别:有无通知(是否轮询)堵塞和非堵塞区别:操作结果是否等待(是否马上有返回值),只是设计方式的不同NIO 有一个主要的类Selector,这个类

2017-02-23 09:53:29 1820

原创 架构师成长之路二-----技能需求

可以看到网上收的部分架构师的能力要求,多种多样,可根据自己感兴趣的和自己目前从事的方向进行学习。1.设计和开发汽车电子应用软件; 2.与相关同事沟通协作,理解并实现业务功能需求; 3.编写、维护开发文档,设计测试用例;岗位要求:1.本科及以上学历,计算机、电子信息等相关专业; 2.熟练使用C/C++语言,具备良好的编程风格; 3.熟悉Python、B

2017-02-22 20:26:46 511

转载 常用的UML工具介绍和评价

UML简介Unified Modeling Language (UML)又称统一建模语言或标准建模语言,是始于1997年一个OMG标准,它是一个支持模型化和软件系统开发的图形化语言,为软件开发的所有阶段提供模型化和可视化支持,包括由需求分析到规格,到构造和配置。 面向对象的分析与设计(OOA&D,OOAD)方法的发展在80年代末至90年代中出现了一个高潮,UML是这个高潮的产物。它不仅统一了B

2017-02-22 17:19:18 1061

原创 linux死机问题

请教,我用的MT7621双核CPU,经常出现stall on CPU的情况,INFO: rcu_sched_state detected stall on CPU 0 (t=2500 jiffies)INFO: rcu_bh_state detected stalls on CPUs/tasks: { 0} (detected by 2, t=2503 jiffies)...整个系

2017-02-21 19:19:48 3124

原创 linux的条件变量和时间编程

条件变量是利用线程间共享的全局变量进行同步的一种机制,主要包括两个动作:一个线程等待"条件变量的条件成立"而挂起;另一个线程使"条件成立"(给出条件成立信号)。为了防止竞争,条件变量的使用总是和一个互斥锁结合在一起。        1.   创建和注销         条件变量和互斥锁一样,都有静态动态两种创建方式,静态方式使用PTHREAD_COND_INITIALIZER常量,

2017-02-18 21:38:42 792

原创 linux内核死机2-smp

问题:程序跑一段时间之后会报告:        INFO: rcu_sched_state detected stalls on CPUs/tasks: { 1} (detected by 0, t=15002 jiffies)。意思是CORE0检测到CORE1挂了。1.cpu执行的指令和数据是从L1高速缓存的指令缓存和数据缓存中获取,一旦cpu要执行的指令或数据无法从高速缓存中获取,就会

2017-01-16 15:32:45 6563

原创 音视频基础知识

隔行和逐行的含义:视频文件分隔行扫描和逐行扫描。隔行扫描就是每一帧被分割为两场,每一场包含了一帧中所有的奇数扫描行或者偶数扫描行,通常是先扫描奇数行得到第一场,然后扫描偶数行得到第二场。隔行扫描有两种模式:上场优先或下场优先,或者叫偶数场优先或奇数场优先。逐行扫描相对于隔行扫描是一种先进的扫描方式,它是指显示屏显示图像进行扫描时,从屏幕左上角的第一行开始逐行

2016-12-27 16:50:46 972

原创 linux中的strip命令简介

一、stip命令学习原因            背景: 在调试一个ko模块时,应用addr2line命令 得不到行号等死机的具体位置信息,只能得到一个函数名称,"addr2line得到行号为??:?或??:0的原因"。            猜测:当时很困惑,以为编译此模块时,没有加-g调试信息,于是在makefile中加上结果调试还是不行,猜测2是因为用内核编译的模块,怀疑内核配置选

2016-12-24 14:14:35 13438

转载 GCC 各工具使用简介

GCC:GNU开发的程序编译器GNU:“GNU‘s NotUnix”,最初是为了实现一个类似unix的自由操作系统,感觉现在已经通常泛指遵循GPL自由软件精神的组织。GPL:GNU通用公共许可证(GNU GeneralPublic License),简单的说就是遵循GPL的代码任意用户可以复制发布;使用或者修改了GPL的代码也必须遵循GPL精神;遵循GPL的代码已源代码发布;GPL并不

2016-12-24 11:08:21 671

原创 回调函数通俗

回调函数的含义:网友通俗定义:          一.例如:你想寄包裹,肯定要留下自己的联系方式和地址吧(相当于回调函数的地址)。然后开始打电话给快递,但快递不会马上来取件,而是通过你留下的联系方式和地址,在他有空或顺路的时候来联系你取件。在送包裹的过程中,服务好的话快递会在你包裹快递状态变化的各个环节通知你(比如已经送到分拣中心,由中心分发开始投递,到达对方所在城市,对方已经签收)。

2016-12-21 14:12:45 415

转载 linux内核调试2

http://blog.chinaunix.net/uid-29401328-id-4932947.html下面再来测试一次:# insmodsystem_dead.kosysdead_drv_init success!# ./test             // 卡死了,等10s会打印如下信息asm_do_IRQ -> s3c2410_tim

2016-12-02 20:59:03 297

转载 linux内核调试方法

内核开发比用户空间开发更难的一个因素就是内核调试艰难。内核错误往往会导致系统宕机,很难保留出错时的现场。调试内核的关键在于你的对内核的深刻理解。一  调试前的准备 在调试一个bug之前,我们所要做的准备工作有: 有一个被确认的bug。包含这个bug的内核版本号,需要分析出这个bug在哪一个版本被引入,这个对于解决问题有极大的帮助。可以采用二分查找

2016-12-02 20:56:27 535

转载 Linux kernel多线程的几种实现

原文来源:http://blog.csdn.net/mrwangwang/article/details/27701653,感谢原著驱动开发中常常会启动几个内核线程,在整个驱动生命周期期间执行某些操作,比如USB驱动的控制线程,一直等待SCSI命令,没有命令的话睡眠,有命令的话就唤醒线程,解析执行相关的命令。还有USB驱动中的扫描线程,如果有新的设备连接到USB总线,则会启

2016-12-02 20:43:13 282

转载 linux进程的堆栈

linux 栈空间查看和修改默认是8182大小。1、通过命令 ulimit -s 查看linux的默认栈空间大小,默认情况下 为10240 即10M2、通过命令 ulimit -s 设置大小值 临时改变栈空间大小:ulimit -s 102400, 即修改为100M3、可以在/etc/rc.local 内 加入 ulimit -s 102400 则可以开机就设置栈空

2016-12-01 20:33:42 1106

转载 linux驱动调试--段错误之栈信息分析

原文来源:http://blog.chinaunix.net/xmlrpc.php?r=blog/article&uid=29401328&id=4923529, 感谢原著。接着上一篇来分析一下Oops的栈s3c2440平台关于调试源码和整个Oops信息请参考上一篇博文,这里只再次贴出关于栈的信息Stack: (0xc3a61e30 to 0xc3a6200

2016-12-01 20:25:52 458

转载 linux驱动调试--段错误之oops信息分析

原文地址http://blog.chinaunix.net/xmlrpc.php?r=blog/article&uid=29401328&id=4923447发生段错误原因就是访问了不该访问的地址,例如访问了不存在的内存地址、访问了系统保护的内存地址、访问了只读的内存地址等。下面根据Oops信息来分析一下段错误first_drv.c #include

2016-12-01 20:19:46 626

转载 CC_STACKPROTECTOR防止内核stack溢出补丁分析

CC_STACKPROTECT补丁是Tejun Heo在09年给主线kernel提交的一个用来防止内核堆栈溢出的补丁。默认的config是将这个选项关闭的,可以在编译内核的时候,修改.config文件为CONFIG_CC_STACKPROTECTOR=y来启用。未来飞天内核可以将这个选项开启来防止利用内核stack溢出的0day攻击。这个补丁的防溢出原理是: 在进程启动的时候, 在每个

2016-12-01 19:08:39 2995

原创 linux反汇编调试

反汇编有有以下几种方法:1.使用gcc -S test.c 或者gcc -S test.c>out.txt2.使用gdb调试,在调试中输入disass 函数名 就可以3.objdump -D test 一般常用1,2两种,~~~~~C语言代码example.cint triangle( int width, int height){int arr{0,1,2,3,4};

2016-11-25 18:28:50 4027

转载 linux内核中打印栈回溯信息 - dump_stack()函数分析

简介当内核出现比较严重的错误时,例如发生Oops错误或者内核认为系统运行状态异常,内核就会打印出当前进程的栈回溯信息,其中包含当前执行代码的位置以及相邻的指令、产生错误的原因、关键寄存器的值以及函数调用关系等信息,这些信息对于调试内核错误非常有用。打印函数调用关系的函数就是dump_stack(),该函数不仅可以用在系统出问题的时候,我们在调试内核的时候,可以通过dump_stack()函

2016-11-25 17:41:38 1652

μCOS-II移植工程

里面有好多 例程 ,都是移植成功的 ,且配有简单的例程 适合初学者学习

2013-03-22

ucgui 学习笔记 自己平时学习总结

这是自己平时学习之时总结的 希望对大家有用处

2013-03-22

空空如也

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

TA关注的人

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