自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(28)
  • 资源 (5)
  • 收藏
  • 关注

转载 linux网络流程分析(一)---网卡驱动

文章来源于http://www.cnblogs.com/gogly/archive/2012/06/10/2541573.html 如有冒犯尽请原谅分析linux网络的书已经很多了,包括《追踪Linux TCP/IP代码运行》《Linux内核源码剖析——TCP/IP实现》,这里我只是从数据包在linux内核中的基本流程来分析,尽可能的展现一个主流程框架。内核如何从网卡接收数据,传统的过程:

2014-03-11 15:50:20 604

原创 DM9000网卡驱动移植

网卡驱动移植步骤1 确定相异性步骤2 修改代码一般就是修改 IOBASE 和中断按照原理图,其片选信号可能是往固定段落内存写数据,即是片选到这个设备。这个也是统一编址的一种方式。根据原理图,修改其中段引脚,把其IRQ修改为原理图上面的IRO. 网卡中本来就有内存,当网卡接受到数据时候,就会产生中断,在中断服务程序里面把数据拿出来构造一个SK buffer 提交上去,发送

2014-03-09 23:38:28 654

原创 arm中断分析

中断向量表在跑裸机程序时候在程序的开始位置放置就是中断向量表0x0   复位0X4  Undef0x8  SWI...0X18 外部中断请求 IRQ0x1c 快速中断请求  FIQ这些中断的实现都是在UBOOT或者是bootloder的代码里面实现的 进入到内核操作系统之后 内核或从新再建立一个中断向量表,当然地址也可以自己配置可以是从0开始也可以不

2014-03-08 22:59:36 533

原创 uboot分析

ubootuboot的目的是启动内核其中需要做2个动作1 将内核从flash读出到内存    uboot启动时候依赖于两条条启动命令 boot CMD,  这两条boot命令可以在串口通过命令查看 nand read.jffs2    bootm   读内核时用 do_nand 函数来实现   嵌入式中使用如下定义了flash的分区,例如:  #define MTDPA

2014-03-04 00:05:21 591

原创 Forth 语言学习

新项目中涉及到Forth语言的应用,这是一种全新的语言,先学习学习学习语言最快的入手方面是从一个实例入手:先记录一下规则吧:forth语言可以在命令提示符OK 后面下输入语句即可被执行:1,从键盘中键入的数字forth如何处理呢? 如:OK  3 4 5  forth 将按照先后次序将这3个数字压入堆栈中去。压入堆栈3在下面,5在上面。2,"."表示显示当前堆栈上面的数字

2012-04-16 16:10:54 1557

原创 C++

构造函数 析构函数构造函数和类同门,对类中的成员进行初始化,会被默认调用的,析构函数在结束的时候被调用函数同名覆盖 函数重载函数覆盖是在不同类中函数的名字和参数完全相同,函数重载,重载函数的参数的类型和参数个数必须至少要有一个不相同面向对象的3个特性是:封装(数据结构和操作封装在一起),继承(基类被派生类继承,延续他的特性),多态(就是一个函数或操作符有多种作用,例如操作符

2012-03-14 12:27:37 521

原创 BIOS 初始化零星记录

内存初始化Intel 平台的内存初始化主要是对内存控制器的初始化,主要是由MRC CODE 完成,MRC CODE 首先detect 插在内存插槽上的内存的各种参数,这个动作时通过读取内存SPD来完成的,内存SPD参数包含了内存的各种参数值包括大小型号,类型,还有timing值等等,MRC code 读出这些之后填入内存控制器,从而实现内存控制器和内存之间的最佳timing值。   内存的

2012-03-12 16:33:56 1790

原创 虚拟机下如何搭建GCC编译环境

1 安装虚拟机vmwre2 下载linux系统,我用的是ubuntu 8.04版本的3 安装好系统过后开启linux 终端 键入如下命令 sudo apt-get install build-essential 命令即可4 然后你可以 键入 gcc --version来看看当前GCC 编译器的版本是什么

2012-03-06 15:21:06 834

原创 计算机启动过程

计算机按下开机按键到启动到操作系统的过程中,计算机到底经历了哪些步骤呢:1 按下power bottom之后,计算机会经过一系列的上电过程(power squence)最后然让CPU reset.CPU reset 表示主板电已经上好了并且CPU开始工作2 CPU开始工作时候紧接着就通过SB或者EC SPI 去取BIOS rom中的代码来执行,当然BIOS 的执行过程工作就比较多了,并且L

2012-02-28 15:14:17 511

原创 4S关机的原理

PC机在按住4秒时会自动关机,这个原理是什么呢?  一般PC机的各种电是由EC或Super IO控制的,笔记本上是由EC控制的,当按住power bottom 4S时南桥会拉掉SLP_S3#, SLP_S4#,SLP_S5# ,EC接收到这些信号后,会把系统的电全部拉掉,从而实现关机。  具体步骤是:  1,按住power bottom4s  2 南桥内部的计算器会检测到 powe

2012-02-16 17:16:17 1120 1

原创 C语言题目归类分析

1. ********************************************************************************************************************************************************************************int func(int a){

2011-11-24 09:16:35 472

原创 CONTAINING_RECORD _CR 宏理解

在EFI中常常遇到下面这个宏,他的作用是 ////  CONTAINING_RECORD - returns a pointer to the structure//      from one of it's elements.//#define _CR(Record, TYPE, Field)  ((TYPE *) ((CHAR8 *) (Record) - (CHAR

2011-11-10 17:25:45 879

转载 补码详解

[转载]补码详解      标签:1、在计算机系统中,数值一律用补码来表示(存储)。主要原因:使用补码,可以将符号位和其它位统一处理;同时,减法也可按加法来处理。另外,两个用补码表示的数相加时,如果最高位(符号位)有进位,则进位被舍弃。 2、补码与原码的转换过程几乎是相同的。 数值的补码表示也分两种情况: (1)正数的补码:与原码相同。 例如,+9的补码是000

2011-10-25 10:46:14 1860

原创 windows下如何调用BIOS的函数

在windos中可以通过如下的方式调用到BIOS的函数,之前做一个大客户的案子时,在bios层必须支持这家客户的ACPI WMI规范,只有这样这家可以自己的一些测试tool才能投过WMI来访问到bios里面的东西,从而进行测试。1.在BIOS ASL Code 中里面添加一个虚拟的Device设备,这个设备来可以用于操作BIOS层的资源2.针对这个虚拟的OEM Device的设备写一个WD

2011-10-19 22:40:22 1603 1

转载 堆和栈的区别(转过无数次的文章) .

堆和栈的区别(转过无数次的文章) 一、预备知识—程序的内存分配    一个由C/C++编译的程序占用的内存分为以下几个部分    1、栈区(stack)—   由编译器自动分配释放   ,存放函数的参数值,局部变量的值等。其    操作方式类似于数据结构中的栈。

2011-09-29 21:46:08 310

原创 指针 数组/函数

一:函数指针和指针函数函数名后面跟一对圆括号(兴许括号内还有参数),将导致去计算这个函数。仅仅一个函数名则意味着是一个指针,是一个地址,是指向这个函数的。1指针函数  类型名 *函数名(函数参数表列); 其中,后缀运算符括号“()”表示这是一个函数,其前缀运算符星号“*”表示此函数为指针型函数,其函数值为指针,即它带回来的值的类型为指针,当调用这个函数后,将得到一个“指向返

2011-06-29 08:45:00 354

原创 C语言代码规范

凡是都有规矩,没有规矩就不成方圆,为了让自己写的代码更具可读性,一致性,移植性更好,所以一定要遵循特定的coding convention,由于使用EFI 代码的缘故,所以本文的coding convention大多数参考intel EFI driver writer’s guide的 1缩进(Indentation and Line Length)有些风格使用tab建,有些使用空格键

2011-06-27 15:36:00 844

转载 回调函数 callback

本文引用于:http://www.cppblog.com/elvisch/archive/2008/05/14/49793.html  如有侵犯敬请告知 1.回调函数与普通函数的区别从概念上讲,回调函数与普通函数的本质在于:调用者的不同。普通函数由程序员代码调用,而回调函数由操作系统在适当的时间调用。 回调函数主要用于处各种事件和处理。由于WINDOWS系统中存在大量程序员事先不可知的

2011-06-21 19:36:00 892

原创 EDK 环境搭建

上周从网上下载了Intel EDK 并在EDK中build了shell 下的应用程序 Hello world步骤如下:1 首先在自己机器上安装VC2008(当然2005等也是可以),注意安装时要选择客制化安装,勾选上X64 build 2 下载EDK源代码http://sourceforge.net/apps/mediawiki/tianocore/index.php?titl

2011-06-20 17:09:00 2634 1

原创 字符串常量 和字符常量

c语言中单引号双引号的区别1、含义不同。用单引号引起的一个字符实际上代表一个整数,整数值对应于该字符在编译器采用的字符集中的序列值。而一般我们的编译器采用的都是ASCII字符集。因此s的含义其实和十进制数0x73的含义是一致的。而用双引号引起的字符串,代表的是一个指向无名数组起始字符的指针,这个指针正好指向这个字符串的起始地址。 当字符串常量出现在表达式中时,他的值是个指针

2011-06-14 17:50:00 718

原创 c语言链表

链表中的每个节点其实就是一个指向这个节点的指针,对于第一个节点这个指针是跟指针;对于其他节点,这个指针是其他节点的link字段。每个节点都有一个指针指向他。

2011-06-14 17:20:00 357

原创 引用参数

  以“&”打头的参数即为引用参数。       引用相当于给对象起了一个别名。当一个对象赋给一个引用后。无论对引用还是这个对象的访问都是对被引用的对象的地址空间的访问。        函数参数如果没有特别声明的话是传值引用的。也就是给函数传递过去实际参数的一份拷贝,当实际参数需要很大的空间时这样是不实际的做法。于是可以通过传递它的引用的方式解决。         但是传递引用的方式可以在函数

2011-06-12 22:33:00 1953

原创 EFI Protocol 的分析

Protocol顾名思义,协议,其实就是一些函数和数据的集合,这些函数集合在一起视乎就形成了协议。我们在使用protocal的时候需要先install这个protocal,install之前会先实现这些函数,和数据,把他们进行赋值。install一个protocal时相当于吧这些函数的指针传递给了一个handle,我们要使用这些实例,只需要local这个protocal找到这个handle就可以找

2011-06-09 17:02:00 4616 1

原创 Minimal Intel Architecture Boot Loader

今天看了一篇intel的白皮书感觉受益匪浅所以在网络上把他记录总结一下,白皮书的docment number is 323246文章的写作意图是想写一篇总结性文章来描述intel 平台的系统启动的顺序,步骤以及要想自己写一个在intel平台上的BIOS所需要的一些技术性文章。当一个新平台要开发的时候可能会有2种开发状况1 开发一款BIOS2 开发一款定制化的boot loader2者的区别在于BI

2011-06-06 21:00:00 1149

原创 windows7 下亮度条调屏幕背光

<br />功能描述:<br />Windows 7 下拉动控制面板》电源管理下面的笔记本显示屏背光亮度控制条来控制笔记本的亮度,和通过fn+function 控制背光同时操作系统的背光亮度条也要跳到对应的位置<br /> <br />笔记本显示屏的背光控制通常是由EC PWM 直接控制,或者由北桥L_BACKLIGHT 控制,我们的案子上是由EC pwm直接控制<br />window 7 下拉动背光亮度控制条实现亮度控制的过程大致如下:拉动亮度条》os driver 》acpi methed _BCM

2011-05-31 20:12:00 3384

原创 华为的一道C语言面试题

设int arr[]={6,7,8,9,10};int *ptr=arr;*(ptr++)+=123;printf("%d,%d",*ptr,*(++ptr));答案是:8,8分析:*(ptr++)+=123;解释为:*(ptr++)=*(ptr++)+123   //数组第一个元素变为6+123           然后prt++   指向7printf("%d,%d",*ptr,*(++ptr)); 只能解释为 printf函数从右到左开始处理,所以答案都是8,8

2011-05-31 20:06:00 681

原创 C语言小程序

/*    斐波拉契数列,求数列的第N个数的值,并求前N个数的和1   1   2   3   5   8   13   21   34*/# include int main(void){int n;int f1,f2,f3;int i;int sum =0;1=1;f2=1;printf("请输入您需要求的项的数:");scanf("%d",&n);if(n==1){  f3=1;  sum =1;}else if(n==2){  f3=1;  sum=2;}else{  for(i=3;i  {  

2011-05-31 19:40:00 421

原创 博客开张了~~~

<br />    从事X86 BIOS工作有一段时间了,一直想把自己学习到的东西做些记录总结,现在把它记录到网络上来吧。

2011-05-29 21:42:00 294

C语言深度剖析——这是一本难得的C语言好书

这是一本难得的C语言好书,从另一个角度剖析了C语言

2011-07-07

pc技术内幕 介绍pc构架 原理的书籍

非常好的一本学习pc原理的书籍,非常值得,很高兴和大家一起分享

2009-06-16

图片批量压缩工具 用于数码相片的大量压缩 速度很快

图片批量压缩工具 用于数码相片的大量压缩 速度很快,且压缩过后图片质量没有很大损伤,非常适用

2009-02-02

网管万能批处理工具包

网管万能批处理工具包,让网管变得轻松些,里面包括系统工具,网络工具,杀毒,等等

2008-10-25

空空如也

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

TA关注的人

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