自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(37)
  • 收藏
  • 关注

原创 窥探 kernel --- 分层方法讨论linux文件系统

文件系统是对一个存储设备上的数据和元数据进行组织的机制。 Linux 文件系统接口实现为分层的体系结构,从而将用户接口层、文件系统实现和操作存储设备的驱动程序分隔开。另一种看待文件系统的方式是把它看作一个协议。网络协议(比如 IP)规定了互联网上传输的数据流的意义,同样,文件系统会给出特定存储媒体上数据的意义。Linux 文件系统体系结构是一个对复杂系统进行抽象化的有趣例子。通过使用一

2013-06-26 22:28:58 657

原创 窥探 kernel --- 几个linux学习资源分享

内核常用文档:README:该文件介绍了linux的背景及发展。怎样编译和配置内核。出现问题怎样解决等。Documentation/Changes:编译和使用内核的最小软件包。Documentation/CodingStyle:指定内核编码风格。Documentation/SubmittingPatches,指出了提交补丁的过程和方法Documentation/Submitti

2013-06-26 22:26:42 491

原创 C语言趣味题目

C语言趣味题目第一题:#include static jmp_buf buf;int main(void){volatile int b = 3;if (setjmp(buf) != 0){printf(“%d\n”, b);exit(0);}b = 5;longjmp(buf, 1);}输出结果为A)3 B)5 C)

2013-06-26 22:21:57 2478

原创 ARM、DSP、FPGA的技术特点和区别

ARM、DSP、FPGA的技术特点和区别  在嵌入式开发领域,ARM是一款非常受欢迎的微处理器,其市场覆盖率极高,DSP和FPGA则是作为嵌入式开发的协处理器,协助微处理器更好的实现产品功能。那三者的技术特点以及区别是什么呢?下文就此问题略做了总结。ARM(Advanced RISC Machines)是微处理器行业的一家知名企业,设计了大量高性能、廉价、耗能低的RISC处理器、相

2013-06-26 22:18:06 653

转载 老板主动为你升职的7个超强法则

老板主动为你升职的7个超强法则 如果你想快速升职,除了努力工作外,还要懂得聪明的工作,善于经营个人品牌。以下是7个职场黄金法则,让老板主动为你升职加薪。被奉为“职场宝典”的《杜拉拉升职记》一火再火。有人说,杜拉拉,是比比尔?盖茨更值得参考的职场偶像!她没有背景,条件也不出众。却通过自己的不断揣摩、学习,从小助理一步一步做到了高管。你呢?是否仍在默默努力却好像升职无望?看到别人升

2013-06-26 22:15:06 1015

转载 UART0串口编程系列(五)

一.串口接收数据在UC/OS设计中应注意的问题1. 串口通信的数据接收过程:1> UART 接收FIFO接收到预定字节后触发中断2> ISR读取接收到的内容并保存3> 经过一次或若干次ISR完成一个通信帧的接收(拼装通信帧)4> 处理和解释通信内容5> 根据处理结果触发其他任务2. 串口数据接收程序设计时,应该考虑的问题:1>即使以上的操作过程很简单,也最好不要把它

2013-05-26 22:52:16 677

转载 UART0串口编程系列(四)

串口编程(UART0)之UC/OS(一)  一.在UC/OS中设计串口程序所要考虑的问题1. 串口通信数据以帧为单位进行处理,如果需要接收大量数据,则帧缓冲区规模必然很大;如果需要发送大量数据,则可将原始数据快看作缓冲区,不需要另外再创建帧缓冲区。2. 帧缓冲区是全局数据结构,通常为共享资源,需要考虑互斥访问问题(如在任务中关中断)。但是此时系统的效率就会下降。我们可以通过合理设计

2013-05-26 22:46:38 676

转载 UART0串口编程系列(三)

UART0串口编程之在UC/OS—II中遭遇的危机一.潜在的危机1.在uc/os操作系统中设计串口编程时,由于ISR和多个任务并发执行,情况比较复杂。尤其是接收状态为被动状态时,只能靠串行口中断来接收数据。2.在进行串行通信时,双方遵循相同的通信协议。由于波特率不变,因此相邻两次串口中断的间隔时间基本固定。3.在以下两种情况时会使接收过程出现错误:Ø 第一种情况是系统关中断的最

2013-05-26 22:43:23 542

转载 UART0串口编程系列(二)

三. 中断方式的串口编程1.用中断方式编写串口程序由那几部分组成2.硬件上的支持1>UART0 发送FIFO缓冲区A. UART0含有1个16字节的发送FIFO缓冲区B. U0THR是UART0发送FIFO的最高字节C. UART的发送FIFO是一直使能的2>UART0接收FIFO缓冲区A. UART0含有一个16字节的接收FIFO缓冲区。B. 软件

2013-05-26 20:24:29 1169

转载 UART0串口编程系列(一)

本文章针对的是ARM2200环境下编写串口程序,其中设计轮循方式,中断方式,以及在UC/OS-II操作系统下的串口编程。使用轮循和中断两种方式来实现串口编程。(当然了,用中断实现串口编程,系统的效率较高。但是难度也较大 。轮循方式效率较低,但是编程比较简单)一. 串口编程的硬件原理1. 串口特性:1>16字节接收FIFO和16字节发送FIFO2>接收FIFO触发点可设置

2013-05-26 20:02:55 1077

转载 串口编程之前奏篇

1. 通信协议设计在进行通信时,每次需要传送的信息一般超过1字节。为此,通信双方必须约定通信数据的排列格式,即通信协议。通常把一次通信过程的全部内容称为一个“通信帧”。通信协议设计就是帧结构设计。在一帧内容中,通常包括以下部分。1> 起始码:由一个或若干个包含特定内容的字节,表示一个通信帧的开始。起始码的内容必须与通信数据内容有明显区别(不能在通信数据里出现与起始码相同的内容)注:

2013-05-26 19:50:57 482

转载 C语言复习之结构体基础知识

一.基础知识1.聚合数据类型(aggregate data type)能够同时存储超过一个的单独数据。C提供了两种类型的聚合数据类型,数组和结构。(1)数组是相同类型的元素的集合,它的每个元素是通过下标引用或指针间接访问来选择的。(2)结构也是一些值的集合,这些值称为它的成员(member),但一个结构的各个成员可能具有不同的类型。2.数组元素可以通过下标访问,这只是因为数组的元素

2013-05-25 21:34:15 1001

转载 ARM的异常中断机制

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

2013-05-25 21:31:13 1095

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

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

2013-05-25 21:29:38 665

原创 ARM中断PC返回值分析

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

2013-05-25 21:27:57 556

原创 ARM之汇编学习---如何编写ARM汇编程序

一.前言1. 看一个程序:AREA TigerJohn,CODE,READONLY;声明代码段CODE32 ;声明为32位ARM指令ENTRY ;声明程序入口START MOV R0 ,#0MOV R1 ,#1ADD R1, R1,R0B STARTEND2. 在ARM汇编程序中用“;”号进行注释。二.汇编语言程序格式一个完整的ARM汇编由两部分组成

2013-05-25 21:26:09 852

原创 ARM汇编之寻址方式

ARM7处理器有两个指令集:32位的ARM指令集,16位的Thumb指令集。1> ARM指令集:效率高,代码密度高2> Thumb指令集:具有较高的代码密度。注:1. 所有的ARM指令集都是有条件执行的,而Thumb指令集仅有一条指令具备条件执行功能。2. ARM程序和Thumb程序可相互调用,相互之间的状态切换开销几乎为零。二. ARM处理器寻址方式寻址方式是指根据指

2013-05-25 21:24:56 667

原创 R14寄存器

1. IRQ中断异常执行过程:1> 执行用户模式下的程序2> 发生IRQ中断,硬件将某个地址存入IRQ模式下的R14_irq寄存器,用户模式下的R14未被破坏。3> IRQ服务程序A执行完毕,将R14_irq寄存器内容减去某个常量后存入PC.4> 返回到原程序的下一条指令处继续执行2. IRQ嵌套执行程序时执行过程:1> 执行用户模式下的程序2> 发生IRQ中断,硬

2013-05-25 21:23:07 1580

原创 ARM汇编之寄存器

在ARM处理器内部共有37个用户可访问的寄存器,分别为31个通用的32位寄存器和6个状态寄存器。一.通用寄存器:1.在汇编语言中,寄存器R0-R13为保存数据或地址值的通用寄存器。2.其中寄存器R0-R7为未分组的寄存器。对于任何处理器模式,它们都共享R0~R7的通用寄存器。3.寄存器R8-R12为两个分组的物理寄存器。a.FIQ拥有自己独立的R8~R12的通用寄存器。

2013-05-25 21:21:37 512

转载 HTTTP协议之POST和GEG区别

一.HTTP请求1. HTTP请求格式:[]在HTTP请求中,第一行必须是一个请求行(request line),用来说明请求类型、要访问的资源以及使用的HTTP版本。紧接着是一个首部(header)小节,用来说明服务器要使用的附加信息。在首部之后是一个空行,再此之后可以添加任意的其他数据[称之为主体(body)]。2. GET与POST区别HTTP 定义了与服务器

2013-05-25 21:18:00 1263

转载 XML你所要知道的那些规范-RFC

本规范说明的XML-RPC协议实现UserLand Frontier 5.1。关于非技术性说明,请访问XML-RPC for Newbies。文档提供了实现XML-RPC所需要的所有信息。前言XML-RPC是一种基于Internet的远程函数调用协议。XML-RPC消息都是HTTP-POST请求。请求的主要部分的XML。服务器端执行后的返回结果同样也是XML格式。函数调用的

2013-05-25 21:16:21 557

转载 DNS报文格式(RFC1035)

一、域名和资源记录的定义1、Name space definitions2、资源记录定义(RR definitions)2.1 格式后面分析报文的时候详细解释。2.2 类型值(TYPE values)类型主要用在资源记录中,注意下面的值是QTYPE的一个子集。类型 值和含义A 1 a host addressNS 2 an authoritative nam

2013-05-25 21:15:06 435

转载 ICMP报文分析

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

2013-05-25 21:13:53 571

转载 物理MAC地址

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

2013-05-25 21:12:41 511

转载 以太网协议帧

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

2013-05-25 21:11:49 647

转载 ARP协议分析

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

2013-05-25 21:10:25 404

转载 C语言中堆和栈的区别

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

2013-05-25 21:05:23 386

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

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

2013-05-25 21:04:08 494

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

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

2013-05-25 21:02:24 396

转载 C语言中volatile关键字的作用

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

2013-05-25 21:01:08 453

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

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

2013-05-25 20:59:03 604

转载 做嵌入式驱动的前途何在

做嵌入式驱动的前途何在做嵌入式linux驱动的前途何在?或者说,怎么才能做好这一行?我做嵌入式驱动开发已经一年多了,感觉没学到多少东西。从网络驱动到CAN驱动、从dataflash驱动到NAND/NOR FLASH驱动、从CF/IDE驱动到各种嵌入式文件系统、从LCD/VGA驱动到音频驱动、从IAR到ADS再到GCC、Ucos到linux、从I2C总线到SPI再

2013-05-06 14:14:33 1715

原创 学c之gcc编译过程及其常用编译选项

学c之gcc编译过程及其常用编译选项上篇文章,知道了,C代码编译后存放在内存中的位置,那么C代码的整个编译过程又是怎样的呢?一条命令gcc hello.c就可以编译成可执行程序a.out,然后./a.out之后就可以执行hello.c这个程序的代码了。下面的文章分析的不错,就整理了下。hello.c:1.   #include2.   int main()3.   {

2013-05-05 14:39:29 750

转载 Linux内存管理

Linux内存管理摘要:本章首先以应用程序开发者的角度审视Linux的进程内存管理,在此基础上逐步深入到内核中讨论系统物理内存管理和内核内存的使用方法。力求从外到内、水到渠成地引导网友分析Linux的内存管理与使用。在本章最后,我们给出一个内存映射的实例,帮助网友们理解内核内存管理与用户内存管理之间的关系,希望大家最终能驾驭Linux内存管理。前言内存管理一向是所有操作系统书籍不惜笔墨

2013-05-05 14:32:30 461

原创 arm堆栈操作

arm堆栈操作arm堆栈的组织结构是 满栈降 的形式,满栈即sp是要停留在最后一个进栈元素,降:就是堆栈的增长方向是从高地址向低地址发展。 arm对于堆栈的操作一般采用 LDMFD(pop)和STMFD (push) 两个命令。以前困惑的就是STMFD 命令 对于操作数 是按照什么顺序压栈的比如:STMFD sp!{R0-R5,LR} 进栈顺序是:高地址(1方式)LRR

2013-05-05 14:24:22 1541

转载 和菜鸟一起学c之函数中堆栈及运行内存情况

和菜鸟一起学c之函数中堆栈及运行内存情况总是听说编译的时候什么堆啊,栈啊之类的。以前学数据结构的时候用过,栈比较常用,像搜索类的算法题都是要用到栈的。还有表达式计算也是。至于堆的话,排序的时候用的比较多。关于这方面,网上已经讲了很多了,下面把我看到比较好的,总结下。一般我们编译的C代码中在内存中分下面几个区:1、栈区(stack):由编译器自动分配释放 ,存放函数的参数值,局部变量的值

2013-05-05 14:20:55 608

原创 理解嵌入式开发中的一些硬件相关的概念

理解嵌入式开发中的一些硬件相关的概念做嵌入式系统开发,经常要接触硬件。做嵌入式开发对数字电路和模拟电路要有一定的了解。这样才能深入的研究下去。下面我们简单的介绍嵌入式开发中的一些硬件相关的概念。电平(Level)在数字电路中,分为高电平和低电平,分别用1和0表示。一个数字电路的管脚,总是存在一个电平的,要么高要么低,或者说要么1要到0(其实,还有另一种状态,后面会提到)。

2013-05-05 14:04:08 2987

空空如也

空空如也

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

TA关注的人

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