- 博客(37)
- 收藏
- 关注
转载 (网络层)IP 协议首部格式与其配套使用的四个协议(ARP,RARP,ICMP,IGMP)
文章转载处:http://www.cnblogs.com/kzloser/articles/2582349.html#目录IP协议首部格式地址解析协议 ARP逆向地址解析协议 RARP网际控制报文协议 ICMP网际组管理协议IGMPIP 数据报首部IP数据报首部格式:最高位在左边,记为0 bit;最低位在右边,记为31 bit
2015-07-15 08:38:35 659
转载 二进制 补码 运算
问一个基本的问题。负数在计算机中如何表示?举例来说,+8在计算机中表示为二进制的1000,那么-8怎么表示呢?很容易想到,可以将一个二进制位(bit)专门规定为符号位,它等于0时就表示正数,等于1时就表示负数。比如,在8位机中,规定每个字节的最高位为符号位。那么,+8就是00001000,而-8则是10001000。但是,随便找一本《计算机原理》,都会告诉你,实际上
2015-05-19 19:40:28 1179
转载 原码, 反码, 补码 详解
本篇文章讲解了计算机的原码, 反码和补码. 并且进行了深入探求了为何要使用反码和补码, 以及更进一步的论证了为何可以用反码, 补码的加法计算原码的减法. 论证部分如有不对的地方请各位牛人帮忙指正! 希望本文对大家学习计算机基础有所帮助! 一. 机器数和真值在学习原码, 反码和补码之前, 需要先了解机器数和真值的概念.1、机器数一个数在计算机中的二进制表示形式
2015-05-19 19:38:15 507
转载 51单片机程序执行流程(STARTUP.A51)
2013-06-05 11:21 3856人阅读 评论(6)收藏 举报keil 版本:uVision 4 单片机是没有上操作系统的东西,在keil中编写的代码都是裸机代码,深入编写裸机代码有助于了解硬件的特性。 若不是硬件特性已定的情况之下的其它流程都是代码作祟。忽然想到来探探51单片机的执行流程。这个念头起源于最初见到每个51程序里面的主函数
2015-05-09 20:47:55 7972 1
转载 NOR Flash擦写和原理分析
NOR Flash擦写和原理分析1. NOR FLASH 的简单介绍NOR FLASH 是很常见的一种存储芯片,数据掉电不会丢失.NOR FLASH支持Execute On Chip,即程序可以直接在FLASH片内执行(这意味着存储在NOR FLASH上的程序不需要复制到RAM就可以直接运行).这点和NAND FLASH不一样.因此,在嵌入式系统中,NOR FLASH很适合作为
2015-04-25 15:32:18 6161
转载 linux内存操作--ioremap和mmap学习笔记
最近在做视频输出相关的东西,对于预留给framebuffer的内存使用不是很清楚,现在找到一些资料整理一下,以备使用。if (想看使用方法) goto 使用方法;对于一个系统来讲,会有很多的外设,那么这些外设的管理都是通过CPU完成。那么CPU在这个过程中是如何找到外设的呢?尽管在一个系统中会有诸多的外设,在每个外设的接口电路中会有多个端口。但是如果系统能够每个端口都被赋予一
2015-04-24 17:13:02 791
原创 io端口与io内存详解
(一)地址的概念1)物理地址:CPU地址总线传来的地址,由硬件电路控制其具体含义。物理地址中很大一部分是留给内存条中的内存的,但也常被映射到其他存储器上(如显存、BIOS等)。在程序指令中的虚拟地址经过段映射和页面映射后,就生成了物理地址,这个物理地址被放到CPU的地址线上。物理地址空间,一部分给物理RAM(内存)用,一部分给总线用,这是由硬件设计来决定的,因此在32bits地址线的x86
2015-04-24 16:47:28 13485 3
转载 writeb(), writew(), writel(),readb(), readw(), readl() 宏函数
writeb(), writew(), writel() 宏函数功能 :往内存映射的 I/O 空间上写数据。writeb() I/O 上写入 8 位数据 (1字节)writew() I/O 上写入 16 位数据 (2字节)wirtel() I/O 上写入 32 位数据 (4字节)原型 :引用#include void writeb
2015-04-24 11:31:15 794
原创 NAND flash和NOR flash的区别
NAND flash和NOR flash的区别一、NAND flash和NOR flash的性能比较flash闪存是非易失存储器,可以对称为块的存储器单元块进行擦写和再编程。任何flash器件的写入操作只能在空或已擦除的单元内进行,所以大多数情况下,在进行写入操作之前必须先执行擦除。NAND器件执行擦除操作是十分简单的,而NOR则要求在进行擦除前先要将目标块内所有的位都写为0。由于擦除NO
2015-04-22 20:22:00 451
转载 存储器简介(RAM/ROM/FLASH/NVRAM)
memory内存RAM(Random Access Memory)随机存储器。掉电后数据会消失SRAM((Static RAM)写入的数据不会消失,直到下次写入或掉电。常用于CPU的一级缓存、二级缓存。价格昂贵。DRAM(Dynamic RAM)写入的数据不能长期保持,必须在一定时间内进行刷新才能保持。常用作内存。价格低于SRAMSDRAM(Synchron
2015-04-22 16:00:04 1615
原创 Nand Flash和Nor Flash相关知识
Flash根据内部存储结构的不同分为两种:Norflash和Nand flash。 Norflash使用方便,易于连接,可以在芯片上直接运行代码,稳定性出色,传输速率高,在小容量时有很高的性价比。像访问SDRAM一样,按照数据/地址总线直接访问, 可写的次数较少,速度也慢,由于其读时序类似于SRAM,读地址是线性结构,这使其很适合应于嵌入式系统中作为 FLASH ROM。 Nan
2015-04-21 16:02:46 649
转载 Linux设备驱动--块设备(四)之“自造请求”
前面, 我们已经讨论了内核所作的在队列中优化请求顺序的工作; 这个工作包括排列请求和, 或许, 甚至延迟队列来允许一个预期的请求到达. 这些技术在处理一个真正的旋转的磁盘驱动器时有助于系统的性能. 但是, 许多面向块的设备, 例如闪存阵列, 用于数字相机的存储卡的读取器、u盘等, 并且 RAM 盘真正地有随机存取的性能, 包含从高级的请求队列逻辑中获益. 其他设备, 例如软件 RAID 阵列或者被
2015-04-20 19:42:41 543
转载 Linux设备驱动--块设备(三)之程序设计
块设备驱动注册与注销块设备驱动中的第1个工作通常是注册它们自己到内核,完成这个任务的函数是 register_blkdev(),其原型为:int register_blkdev(unsigned int major, const char *name);major 参数是块设备要使用的主设备号,name为设备名,它会在/proc/devices中被显示。 如果major为0
2015-04-20 19:19:12 441
转载 Linux设备驱动--块设备(一)之概念和框架
基本概念 块设备(blockdevice)--- 是一种具有一定结构的随机存取设备,对这种设备的读写是按块进行的,他使用缓冲区来存放暂时的数据,待条件成熟后,从缓存一次性写入设备或者从设备一次性读到缓冲区。字符设备(Character device)---是一个顺序的数据流设备,对这种设备的读写是按字符进行的,而且这些字符是连续地形成一个数据流。他不具备缓冲区,所
2015-04-20 19:04:45 330
转载 Linux设备驱动--块设备(二)之相关结构体
上回最后面介绍了相关数据结构,下面再详细介绍块设备对象结构 block_device内核用结构block_device实例代表一个块设备对象,如:整个硬盘或特定分区。如果该结构代表一个分区,则其成员bd_part指向设备的分区结构。如果该结构代表设备,则其成员bd_disk指向设备的通用硬盘结构gendisk当用户打开块设备文件时,内核创建结构block_device实例,设备
2015-04-20 19:03:48 380
转载 ioctl在socket中的一些用法及示例
ioctl在socket中的一些用法及示例函数 : ioctl(int fd, int request, void * arg)定义 : 功能 : 控制I/O设备, 提供了一种获得设备信息和向设备发送控制参数的手段.参数 : int fd 文件句柄. 用于socket时, 是socket套接字. int request 函数定义的所有操作. 关于s
2015-04-16 15:40:45 610
转载 getopt()
getopt被用来解析命令行选项参数。#include extern char *optarg; //选项的参数指针 extern int optind, //下一次调用getopt的时,从optind存储的位置处重新开始检查选项。 extern int opterr, //当opterr=0时,getopt不向stderr
2015-04-11 09:14:05 410
原创 gcc编译器搜索Linux下头文件路径
gcc编译器搜索头文件路径 本文介绍在linux下gcc编译器是如何找到程序中的头文件的。头文件是一种文本文件,使用文本编辑器将代码编写好之后,以扩展名.h保存就行了。头文件中一般放一些重复使用的代码,例如函数声明、变量声明、常数定 义、宏的定义等等。当使用#include语句将头文件引用时,相当于将头文件中所有内容,复制到#include处。#include有两种写法形式, 分
2015-03-20 16:16:33 8830
转载 Linux驱动基础开发4
Linux 内核配置机制(make menuconfig、Kconfig、makefile)讲解前面我们介绍模块编程的时候介绍了驱动进入内核有两种方式:模块和直接编译进内核,并介绍了模块的一种编译方式——在一个独立的文件夹通过makefile配合内核源码路径完成 那么如何将驱动直接编译进内核呢? 在我们实际内核的移植配置过程中经常听说的内核裁剪又是怎么麽回事呢?
2015-03-20 09:25:08 482
转载 Linux驱动基础开发3
Linux 驱动开发前奏(模块编程)一、linux内核模块简介 linux内核整体结构非常庞大,其包含的组件也非常多。我们怎么把需要的部分都包含在内核中呢? 一种办法是把所有的需要的功能都编译到内核中。这会导致两个问题,一是生成的内核会很大,二是如果我们要在现有的内核中新增或删除功能,不得不重新编译内核,工作效率会非常的低,同时如果编译的模块不是很完善,
2015-03-20 09:09:53 356
转载 Linux驱动基础开发2
Linux 设备驱动基本概念学习linux设备驱动首先我们必须明确以下几个概念,为我们接下来学习linux驱动打下坚实的基础:应用程序、库、内核、驱动程序的关系设备类型设备文件、主设备号与从设备号驱动程序与应用程序的区别用户态与内核态Linux驱动程序功能一、应用程序、库、内核、驱动程序的关系 1)应用程序调
2015-03-20 08:58:44 471
转载 Linux驱动基础开发1
Linux 设备驱动概述目前,Linux软件工程师大致可分为两个层次: (1)Linux应用软件工程师(Application Software Engineer): 主要利用C库函数和Linux API进行应用软件的编写; 从事这方面的开发工作,主要需要学习:符合linux posix标准的API函数及系统调用,linux的多任务编程技巧:多进
2015-03-20 08:49:30 444
转载 格式化输入输出
格式化输入输出1. fprintf(格式化输出数据至文件)相关函数 printf,fscanf,vfprintf表头文件 #include定义函数 int fprintf(FILE * stream, const char * format,.......);函数说明 fprintf()会根据参数format字符串来转换并格式化数据,
2015-03-08 16:39:44 420
原创 标准I/O操作
FILE *fopen(const char *filename, const char *mode);fopen函数由filename打开,mode参数指定文件的打开方式:'r' 只读方式打开,将文件指针指向文件头,如果文件不存在,则File返回空。'r+' 读写方式打开,将文件指针指向文件头,如果文件不存在,则File返回空。 'w' 写入方式打开,将文件指针指向文件头并将文件
2015-03-03 23:12:20 401
转载 C语言二级指针
指针是C语言的灵魂,我想对于一级指针大家应该都很熟悉,也经常用到:比如说对于字符串的处理,函数参数的“值,结果传递”等,对于二级指针或者多级指针,我想理解起来也是比较容易的,比如二级指针就是指向指针的指针.....n级指针就是.... p *p **p
2015-02-14 16:56:28 573
转载 Linux之module_param()函数学习
一.module_param1.为什么引入 在用户态下编程可以通过main()来传递命令行参数,而编写一个内核模块则可通过module_param()来传递命令行参数. 2. module_param宏是Linux 2.6内核中新增的,该宏被定义在include/linux/moduleparam.h文件中,具体定义如下: /* Helper functions: type
2015-01-12 15:38:18 463
转载 理解“统一编址与独立编址、I/O端口与I/O内存”
引言: 从CPU连出来一把线:数据总线、地址总线、控制总线,这把线上挂着N个接口,有相同的,有不同的,名字叫做存储器接口、中断控制接口、DMA接口、并行接口、串行接口、AD接口……一个设备要想接入,就用自己的接口和总线上的某个匹配接口对接……于是总线上出现了各种设备:内存、硬盘,鼠标、键盘,显示器…… 对于CPU而言,如果它要发数据到某个设备,其实是发到对应
2015-01-10 14:18:15 995
转载 Vlan和pvlan全面解析
这篇我将全面分析和讲解vlan知识。大家学习一个新东西或一种新知识之前首先要做的是不要怕,相信自己一定能学好,那么如何去学习新知识呢?首先问自己几个问题:这是什么?有什么用?用在哪里?为什么会产生呢?怎么用?有什么特性?用什么不同的情况吗?今天我们就按照这个思路讲解这项技术。什么是vlan?Vlan是指交换机上创建的将能够代表一个大的广播域的物理lan划分成能够代表若干个小的广播域的逻辑l
2014-12-22 21:19:41 2318
转载 error: two or more data types in declaration specifiers原因及解决方法
转载地址:http://blog.csdn.net/sky_qing/article/details/11640307编译时报错:[plain] view plaincopyprint?error: two or more data types in declaration specifiers 原因可能有两个:
2014-12-12 14:17:38 1269
转载 错误: 隐式声明函数‘kmalloc’ [-Werror=implicit-function-declaration]
编译时遇到这个错误,原因是没有包含头文件linux/slab.h./home/xxha/study/char/memdev.c:152:2: 错误: 隐式声明函数‘kmalloc’ [-Werror=implicit-function-declaration]隐式声明函数错误的意思是函数在未声明之前就被调用了,需要先声明这两个函数,版本变化导致这个错误的出现。解
2014-12-10 18:55:15 26845
转载 (GCC) How can I hide "defined but not used" warnings in GCC?
2014-02-14 wcdjMay happy ending of love belong to every developer.From: http://play.golang.org/p/xl1P6jYtIZQuestion:How can I hide "defined but not used" warnings in GCC?
2014-12-10 16:36:24 4470
转载 消灭编译警告(Warning)
如何看待编译警告当编译程序发现程序中某个地方有疑问,可能有问题时就会给出一个警告信息。警告信息可能意味着程序中隐含的大错误,也可能确实没有问题。对于警告的正确处理方式应该是:尽可能地消除之。对于编译程序给出的每个警告都应该仔细分析,看看是否真的有问题。只有那些确实无问题的警告才能放下不管。说明:由于编译的警告各种各样,根本不可以一一罗列出来,下面只是列举出比较典型的一些警告
2014-12-10 16:11:04 787
转载 Makefile 中:= ?= += =的区别
转载:http://www.cnblogs.com/wanqieddy/archive/2011/09/21/2184257.htmlMakefile 中:= ?= += =的区别在Makefile中我们经常看到 = := ?= +=这几个赋值运算符,那么他们有什么区别呢?我们来做个简单的实验新建一个Makefile,内容为:ifdef DEFINE
2014-12-02 20:21:07 418
转载 Makefile中的wildcard用法
在Makefile规则中,通配符会被自动展开。但在变量的定义和函数引用时,通配符将失效。这种情况下如果需要通配符有效,就需要使用函数“wildcard”,它的用法是:$(wildcard PATTERN...) 。在Makefile中,它被展开为已经存在的、使用空格分开的、匹配此模式的所有文件列表。如果不存在任何符合此模式的文件,函数会忽略模式字符并返回空。需要注意的是:这种情况下规则中通配符
2014-12-02 20:17:01 588
转载 linux shell 用sed命令在文本的行尾或行首添加字符
用sed命令在行首或行尾添加字符的命令有以下几种:假设处理的文本为test.file在每行的头添加字符,比如"HEAD",命令如下:sed 's/^/HEAD&/g' test.file在每行的行尾添加字符,比如“TAIL”,命令如下:sed 's/$/&TAIL/g' test.file运行结果如下图:几点说明:1.
2014-12-02 13:07:14 864
转载 Linux下Gcc生成和使用静态库和动态库及相关问题总结
最近一阶段项目中编译过程中涉及到动态与静态库,从网上收集了一些资料,并做个总结。一、基本概念1.1 什么是库在windows和linux平台下存在着大量的库。本质上来说库是一种可执行代码的二进制形式,可以被操作系统载入内存执行。由于windows和linux的平台不同(主要是编译器、汇编器和连接器的不同),因此二者库的二进制是不兼容的。本文仅限于介绍linux下的库。1.2 静
2014-12-01 14:25:12 746
转载 Linux下的lds链接脚本简介(一)
转载自:http://linux.chinaunix.net/techdoc/beginner/2009/08/12/1129972.shtml一、 概论每一个链接过程都由链接脚本(linker script, 一般以lds作为文件的后缀名)控制. 链接脚本主要用于规定如何把输入文件内的section放入输出文件内, 并控制输出文件内各部分在程序地址空间内的布局. 但你也可以用
2014-11-11 16:46:17 411
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人