自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(56)
  • 资源 (6)
  • 收藏
  • 关注

原创 printf输出格式

C中printf()的参数是什么?printf的格式控制的完整格式: % - 0 m.n l或h 格式字符 下面对组成格式说明的各项加以说明: ①%:表示格式说明的起始符号,不可缺少。 ②-:有-表示左对齐输出,如省略表示右对齐输出。 ③0:有0表示指定空位填

2011-08-17 14:43:11 827

转载 关于kernel panic No init found

kernel panic - not syncing: No init found.  Try passing init= option to kernel.最后经过搜索,发现原来没有向文件系统中拷贝lib的链接库,通过对问题的搜索,找到了一篇分析文章,摘录如下,供大家参考:这类问题很常见,先总体介绍一下解决思路。能出现让人激动的的控制台,那么系统移植已经接近完成;但是不少人在最后一步

2011-06-09 17:52:00 33153 4

原创 关于回溯算法的递归与非递归解法

<br />摘要:本文简要描述了回溯算法的基本思路,并给出了几个典型实例的源码<br />关键字:回溯,搜索,非递归,全排列,组合,N皇后,整数划分,0/1背包<br />回溯是按照某种条件在解空间中往前试探搜索,若前进中遭到失败,则回过头来另择通路继续搜索。<br />符号声明:<br />解空间:[a1,a2,a3,...,an];<br />x[k]为解空间元素的索引, 0 <= x[k] < n;k为数组x的索引;<br />a[x[0~n-1]]表示一组解。<br />//判断解空间中的a[x[k

2011-05-30 16:35:00 8240

转载 linux内存管理

关于页面的使用<br />在之前的一些文章中,我们了解到linux内核会在很多情况下分配页面。<br />1、内核代码可能调用alloc_pages之类的函数,从管理物理页面的伙伴系统(管理区zone上的free_area空闲链表)上直接分配页面(见《linux内核内存管理浅析》)。比如:驱动程序可能用这种方式来分配缓存;创建进程时,内核也是通过这种方式分配连续的两个页面,作为进程的thread_info结构和内核栈;等等。从伙伴系统分配页面是最基本的页面分配方式,其他的内存分配都是基于这种方式的;<br

2011-05-26 17:42:00 1096

转载 关于全排列组合算法

全排列是将一组数按一定顺序进行排列,如果这组数有n个,那么全排列数为n!个。现以{1, 2, 3, 4, 5}为例说明如何编写全排列的递归算法。1、首先看最后两个数4, 5。 它们的全排列为4 5和5 4, 即以4开头的5的全排列和以5开头的4的全排列。由于一个数的全排列就是其本身,从而得到以上结果。2、再看后三个数3, 4, 5。它们的全排列为3 4 5、3 5 4、 4 3 5、 4 5 3、 5 3 4、 5 4 3 六组数。即以3开头的和4,5的全排列的组合、以4开头的和3,5的全排列的组合和以5开

2011-05-25 11:22:00 1779

转载 KMP算法研究

KMP算法,网上有很多版本,我看了一些,大都不太满意。所以自己写了一个,跟网上的都不一样。但KMP算法的思路肯定是一样的(毕竟这算法是人家想出来的,我只是用了我个人的风格去实现,愿多提宝贵意见)。    其实KMP算法很简单,书上和网上的讲解大多都力求精细,我觉得这只能做个参考。初学者一般还是要有人来点拨和自己揣摩。现在,我搞懂了KMP算法,我就可以说出KMP算法的要害。好啦,废话少说,转入正题。    KMP算法的要害就是: GetNext()函数。它就是要获取下一个要比较的模式串中的位置。抓住这个要害不

2011-05-24 14:42:00 618

转载 关于Linux内存管理的一些资料

Linux常用内核态内存分配方式总结一、             alloc_pages类此类函数主要包括:struct page * alloc_page(unsigned int gfp_mask)——分配一页物理内存并返回该页物理内存的page结构指针。struct page * alloc_pages(unsigned int gfp_mask, unsigned int order)——分配 个连续的物理页并返回分配的第一个物理页的page结构指针。unsigned long get_free_p

2011-05-17 10:22:00 1983

原创 如何在linux中查看程序占用的内存

<br />用free查看到的是整个系统的,用top看到的是所有的程序.<br /> top -d 1<br />然后shift + m(按占用内存大小排序)

2011-05-16 17:19:00 5457

转载 Linux操作系统的内存使用方法详细解析

<br />我是一名程序员,那么我在这里以一个程序员的角度来讲解Linux内存的使用。 <br /><br />  一提到内存管理,我们头脑中闪出的两个概念,就是虚拟内存,与物理内存。这两个概念主要来自于linux内核的支持。 <br /><br />  Linux在内存管理上份为两级,一级是线性区,类似于00c73000-00c88000,对应于虚拟内存,它实际上不占用实际物理内存;一级是具体的物理页面,它对应我们机器上的物理内存。 <br /><br />  这里要提到一个很重要的概念,内存的延迟分配。

2011-05-16 17:15:00 1060 1

转载 南桥、北桥、FSB、PCI、AGP、PCIE

内容来自:百度百科   芯片组(Chipset)是主板的核心组成部分,联系CPU和其他周边设备的运作。如果说中央处理器(CPU)是整个电脑系统的心脏,那么芯片组将是整个身体的躯干。 在电脑界称设计芯片组的厂家为Core Logic,Core的中文意义是核心或中心,光从字面的意义就足以看出其重要性。对于主板而言,芯片组几乎决定了这块主板的功能,进而影响到整个电脑系统性能的发挥,芯片组是主板的灵魂。芯片组性能的优劣,决定了主板性能的好坏与级别的高低。这是因为目前CPU的型号与种类繁多、功能特点不一,如果芯片

2011-05-16 15:56:00 8435

转载 Linux设备驱动之pci设备的枚举

<br />一 前言 PCI,是Peripheral Component Interconnect的缩写,翻译成中文即为外部设备互联。与传统的总线相比,它的传输速率较高,能为用户提供动态查询pci deivce和局部总线信息的方法。此外,它还能自动为总线提供仲裁。在近几年的发展过程中,被广泛应用于多种平台。 PCI协议比较复杂,关于它的详细说明,请查阅有关PCI规范的资料,本文不会重复这些部份。 对于驱动工程师来说,PCI设备的枚举是PCI设备驱动编写最复杂的操作。分析和理解这部份,是进行深入分析PCI设备

2011-05-16 14:58:00 1723

转载 Linux内核访问外设I/O资源的方式

<br />我们知道默认外设I/O资源是不在Linux内核空间中的(如sram或硬件接口寄存器等),若需要访问该外设I/O资源,必须先将其地址映射到内核空间中来,然后才能在内核空间中访问它。 Linux内核访问外设I/O内存资源的方式有两种:动态映射(ioremap)和静态映射(map_desc)。 一、动态映射(ioremap)方式 动态映射方式是大家使用了比较多的,也比较简单。即直接通过内核提供的ioremap函数动态创建一段外设I/O内存资源到内核虚拟地址的映射表,从而可以在内核空间中访问这段I/O资

2011-05-16 13:18:00 514

原创 关于ioremap

void * __ioremap(unsigned long phys_addr, unsigned long size, unsigned long flags) <br />入口: phys_addr:要映射的起始的IO地址; <br /><br />size:要映射的空间的大小; <br /><br />flags:要映射的IO空间的和权限有关的标志; <br /><br />功能: 将一个IO地址空间映射到内核的虚拟地址空间上去,便于访问; <br /><br />实现:对要映射的IO地址空间进行判

2011-05-16 13:11:00 634

原创 IO端口与内存空间

<br />(1)关于IO与内存空间:<br />    在X86处理器中存在着I/O空间的概念,I/O空间是相对于内存空间而言的,它通过特定的指令in、out来访问。端口号标识了外设的寄存器地址。Intel语法的in、out指令格式为:<br />    IN 累加器, {端口号│DX}<br />    OUT {端口号│DX},累加器<br />    目前,大多数嵌入式微控制器如ARM、PowerPC等中并不提供I/O空间,而仅存在内存空间。内存空间可以直接通过地址、指针来访问,程序和程序运行中使用

2011-05-16 13:04:00 1404

转载 linux驱动开发常用函数及函数

Region的操作函数__XXX_region(),Linux在头文件include/linux/ioport.h中定义了三个对I/O内存资源进行操作的宏:  ①request_mem_region()宏,请求分配指定的I/O内存资源。  ②check_ mem_region()宏,检查指定的I/O内存资源是否已被占用。  ③release_ mem_region()宏,释放指定的I/O内存资源。  这三个宏的定义如下:   #define request_mem_region(start,n,name)

2011-05-16 10:04:00 1450

原创 module_param、 MODULE_PARM_DESC 、EXPORT_SYMBOL

<br />在用户态下编程可以通过main()的来传递命令行参数,而编写一个内核模块则通过module_param ()<br />module_param宏是Linux 2.6内核中新增的,该宏被定义在include/linux/moduleparam.h文件中,具体定义如下:<br />#define module_param(name, type, perm)<br />module_param_named(name, name, type, perm)<br /><br />其中使用了 3 个参数:

2011-05-13 15:48:00 12251

原创 嵌入式开发常用具总结

远程登录:putty(与其配套的Xming可视化界面)远程拷贝:winscp比超级终端好用的工具:SecureCRT自动分配IP地址、配置DNS、Route等:DHCP服务器windows与虚拟机拷贝东西:Samba or connect to server远程调试:remote GDB

2011-03-22 13:18:00 816

转载 用shell脚本监控进程,挂掉后重启

<br />文章分类:操作系统<br />一.<br />一个php脚本,经常跑了好几个小时,然后莫名其妙的挂掉,不胜其烦。在没有找到真正的原因之前,只好先写一个daemon作用的shell script来monitor,在发现脚本挂掉后,重启脚本.<br /> <br />以下是在chinaunix找到的相关内容,汇集了各位大神们的意见:<br />http://bbs.chinaunix.net/thread-1487627-1-1.html<br /> <br />==================

2011-03-21 16:25:00 9380

原创 linux命令——整理

<br />1. 创建目录<br />     mkdir<br />     NO1. 在当前路径创建一级目录<br />          [root@rehat root]# mkdir test<br />     NO2. 在当前路径创建多级目录<br />          [root@rehat root]# mkdir -p mytest/test1/test1_1<br />     NO3. 在创建目录的同时给新建的目录赋权限<br />          [root@rehat roo

2011-03-21 12:40:00 814

原创 流水线设计

<br />流水线设计就是将组合逻辑系统地分割,并在各个部分(分级)之间插入寄存器,并暂存中间数据的方法。目的是提高数据吞吐率(提高处理速度)。 <br />       流水线缩短了在一个时钟周期内给的那个信号必须通过的通路长度,从而可以提高时钟频率。例如:一个2级组合逻辑,假定每级延迟相同为Tpd,无流水线的总延迟就是2Tpd,可以在一个时钟周期完成,但是时钟周期受限制在2Tpd;如果使用流水线,每一级加入寄存器(延迟为Tco)后,单级的延迟为Tpd+ Tco,每级消耗一个时钟周期,流水线需要2个时钟周

2011-03-02 13:52:00 2134

原创 getc函数详解

函数名: getc <br />功 能: 从流中取字符 <br />用 法: int getc(FILE *stream); <br />程序例: <br /><br />#include <stdio.h> <br /><br />int main(void) <br />{ <br />char ch; <br /><br />printf( "Input a character: "); <br />/* read a character from the <br />standard input s

2011-03-02 13:43:00 5746

转载 C语言实现二进制文件读写

先介绍函数,我们一共要用到三个函数,fopen,fread,fwrite。二进制读写的顺序是用fopen以二进制方式打开读写文件,然后使用fread和fwrite两个函数将数据写入二进制文件中。下面我们看看一个拷贝程序的源码:<br /> Copy.c:<br />#include <stdio.h> <br />#include <stdlib.h> <br /> <br />#define MAXLEN 1024 <br /> <br />int main(int argc, char *argv[])

2011-03-01 17:49:00 872

转载 tcpdump使用说明

<br />tcpdump采用命令行方式,它的命令格式为: <br />  tcpdump [ -adeflnNOpqStvx ] [ -c 数量 ] [ -F 文件名 ] <br />          [ -i 网络接口 ] [ -r 文件名] [ -s snaplen ] <br />          [ -T 类型 ] [ -w 文件名 ] [表达式 ] <br /><br />  1. tcpdump的选项介绍 <br />   -a    将网络地址和广播地址转变成名字; <br />   -

2011-02-28 11:25:00 322

转载 linux coredump配置与调试

<br />Linux<br />Core Dump 配置与调试<br />1.core文件的生成开关和大小限制<br />---------------------------------<br />1)使用ulimit<br />-c命令可查看core文件的生成开关。若结果为0,则表示关闭了此功能,不会生成core文件。<br />2)<br />使用ulimit<br />-cfilesize命令,可以限制core文件的大小(filesize的单位为kbyte)。若ulimit<br />-cunli

2011-02-28 11:23:00 413

原创 Linux磁盘管理命令

linux磁盘管理之du<br />du的英文原义为“disk usage”,含义为显示磁盘空间的使用情况。  <br /><br />功能:统计目录(或文件)所占磁盘空间的大小。  <br /><br />语法:du [选项] [Names…]  <br /><br />说明:该命令逐级进入指定目录的每一个子目录并显示该目录占用文件系统数据块(1024字节)的情况。若没有给出Names,则对当前目录进行统计。  <br /><br />该命令的各个选项含义如下:  <br /><br />-s 对每个Na

2011-02-24 11:34:00 461

原创 ++循环与i--循环的执行效率

<br />问题一:i++和++i的效率比较<br /> <br /> <br />i++和++i涉及到计算机CPU的寄存器问题,i++实际是将i的值保存到CPU寄存器中,然后将内存中的i做其他操作后对寄存器中的i+1后覆盖内存中的i;而后者同样保存在寄存器中,将寄存器中的i+1后先覆盖内存中的i,然后再用其参与其他运算。<br />我建议最好以后写到这种语句的时候都独立成一行代码写,这样能避免很多错误的发生。<br /> <br />C++中i++和++i的效率s:<br />这个问题是分两种情况的:<b

2011-02-24 11:04:00 891

转载 环形缓冲区

<br />为了防止有人给咱扣上“过度设计”的大帽子,事先声明一下:只有当存储空间的分配/释放非常频繁 并且确实产生了明显 的影响,你才应该考虑环形缓冲区的使用。否则的话,还是老老实实用最基本、最简单的队列缓冲区 吧。还有一点需要说明一下:本文所提及的“存储空间 ”,不仅包括内存,还可能包括诸如硬盘之类的存储介质。<br />  ★环形缓冲区 vs 队列缓冲区 <br />  ◇外部接口相似<br />  在介绍环形缓冲区之前,咱们先来回顾一下普通的队列。普通的队列有一个写入端和一个读出端。队列为空的时候,

2011-02-22 11:23:00 4791 1

转载 pthread_join函数及linux线程

<br />这是从网上搜索到的,为了方便以后查询,所以就把它拿到自己的空间里来了。谢谢原作者!!^^<br />pthread_join函数及linux线程<br /> <br />pthread_join使一个线程等待另一个线程结束。<br /> <br />代码中如果没有pthread_join主线程会很快结束从而使整个进程结束,从而使创建的线程没有机会开始执行就结束了。加入pthread_join后,主线程会一直等待直到等待的线程结束自己才结束,使创建的线程有机会执行。<br /> <br />所有线

2011-02-21 14:02:00 609

转载 关于pthread_cond_wait

<br />了解 pthread_cond_wait() 的作用非常重要 -- 它是 POSIX 线程信号发送系统的核心,也是最难以理解的部分。 <br /><br />首先,让我们考虑以下情况:线程为查看已链接列表而锁定了互斥对象,然而该列表恰巧是空的。这一特定线程什么也干不了 -- 其设计意图是从列表中除去节点,但是现在却没有节点。因此,它只能: <br /><br />锁定互斥对象时,线程将调用 pthread_cond_wait(&mycond,&mymutex)。pthread_cond_wait

2011-02-21 11:28:00 371

转载 POSIX定时器

POSIX定时器:timer_settime()(2010-06-12 09:25:33)转载标签:杂谈分类:Linux<br />    最强大的定时器接口来自POSIX时钟系列,其创建、初始化以及删除一个定时器的行动被分为三个不同的函数:timer_create()(创建定时器)、timer_settime()(初始化定时器)以及timer_delete(销毁它)。<br /> <br />创建一个定时器:int timer_create(clockid_t clock_id, struct sigev

2011-02-17 17:36:00 907

原创 sprintf的使用

<br />sprintf用来格式化输入时,如果出现段错误时,看看分配的空间是足够,改大一些试试,sprintf内部不对做安全性检查,有可能直接对错误的地址进行操作,所以容易产生段错误!

2011-01-11 16:39:00 638

转载 嵌入式系统上移植iperf

<br />1. 先把iperf-2.0.2.tar.gz解压到你的目录下。<br />2. cd iperf-2.0.2<br />3. ./configure --host=mips  CXX=mips_4KC-g++ CC=mips_4KC-gcc<br />   这里的mips_4KC-改成你自己的交叉编译器的前缀。<br />4. make<br />5. 如果make通不过的话就到 config.h 中把 #define malloc rpl_malloc 注释掉。<br />6. make<b

2011-01-10 12:57:00 3407

转载 实现DHCP自动获取IP地址

<br /><br />前提:系统已经实现DNS(即使用ping <br />[url=http://www.baidu.com测试时能ping/][color=#0000ff]www.baidu.com[/color]测试时能ping[/url]<br />通)。<br />1.  在内核中添加以下选项:<br />Networking  ---><br />   [*] Networking support   <br />      Networking options  --->  <br /> 

2011-01-10 12:54:00 7267

原创 微机原理与接口技术多媒体教学课件 -- 太原理工大学

<br />http://www.tyut.edu.cn/kecheng1/2008/site04/courseware/index.htm<br /> 

2011-01-06 14:20:00 2197

转载 warning:incompatible implicit declaration of built-in function

<br />使用gcc编译程序,若碰到这样的warning:incompatible implicit declaration of built-in function 'exit',则表明没有include相应的头文件。<br /><br />只是不明白,为什么gcc给出的是warning,而不是error?个人猜测是gcc会自动寻找比较通用的库,如stdlib或stdio。

2010-12-27 17:05:00 735

转载 Ping命令的工作过程及单向Ping通的原因

<br />网络出现问题时,我们最常用的测试工具就是“ping”命令了。但有时候我们会碰到单方向ping通的现象,例如通过hub或一根交叉线连接的在同一个局域网内的电脑a、 b,在检查它们之间的网络连通性时,发现从主机a ping 主机b正常而从主机b ping 主机a时,出现“超时无应答”错误。为什么呢? <br />    要知道这其中的奥秘,我们有必要来看看ping命令的工作过程到底是怎么样的。 <br />    假定主机a的ip地址是192.168.1.1,主机b的ip地址是192.168.1.2

2010-12-24 13:28:00 692

转载 网络字节顺序和主机字节顺序的转换(htons ntohs htonl ntohl)

什么是网络字节顺序和主机字节顺序呢?在进行网络编程时,需要进行转换以统一“格式”简述:网络字节顺序NBO(Network Byte Order):按从高到低的顺序存储,在网络上使用统一的网络字节顺序,可以避免兼容性问题。主机字节顺序(HBO,Host Byte Order):不同的机器HBO不相同,与CPU设计有关详解:不同的CPU有不同的字节序类型 这些字节序是指整数在内存中保存的顺序 这个叫做主机序最常见的有两种1. Little endian:将低序字节存储在起始地址2. Big en

2010-12-23 21:36:00 2878 2

转载 EIP & EBP & ESP

eax, ebx, ecx, edx, esi, edi, ebp, esp等都是X86 汇编语言中CPU上的通用寄存器的名称,是32位的寄存器。如果用C语言来解释,可以把这些寄存器当作变量看待。比方说:add eax,-2 ;   //可以认为是给变量eax加上-2这样的一个值。这些32位寄存器有多种用途,但每一个都有“专长”,有各自的特别之处。EAX 是"累加器"(accumulator), 它是很多加法乘法指令的缺省寄存器。EBX 是"基地址"(base)寄存器, 在内存寻址时存放基地址。ECX 是计

2010-12-20 23:13:00 7040 1

转载 strtok

strtok 原型:extern char *strtok(char *s, char *delim); 用法:#include <string.h> 功能:分解字符串为一组标记串。s为要分解的字符串,delim为分隔符字符串。 说明:首次调用时,s必须指向要分解的字符串,随后调用要把s设成NULL。 strtok在s中查找包含在delim中的字符并用NULL('/0')来替换,直到找遍整个字符串。 返回指向下一个标

2010-12-09 11:08:00 500

转载 SSCANF用法详解

<br />名称:  sscanf() - 从一个字符串中读进与指定格式相符的数据. 编辑本段函数原型:<br />  Int sscanf( const char *, const char *, ...); <br />  int scanf( const char *, ...); 编辑本段头文件:<br />#include<stdio.h>编辑本段说明:<br />sscanf与scanf类似,都是用于输入的,只是后者以键盘(stdin)为输入源,前者以固定字符串为输入源。    第一个参数可以是

2010-12-09 11:00:00 696

高效学习linux内核—新手必看—本人极力推荐

本文档是我偶然间在网上看到的,感觉是一篇不可多得的好文章,很是值得内核学习的新手们看一下。祝你们好运!

2010-10-22

Intel笔试面试题

本文档包含了较多的Intel笔试面试题,希望对大家有所帮助!

2010-10-08

Linux内核中断分析

Linux内核中断分析,希望对初学者有所帮助!

2010-04-28

基于ARM的嵌入式Linux系统异常和中断的实现及优化

基于ARM的嵌入式Linux系统异常和中断的实现及优化。

2010-04-28

威盛电子笔试题和答案

本资料详细记载了威盛笔试答案,但愿对有需要的朋友有所帮助

2010-04-28

深入浅出Linux设备驱动编程

本教材采用深入浅出的方法详细描述了Linux驱动开发的方法及原理,是初学者的案头必备资料

2010-04-03

空空如也

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

TA关注的人

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