自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

冀博

tiger-john不懈学习嵌入式ing-- 尘事中一个迷途,小小硕士

  • 博客(216)
  • 资源 (22)
  • 收藏
  • 关注

原创 Linux内核链表的研究与应用

Linux内核链表的研究与应用(“2012年度CSDN博客之星”评选,欢迎为我投上一票,多谢)Author:tiger-johnTime:2012-12-20Mail:jibo.tiger@gmail.comBlog:http://blog.csdn.net/tigerjb/article/details/8299599转载请注明出处。前言:在Linux内核中使用了大量的链表来组织其数据,其采用了

2012-12-15 19:46:13 15219 16

原创 container_of分析

1.container_of宏1> Container_of在Linux内核中是一个常用的宏,用于从包含在某个结构中的指针获得结构本身的指针,通俗地讲就是通过结构体变量中某个成员的首地址进而获得整个结构体变量的首地址。2>接口:container_of(ptr, type, member)  ptr:表示结构体中member的地址 type:表示结构体类型 member:表示结构体中的成员通

2012-12-15 19:23:17 45016 10

原创 offset宏的讲解

1.offset宏讲解#define offsetof(TYPE, MEMBER) ((size_t) &((TYPE*)0)->MEMBER)对这个宏的讲解我们大致可以分为以下4步进行讲解:1>( (TYPE *)0 )  0地址强制 "转换" 为 TYPE结构类型的指针;2>((TYPE *)0)->MEMBER   访问TYPE结构中的MEMBER数据成员;3>&( ( (TYPE *)0

2012-12-15 19:19:29 9117 4

原创 GNU C的扩展

列举了GNU C中扩张的一些特性

2012-12-15 19:07:31 4447

转载 Linux 内核源码中likely()和unlikely()

ikely()与unlikely()在2.6内核中,随处可见,那为什么要用它们?它们之间有什么区别呢?首先明确:if (likely(value))等价于if (value)if (likely(a>b)) {fun1();if (unlikely(value))等价于if (value)也就是说likely()和unlikely()从阅读和理解的角度是一样的。这两个宏在内核中定义如下:#defi

2012-12-10 17:36:28 27745

转载 OS 调度算法及优先级反转

在多进程、多线程并发的环境里,从概念上看,有多个进程或者多个线程在同时执行,具体到单个CPU级别,实际上任何时刻只能有一个进程或者线程处于执行状态;因此OS需要决定哪个进程执行,哪些进程等待,也就是进程的调度。一、调度的目标1、首先要区分程序使用CPU的三种模式:IO密集型、计算密集型和平衡型。对于IO密集型程序来说,响应时间非常重要;对于CPU密集型来说,CPU的周转时间就比较重要;对于平衡型程

2012-10-31 16:34:14 4328

转载 linux 下各种解压缩命令

大致总结了一下linux下各种格式的压缩包的压缩、解压方法。但是部分方法我没有用到,也就不全,希望大家帮我补充,我将随时修改完善,谢谢!整理:会游泳的鱼来自:www.LinuxByte.net最后更新时间:2005-2-20.tar解包:tar xvf FileName.tar打包:tar cvf FileName.tar DirName(注:tar是打包,不是压缩!)——————————————

2012-08-18 12:07:44 2353

原创 ARM SRS 汇编指令用法

SRS作用:存储返回状态。语法SRSaddr_mode #mode{!}其中:addr_mode 是以下指令之一:IA 在每次传送后增加地址;IB 在每次传送之前增加地址;DA 在每次传送后减小地址;DB 在每次传送之前减小地址;FD 满的降序栈;ED 空的降序栈;FA 满的升序栈;EA 空的升序栈。mode 指定模式的编号,该模式所编组的 r13 被用作基址寄存器注ARM处理器模式 ARM 处理

2012-08-01 19:28:22 5780

转载 ARM中断PC返回值分析

在ARM程序的开发过程中,对中断的处理是很普遍的、也是相当重要的。Realview MDK使用的RVCT编译器提供了__irq关键字,用此关键字修饰的函数被作为中断来函数编译,即在编译的过程中,编译器会自动添加中断处理过程中现场保护和恢复的代码,减小程序的开发难度,加快软件的开发过程。在理解__irq关键字的作用之前,先看一下ARM核对异常的处理过程。当产生异常时, ARM核拷贝CPSR寄存器的内

2012-07-18 13:01:45 3220

转载 关于__irq 的使用

关于__irq 的使用__irq为一个标识,用来表示一个函数是否为中断函数。对于不同的编译器,__irq在函数名中的位置不一样,例如:ADS编译器中: void __irq IRQ_Eint0(void);Keil编译器中: void IRQ_Eint0(void) __irq;但是其意义一样,它所完成的任务是标识该函数为中断函数,在编译器编译是调用此函数时,先保护函数入口现场,然后执行中断函数,

2012-07-18 11:59:49 4642

转载 ARM微处理器中的常量

ARM微处理器中的常量学习ARM微处理器中的常量时,一直很懵懂,网上查了一下,终于弄明白,记录下来先。书上的原话是:“常量是一个8位的常数经循环右移偶数位(0、2、4、8、…、26、28、30)得到。ARM指令时固定的32位指令编码,不可能直接用32位表示立即数,采用上述间接方式表示的立即数在指令编码中需要12位(其中8位表示常数,4位表示循环右移)。这样一来,不是每一个32位常数都是合法的立即数

2012-07-12 17:57:04 2021

原创 ARM SRS汇编指令的用法

SRSStore Return State onto a stack.SyntaxSRS{addr_mode}{cond} sp{!}, #modenumSRS{addr_mode}{cond} #modenum{!}        ; This is a pre-UAL syntaxwhere:addr_modeis any one of the following:IAIncremen

2012-07-12 14:36:01 4651

转载 arm-linux-eabi 和arm-none-eabi的区别

编译器arm-linux-eabi 和arm-none-eabi arm-linux-eabi 用于编译 armlinux 代码arm-none-eabi 不指名操作系统,可以是linux, 也可以是vxworks等,arm-none-eabi 不包含 __linux__ 等特定宏,所以往往编译linux 内核的时候通不过。 编译器arm-linux-eabi 和arm-none-eabi arm

2012-07-11 11:07:57 7750

转载 如何查看进程打开了哪些文件

有许多情况下,我们需要查看一个进程当前打开了哪些文件,反过来我们也希望知道某一个文件正在被哪些进程所读写。在Linux下有许多有用的工具可以帮我们完成这两个工作,下面介绍这两个工具:lsof与fuser。    fuser find files or sockets' user     格式:fuser [选项] fname     -k 如果找到打开文件的进程,则发送SIGKILL杀死此进程,通

2012-07-10 10:49:02 5957

原创 arm c中字节对齐

__align__align 关键字指示编译器在 n 字节边界上对齐变量。__align 是一个存储类修饰符。它不影响函数的类型。语法__align(n)其中:n是对齐边界。对于局部变量,n 值可为 1、2、4 或 8。对于全局变量,n 可以具有最大为 2 的 0x80000000 次幂的任何值。__align 关键字紧靠变量名称前面放置。用法如果声明的变量的常规对齐边界小于 n,__alig

2012-07-05 15:18:16 5023 1

转载 Linux C语言内联汇编使用

本文档的Copyleft归rosetta所有,使用GPL发布,可以自由拷贝、转载,转载时请保持文档的完整性。参考资料:《Linux内核完全剖析》,《新版汇编语言程序设计》,《Linux C编程一站式学习》    最近要改个C语言算法的关键部分用汇编语言实现,Linux里嵌入汇编基本使用AT&T汇编,比如Linux系统的启动部分用的就是AT&T汇编 。以前学过AT&T汇编,但学过一段时间就忘了,但对

2012-07-02 15:38:19 6846

原创 ARM中B指令和BL指令的区别

在ARM处理器里主要是通过3中情况在控制程序执行的:1.流水方式执行程序,PC的值是下一条指令的地址,即每执行一条指令PC都加一个字的偏移。2.通过跳转指令来控制程序执行。   B 跳转到指定的指令处执行。   BL 跳转执行,保存子程序地址并返回。   BX 跳转执行并切换到Thumb状态。   BLX 三种方式组合。

2012-07-02 15:10:41 14952

转载 ARM的异常中断机制 .

在我们平时使用计算机时我们敲击键盘,计算机会对我做出响应。这是什么原因呢?处理器又是如何响应外围请求的呢?其实这都是通过处理器的中断机制实现的。ARM又是怎样的中断机制?让我们一起探讨吧!在ARM处理器里主要是通过3中情况在控制程序执行的:1.流水方式执行程序,PC的值是下一条指令的地址,即每执行一条指令PC都加一个字的偏移。2.通过跳转指令来控制程序执行。   B 跳转到指定的指令处执行。

2012-07-02 14:37:36 2727

转载 ARM处理器的SWI异常中断响应过程

通过SWI异常中断指令,在用户模式下应用程序可以调用系统模式下的代码,在操作系统中表现为系统调用,那这个过程又是如何实现的呢?带着疑问让我们来学习吧!    在SWI指令中包括一个24位的立即数(中断调用号),该立即数指示了用户要请求的特定的调用功能,所以在SWI的异常中断中要读取这个中断调用号,然后根据中断号,来调用相应的处理程序。这个过程可以分两个步骤:1.SWI异常中断处理程序由于是在底层操

2012-07-02 14:30:55 2771

转载 浅析Arm Linux操作系统调用流程详细解析 .

系统调用是os操作系统提供的服务,用户程序通过各种系统调用,来引用内核提供的各种服务,系统调用的执行让用户程序陷入内核,该陷入动作由swi软中断完成.At91rm9200处理器对应的linux2.4.19内核系统调用对应的软中断定义如下:#if defined(__thumb__)         //thumb模式#define __syscall(name)/    "push    {r7}

2012-07-02 14:29:02 2580

转载 GCC内嵌汇编语法

GCC Inline ASMGCC 支持在C/C++代码中嵌入汇编代码,这些汇编代码被称作GCCInlineASM——GCC内联汇编。这是一个非常有用的功能,有利于我们将一些C/C++语法无法表达的指令直接潜入C/C++代码中,另外也允许我们直接写C/C++代码中使用汇编编写简洁高效的代码。1.基本内联汇编GCC中基本的内联汇编非常易懂,我们先来看两个简单的例子:__asm__("movl%esp

2012-06-28 16:12:37 5103 1

原创 GCC options总结

1.gcc编译器(1)程序的编译过程在使用gcc编译程序时,编译过程可以分为4个阶段:a.预处理(pre-processing)b.编译(compiling)c.汇编(assembing)d.链接(linking)(2)在功能上,预处理,编译,汇编是三个不同的阶段a.在预处理阶段,输入的是C语言的源文件,通常为*.c或*.C.它们一般带有*.h之类的头文件。这个阶段主要处理源文件中的#ifdef,

2012-06-23 21:08:01 3378

转载 Cygwin

什么是Cygwin?Cygwin是什么意思?Cygwin 是 Cygwin 公司(http://cygwin.com/)的产品,它提供了 Windows 操作系统下的一个 UNIX 环境,它可以帮助程序开发人员把应用程序从 UNIX/Linux 移植到 Windows 平台,是一个功能强大的工具集。 Cygwin 由两部分组成: (1)cygwin1.dll:它作为 UNIX 的一个仿真层,提供

2012-06-22 14:19:13 2493

原创 GNU汇编程序中的分段

GNU汇编程序中的分段    .section伪操作.section {,””}Starts a new code or data section. Sections in GNU are called .text, a code section, .data, an initialized data section, and .bss, an uninitialized data sectio

2012-06-18 13:36:11 5693 1

原创 嵌入式程序开发过程

嵌入式开发过程1.嵌入式开发过程由以下几部分组成:代码编程、交叉编译和链接、交叉调试和测试等2.代码编程        由于嵌入式系统是一个受资源限制的系统,故直接在嵌入式系统硬件上进行编程显然是不合理的。在嵌入式系统的开发过程中,一般采用的方法是现在通用PC上编程;然后通过交叉编译、链接、将程序做成目标平台上可以运行的二进制代码格式;最后将程序下载到目标平台上的特定位置,在目标板上启动运行这段二

2012-06-16 20:44:53 2256

原创 Linux文件夹和文件权限

drwxr-x--- 46 jibo jibo 4096 2012-05-31 17:57 _src分别对应的是:文件属性连接数文件拥有者所属群组文件大小文件修改时间文件名这里r是可读,w可写,x 可执行,其中文件属性分为四段,---- --- --- 10个位置例如:  d   rwx   r-x  r-x 第一个字符指定了文件类型。在通常意义上,一个目录也是一个文件。如果第一个字符是横线,表示

2012-05-31 18:21:42 1853

原创 Makefile variable assignment

Makefile variable assignmentWhat is the difference between :VARIABLE = valueVARIABLE ?= valueVARIABLE := valueVARIABLE += value1>VARIABLE = valueNormal setting of a variable - values within it are rec

2012-05-31 11:08:20 2025

原创 armlinker的概念和option

armlinker  option一.armlinker 概念1.       链接器根据链接的对象的构建属性,自动选择要链接的相应标准C或C++库变体。链接器可以链接ARM代码、Thumb代码和Thumb-2代码,并自动生成交互操作胶合代码,以便在需要时切换处理器状态。链接器还可以在需要时自动生成内联胶合代码或长跳转胶合代码,以扩展跳转指令的范围。2.       链接器支持的一些命令选项可用于

2012-05-28 21:35:14 3126

原创 bare-mental project based on RVDS

----------------------------------------------------------------------------------------------------------Author   :tiger-john(冀博)WebSite  :blog.csdn.net/tigerjbEmail    :jibo.tiger@gmail.comTiger声明:本

2012-05-26 14:19:33 2550

原创 文献标识码

文献标识码(Document code)是按照《中国学术期刊(光盘版)检索与评价数据规范》规定的分类码,作用在于对文章按其内容进行归类,以便于文献的统计、期刊评价、确定文献的检索范围,提高检索结果的适用性等。具体如下:A--理论与应用研究学术论文(包括综述报告);B--实用性技术成果报告(科技)、理论学习与社会实践总结(社科);C--业务指导与技术管理性文章(包括领导讲话、特约评论等);D--一般

2012-04-09 10:40:51 1699 1

原创 私有IP地址

私有网络是使用在内部网络的地址,无法存在于公网上,ABCDE 5类网中 A网中的私有地址范围为10.0.0.0-10.255.255.255 B类网的私有地址范围为127.0.0.0-127.255.255.255 172.16.0.0-172.31.255.255 C类的为192.168.0.0-192.168.255.255

2012-04-06 10:18:25 2959 1

原创 C语言中volatile关键字的作用

一.前言1.编译器优化介绍:由于内存访问速度远不及CPU处理速度,为提高机器整体性能,在硬件上引入硬件高速缓存Cache,加速对内存的访问。另外在现代CPU中指令的执行并不一定严格按照顺序执行,没有相关性的指令可以乱序执行,以充分利用CPU的指令流水线,提高执行速度。以上是硬件级别的优化。再看软件一级的优化:一种是在编写代码时由程序员优化,另一种是由编译器进行优化。编译器优化常用的方法有:将内存变

2012-04-05 10:04:56 223212 113

转载 C语言中全局变量、局部变量、静态全局变量、静态局部变量的区别

1.C++变量根据定义的位置的不同的生命周期,具有不同的作用域,作用域可分为6种:全局作用域,局部作用域,语句作用域,类作用域,命名空间作用域和文件作用域。从作用域看:1>全局变量具有全局作用域。全局变量只需在一个源文件中定义,就可以作用于所有的源文件。当然,其他不包含全局变量定义的源文件需要用extern 关键字再次声明这个全局变量。2>静态局部变量具有局部作用域,它只被初始化一次,自从第一次被

2012-04-04 14:44:30 69408 9

原创 函数返回类型为指针类型时的一些问题

1.先看程序:#includechar  *returnStr(){           char  *p = “tigerjibo”;           return  p;}int  main(){           char*str;           str =returnStr();   //str[0]=’T’;则会引起错误,不能修改只读数据段中的内容           pri

2012-04-04 14:43:19 15858 6

原创 c语言程序的存储区域与const关键字的使用方法

一.C语言程序的存储区域1.由C语言代码(文本文件)形成可执行程序(二进制文件),需要经过编译-汇编-连接三个阶段。编译过程把C语言文本文件生成汇编程序,汇编过程把汇编程序形成二进制机器代码,连接过程则将各个源文件生成的二进制机器代码文件组合成一个文件。2.C语言编写的程序经过编译-连接后,将形成一个统一文件,它由几个部分组成。在程序运行时又会产生其他几个部分,各个部分代表了不同的存储区域:1>代

2012-04-03 19:39:05 6448 9

原创 C语言中堆和栈的区别

C语言中堆和栈的区别一.前言:C语言程序经过编译连接后形成编译、连接后形成的二进制映像文件由栈,堆,数据段(由三部分部分组成:只读数据段,已经初始化读写数据段,未初始化数据段即BBS)和代码段组成,如下图所示:1.栈区(stack):由编译器自动分配释放,存放函数的参数值,局部变量等值。其操作方式类似于数据结构中的栈。2.堆区(heap):一般由程序员分配释放,若程序员不释放,则可能会引起内存泄漏

2012-04-03 16:04:19 47463 12

原创 ICMP报文分析

一.概述:1.   ICMP允许主机或路由报告差错情况和提供有关异常情况。ICMP是因特网的标准协议,但ICMP不是高层协议,而是IP层的协议。通常ICMP报文被IP层或更高层协议(TCP或UDP)使用。一些ICMP报文把差错报文返回给用户进程。2.   ICMP报文作为IP层数据报的数据,加上数据报的首部,组成数据报发送出去。3.   ICMP报文的种类有两种,即ICMP差错报告报文和ICMP询

2012-03-15 14:41:12 81940 13

原创 ARP协议分析

前言:ARP协议的作用:1. 什么是ARP?   ARP (Address Resolution Protocol) 是个地址解析协议。最直白的说法是:在IP以太网中,当一个上层协议要发包时,有了该节点的IP地址,ARP就能提供该节点的MAC地址。  2为什么要有ARP?OSI 模式把网络工作分为七层,彼此不直接打交道,只通过接口(layre interface). IP地址在第三层, MAC地址

2012-03-14 10:51:42 66187 6

原创 以太网协议帧

以太网帧格式:1.以太网帧由5个字段组成1>前两个字段分别为6字节长的目的地址和源地址地段。2>第三个字段是2字节的类型字段,用来标志上一层使用的是什么协议。l  类型字段的值为0x0800时,表示上层使用的是IP数据报。l  类型字段的值为0x0806时,表示上层为ARP数据报l  类型字段的值为0x8137时,表示该帧是有Novell IPX发过来的。若为小端格式为:l  类型字段的值为0x0

2012-03-13 11:06:40 5395

原创 物理MAC地址

1.MAC地址网卡MAC地址不是随便定义的,它的组成结构如图所示。1>后3个字节代表该制造商所制造的某个网络产品(如网卡)的系列号,前3个字节表示代表网络硬件制造商的编号,它由IEEE(电气与电子工程师协会)分配2>以太网的地址为48位,由IEEE统一分配给网卡制造商,每个网卡的地址都必须是全球唯一的。共6个字节的长度。FF:FF:FF:FF:FF:FF为广播地址,只能用在目的地址段,不能作为源地

2012-03-13 10:49:41 3646

iperf windows安装包

iperf windows安装包

2013-09-08

ProGit中文手册

progit 中文手册

2013-08-05

progit官方英文手册

git官方原文手册,英文。

2013-08-05

buildroot使用手册

buildroot官方手册

2013-08-05

GNUC扩展用法

讲解了GNUC对标准C语言的扩展的特性和用法

2013-08-05

嵌入式环境搭建之samba

本文主要介绍了samba存在的前因后果,已经对samba进行简要介绍;并介绍了samba在ubuntu下安装,samba服务器端配置以及如何在window7共享samba服务器。最后,总结了samba的使场景。

2013-08-05

嵌入式环境搭建之NFS

本文介绍NFS相关概念,NFS配置文件以及介绍如何设置NFS服务端和客户端,并检验是否设置成功;并对出现的异常进行分析,同时给出一个嵌入式配置实例。

2013-08-05

内核链表在应用层应用

list.h在应用层应用

2012-12-14

bonjour软件包,mDNSResponder

bonjour软件包,开源代码bonjour软件包,开源代码bonjour软件包,开源代码,mDNSResponder,mDNSResponder

2011-07-03

bonjourSDK工具包

bonjourSDK工具包bonjourSDK工具包bonjourSDK工具包bonjourSDK工具包

2011-07-03

Avahi软件包,zeroconfig

Avahi是基于zeroconfig协议的自动发现软件

2011-07-03

Link local address

Link local address协议,是zeroconfig协议的组成之一

2011-07-02

基于UC/OS操作系统的UDP网络编程

基于UC/OS操作系统的UDP网络编程基于UC/OS操作系统的UDP网络编程

2011-03-02

以太网RTL8019AS数据手册

以太网RTL8019AS英文数据手册

2011-02-23

ARM体系结够之间的状态转换代码2

ARM体系结够之间的状态转换代码2ARM体系结够之间的状态转换代码

2011-01-10

ARM体系结够之间的状态转换代码1

ARM体系结够之间的状态转换代码1,ARM体系结够之间的状态转换代码

2011-01-10

getpid()编程getpid()编程getpid()编程getpid()编程

getpid()编程getpid()编程getpid()编程getpid()编程getpid()编程getpid()编程getpid()编程getpid()编程getpid()编程getpid()编程getpid()编程getpid()编程

2010-11-14

exit()编程exit()编程exit()编程exit()编程

exit()编程exit()编程exit()编程exit()编程exit()编程exit()编程

2010-11-14

wait()编程wait()编程wait()编程wait()编程

wait()编程wait()编程wait()编程wait()编程wait()编程

2010-11-14

fork3()编程fork3()编程fork3()编程fork3()编程fork3()编程

fork3()编程fork3()编程fork3()编程fork3()编程fork3()编程fork3()编程fork3()编程

2010-11-14

fork1() 编程fork1() 编程fork1() 编程fork1() 编程

fork1() 编程fork1() 编程fork1() 编程fork1() 编程fork1() 编程fork1() 编程fork1() 编程

2010-11-14

fork()编程fork()编程fork()编程

fork()编程fork()编程fork()编程fork()编程fork()编程fork()编程fork()编程

2010-11-14

空空如也

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

TA关注的人

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