自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(39)
  • 资源 (3)
  • 收藏
  • 关注

转载 耦合

简单地说,软件工程中对象之间的耦合度就是对象之间的依赖性。指导使用和维护对象的主要问题是对象之间的多重依赖性。对象之间的耦合越高,维护成本越高。因此对象的设计应使类和构件之间的耦合最小。有软硬件之间的耦合,还有软件各模块之间的耦合。耦合性是程序结构中各个模块之间相互关联的度量。它取决于各个模块之间的接口的复杂程度、调用模块的方式以及哪些信息通过接口。耦合可以分为以下几种,它

2014-09-22 09:19:57 1046

转载 KISS原则

KISS原则是英语 Keep It Simple, Stupid 的首字母缩略字,也有人称“懒人原则”。KISS原则是指在设计当中应当注重简约的原则。同时这原则亦有应用在商业书信、设计电脑软件、动画、工程上。原文当中有很多其他版本,包括:"Keep It Simple & Stupid"(在西欧文学中最常使用)、"Keep It Sweet & Simple"、"Keep It Short

2014-09-20 09:53:08 953

转载 机制OR策略

Unix/Linux的接口设计有一句通用的格言“提供机制而不是策略”。区别对待机制(mechanism)和策略(policy)是Unix设计中的一大亮点。大部分的编程问题都可以被切割成两个部分:“需要提供什么功能”(机制)和“怎样实现这些功能”(策略)。如果由程序中的独立部分分别负责机制和策略的实现,那么开发软件就更容易,也更容易适应不同的需求。      开源展现在我们面前的是数

2014-09-20 09:38:03 577

转载 ARM中LDR伪指令与LDR加载指令

ARM指令集中,LDR通常都是作加载指令的,但是它也可以作伪指令。LDR伪指令的形式是“LDR Rn,=expr”。下面举一个例子来说明它的用法。COUNT EQU       0x40003100……LDR       R1,=COUNTMOV      R0,#0STR       R0,[R1]COUNT是我们定义的一个变量,地址为0x

2014-09-14 17:28:41 455

转载 启动代码和Bootloader的区别和关系介绍

注意:很多初学者总是将启动代码和Bootloader联系在一起,这是错误的什么是启动代码?    启动代码是系统上电或者复位后运行的第一段代码,是进入C 语言的main 函数之前需要执行的那段汇编代码。启动代码有何用?    它的作用是在用户程序运行之前对系统硬件及软件环境进行必要的初始化并在最后使程序跳转到用户程序。它直接面对ARM 处理器内核及硬件控制器进行编程

2014-09-13 18:07:29 1305

转载 ARM指令中STM和LDM的理解误区

STM和LDM的主要用途是现场保护、数据复制、参数传递等,其模式有8种,如下:注:前面4种用于数据块的传输,后面4种用于堆栈操作。(1)IA  每次传送后地址加4(2)IB  每次传送前地址加4(3)DA  每次传送后地址减4(4)DB  每次传送前地址减4(5)FD  满递减堆栈(6)FA  满递增堆栈(7)ED  空递

2014-09-13 17:46:33 3291

转载 ARM指令集

ARM指令集 6种类型(53种主要助记符) : 数据处理指令(22种主要助记符) 跳转指令(4种主要助记符) Load/Store指令(16种主要助记符) 程序状态寄存器指令(2种主要助记符) 协处理器指令(5种主要助记符) 软件中断指令 (2种主要助记符) 数据处理指令 数据处理指令大致可分为3类: 数据传送指令; 算术逻辑运算指令; 乘法指令

2014-09-13 17:37:33 450

转载 arm--ldm、stm指令解析

这里比较下容易混淆的四条指令,已经在这4条指令的混淆上花费了很多精力,现在做个小结,LDR,STR,LDM,STM这四条指令,关于LDM和STM的说明,见另外一个说明文件,说明了这两个文件用于栈操作时的注意事项。(1)LDR:L表示LOAD,LOAD的含义应该理解为:Load from memory into register。下面这条语句就说明的很清楚:LDR   R1,  

2014-09-13 17:29:00 678

转载 arm工作模式

从编程的角度看,arm微处理器的工作状态有两种,并可在两种状态之间切换:(1)       arm状态,此时处理器执行32位的字对齐的arm指令(2)       thumb状态,此时处理器执行16位的,半字对齐的thumb指令(为了兼容老芯片)在程序运行的过程中,可以在两种状态之间进行相应的转换。处理器工作状态的转变并不影响处理器的工作模式和相应寄存器中的内容。 存储器格式(

2014-09-08 16:58:07 380

转载 IRQ和FIQ中断的区别

FIQ和IRQ是两种不同类型的中断,ARM为了支持这两种不同的中断,提供了对应的叫做FIQ和IRQ处理器模式(ARM有7种处理模式)。一般的中断控制器里我们可以配置与控制器相连的某个中断输入是FIQ还是IRQ,所以一个中断是可以指定为FIQ或者IRQ的,为了合理,要求系统更快响应,自身处理所耗时间也很短的中断设置为FIQ,否则就设置了IRQ。如果该中断设置为了IRQ,那么当

2014-09-08 16:54:00 900

转载 ARM处理器的程序与数据存储(冯·诺依曼与哈佛结构)

保存在存储器中的内容可以是程序,也可以是数据。程序是ARM处理器可以运行的指令代码,数据是指令在运行中用到的操作数或者变量。1、程序存储ARM处理器支持两种指令,一种是ARM汇编指令,一种是Thumb汇编指令。ARM汇编指令是32位长,即每条ARM汇编指令都是由四个字节的存储空间保存,所以ARM处理器在执行地址a的ARM汇编指令时,会从地址a + 4取下一条指令。Thumb汇编指令是16位

2014-09-08 10:35:18 753

转载 ARM存储器的大小端存储方式

大端格式和小端格式是两种存储字数据的方法。具体讲是在ARM体系的嵌入式系统结构中存储器存放数据的两种叫法,在嵌入式体系结构中将存储器看作是从零地址开始的字节的线性组合。从第0~3字节放置第一个存储的字数据,从第4~7字节放置第二个存储的字数据,依次排序。作为32位的微处理器,ARM体系结构可支持最大寻址4GB(2^32字节)。大端格式是指字数据的高字节放置在地地址中,而低字节数据放置在高地址中。

2014-09-08 10:31:21 4042

转载 S3C2440启动代码分析

;========================================= ; NAME: 2440INIT.S ; DESC: C start up codes ;       Configure memory, ISR ,stacks ;   Initialize C-variables ;       完全注释 ; HISTORY: ; 2002.02.

2014-09-08 09:07:23 602

转载 arm的LDMFD--4种堆栈方式

一开始,看到 STMFD sp!{R0-R5,LR} 这条命令时真是有点疑惑。现根据自己的理解记录一下。供大家分享!我们先要理解一下关于堆栈的相关概念.1,满堆栈:即入栈后堆栈指针sp指向最后一个入栈的元素。也就是sp先减一(加一)再入栈。2,空堆栈:即入栈后堆栈指针指向最后一个入栈元素的下一个元素。也就是先入栈sp再减一(或加一)。1,递增堆栈:即堆栈一开始的地址

2014-09-07 16:16:55 3054

转载 超详细的2440中断机制分析

一直在看2440的中断处理部分,不懂的实在太多了,百度到这篇文章,实在有听君一席话,胜养十年猪的感觉啊,下面上文章:中断向量     b     HandlerIRQ     ;handler for IRQ interrupt很自然,因为所有的单片机都是那样,中断向量一般放在开头,用过单片机的人都会很熟悉,那就不多说了。异常服务程序这里不用中断(inter

2014-09-07 15:56:58 490

转载 NAND flash和NOR flash的区别详解

我们使用的智能手机除了有一个可用的空间(如苹果8G、16G等),还有一个RAM容量,很多人都不是很清楚,为什么需要二个这样的芯片做存储呢,这就是我们下面要讲到的。这二种存储设备我们都统称为“FLASH”,FLASH是一种存储芯片,全名叫Flash EEPROM Memory,通地过程序可以修改数据,即平时所说的“闪存”。Flash又分为NAND flash和NOR flash二种。U盘和MP3里用

2014-09-07 10:05:56 375

转载 NAND Flash和NOR Flash的区别

1. 区别    NOR的特点是芯片内执行(XIP,eXecute In Place),这样应用程序可以直接在flash闪存内运行,不必再把代码读到系统RAM中。优点是可以直接从FLASH中运行程序,但是工艺复杂,价格比较贵,NOR的传输效率很高,在1~4MB的小容量时具有很高的成本效益,但是很低的写入和擦除速度大大影响了它的性能。  NAND结构能提供极高的单元密度,可以达到高存储密

2014-09-07 09:42:45 381

转载 s3c2440启动文件详细分析

启动文件就是引导ARM启动,并进入我们熟悉的C语言程序。它主要完成了ARM最基本的硬件初始化工作。虽然启动文件的内容大同小异(就是设置系统时钟、内存、中断向量表、栈等内容),而且只要有一个现成的启动文件,即使不用详细了解该文件的内容,直接进入C语言编程工作也可以对ARM进行操作,但我认为熟悉启动文件的内容,还是有必要的,它对我们熟悉ARM的体系结构,编写出更高效的程序是大有益处的。因此我花了一些时

2014-09-07 09:02:26 460

转载 SRAM与SDRAM的区别

SDRAM SDRAM(Synchronous Dynamic Random Access Memory)同步动态随机存取存储器,同步是指Memory工作需要步时钟,内部的命令的发送与数据的传输都以它为基准;动态是指存储阵列需要不断的刷新来保证数据不丢失;随机是指数据不是线性依次存储,而是由指定地址进行数据读写。目前的168线64bit带宽内存基本上都采用SDRAM芯片,工作电压3.3V电

2014-09-07 08:44:16 3258

转载 ARM中C和汇编混合编程及示例

在嵌入式系统开发中,目前使用的主要编程语言是C和汇编,C++已经有相应的编译器,但是现在使用还是比较少的。在稍大规模的嵌入式软件中,例如含有OS,大部分的代码都是用C编写的,主要是因为C语言的结构比较好,便于人的理解,而且有大量的支持库。尽管如此,很多地方还是要用到汇编语言,例如开机时硬件系统的初始化,包括CPU状态的设定,中断的使能,主频的设定,以及RAM的控制参数及初始化,一些中断处理方面也可

2014-09-06 15:22:41 483

转载 上拉电阻和下拉电阻

上拉电阻:1、当TTL电路驱动COMS电路时,如果TTL电路输出的高电平低于COMS电路的最低高电平(一般为3.5V),这时就需要在TTL的输出端接上拉电阻,以提高输出高电平的值。2、OC门电路必须加上拉电阻,才能使用。3、为加大输出引脚的驱动能力,有的单片机管脚上也常使用上拉电阻。4、在COMS芯片上,为了防止静电造成损坏,不用的管脚不能悬空,一般接上拉电阻产生降低输入阻抗,提供

2014-09-06 15:21:50 310

转载 arm 流水线和pc值

“然后PC=PC+1”,老师经常这么说。这不完全正确,PC自增一的情况指出现在无流水(non-pipeline)的情况下,这个时候取指,译码,执指都是顺序执行的而在有流水的情况下就比较复杂了这里用arm7和arm9为例。  流水线使用三个阶段,因此指令分为三个阶段执行:1.取指(从存储器装载一条指令);2.译码(识别将要被执行的指令);3.执行(处理指令并将结果写回寄存器)。

2014-09-04 21:05:11 857

转载 诺依曼体系结构、哈佛体系结构与改进型哈佛结构之间的区别

1、冯·诺依曼结构  冯·诺依曼结构又称作普林斯顿体系结构(Princetionarchitecture)。  1945年,冯·诺依曼首先提出了“存储程序”的概念和二进制原理,后来,人们把利用这种概念和原理设计的电子计算机系统统称为“冯·诺依曼型结构”计算机。冯·诺依曼结构的处理器使用同一个存储器,经由同一个总线传输。  冯·诺依曼结构处理器具有以下几个特点:  必须有一个存储器;

2014-09-04 21:03:34 658

转载 ARM9五级流水线

Arm9的流水线分为:

2014-09-04 21:02:04 3406

转载 adr和ldr的区别

同学们在学习ARM指令时,多数都会对adr和ldr这两个命令产生疑惑,那他们究竟有什么区别呢?其实这两个都是伪指令:adr是小范围的地址读取伪指令,ldr是大范围的读取地址伪指令。可实际上adr是将基于PC相对偏移的地址值或基于寄存器相对地址值读取的为指令,而ldr用于加载32为立即数或一个地址到指定的寄存器中。到这儿就会看到其中的区别了。如果在程序中想加载某个函数或者某个在联接时候指定的

2014-09-04 20:11:27 587

转载 汇编cmp比较指令详解

刚刚看到了cmp指令,一开始有点晕。后来上网找了些资料,终于看明白了,为了方便初学者,我就简单写下我的思路吧。高手绕过,谢谢!    cmp(compare)指令进行比较两个操作数的大小例:cmp oprd1,oprd2为第一个操作减去第二个操作数,但不影响第两个操作数的值它影响flag的CF,ZF,OF,AF,PF我们怎么判断大小呢?若执行指令后ZF=1 这个简单

2014-09-04 09:36:14 9590 4

转载 ADS错误(Fatal)L6002U解决方法

ADS编译错误: Fatal L6002U:Could not open file:.....解决办法

2014-09-03 20:28:56 6998

转载 ARM处理器的程序与数据存储(冯·诺依曼与哈佛结构)

保存在存储器中的内容可以是程序,也可以是数据。程序是ARM处理器可以运行的指令代码,数据是指令在运行中用到的操作数或者变量。1、程序存储ARM处理器支持两种指令,一种是ARM汇编指令,一种是Thumb汇编指令。ARM汇编指令是32位长,即每条ARM汇编指令都是由四个字节的存储空间保存,所以ARM处理器在执行地址a的ARM汇编指令时,会从地址a + 4取下一条指令。Thumb汇编指令是16位

2014-09-03 10:27:22 502

转载 ARM处理器寄存器

++++++++++++++++++++++++++++++++++++++++++本文系本站原创,欢迎转载! 转载请注明出处:http://blog.csdn.net/mr_raptor/article/details/6556163++++++++++++++++++++++++++++++++++++++++++1.1.1  ARM处理器不同模式下寄存器CPU的模式不

2014-09-03 09:37:22 358

转载 ARM处理器中“8位位图”

在ARM处理器的汇编语言中,对指令语法格式中的的常数表达式有这样的规定:“该常数必须对应8位位图,即常数是由一个8位的常数循环移位偶数位得到的。”       首先从ARM指令系统的语法格式说起。       一条ARM指令语法格式分为如下几个部分:        {}{S} ,{,}      其中,是指令助记符,是必须的,而{}为指令执行条件,是可选的,如果不写则使用默认条件A

2014-09-03 09:12:16 529

转载 关于const变量的一点理解

无意间看到一题目 是关于const变量的。代如下

2014-09-03 08:43:30 644

转载 UNIX 高手的 20 个习惯

form http://blog.csdn.net/tianlesoftware/archive/2011/01/15/6140900.aspx不良的使用模式会降低您的速度,并且通常会导致意外错误。养成这些好习惯是加强您的 UNIX 命令行技能的积极步骤。 Unix 下要采用的20个好习惯为:1)        在单个命令中创建目录树。2)        更改路径;不要移动存档

2014-09-03 08:37:43 515

转载 gcc 编译过程

详解GCC编译流程    使用vi编写源文件hello.c。  #include int main(){        int i;        for(i=1;i                printf("Hello World %d times!/n",i);        return 0;}     1、预处理阶段    该阶段的作

2014-09-03 08:36:39 466

转载 程序运行时堆区和栈区的分配

本文为转载,由孙晓明老师所编写,放在我的博客里面主要是为了自己学习方便。栈(stack):是自动分配变量,以及函数调用所使用的一些空间(所谓的局部变量),地址由高向低减少; 堆(heap):由malloc,new等分配的空间的地址,地址由低向高增长。 看看下面一段代码: #include  using namespace std;             voi

2014-09-02 15:59:53 567

转载 关于ARM的22个常用概念

1.ARM中一些常见英文缩写解释MSB:最高有效位;LSB:最低有效位;AHB:先进的高性能总线;VPB:连接片内外设功能的VLSI外设总线;EMC:外部存储器控制器;MAM:存储器加速模块;VIC:向量中断控制器;SPI:全双工串行接口;CAN:控制器局域网,一种串行通讯协议;PWM:脉宽调制器;ETM:嵌入式跟踪宏;CPSR:当前程序状态寄存器;

2014-09-02 15:58:58 472

转载 ubuntu下交叉编译环境构建

ubuntu下交叉编译环境构建(arm-linux-gcc-3.4.1.tar.bz2 )下载arm-linux-gcc-3.4.1.tar.bz2到任意的目录下。  arm-linux-gcc-3.4.1.tar.bz2 的下载地址如下:http://static.ishare.down.sina.com.cn/11221358.bz2?ssig=KGapcoGN7R&Exp

2014-09-02 15:57:12 429

转载 静态分配内存和动态分配内存

首先,在使用动态分配内存技术前,必须明白自己在做什么,这样做与其它的方法有什么不同,特别是会产生哪些负面影响,天下没有免费的午餐。动态分配内存与静态分配内存的区别:1) 静态内存分配是在编译时完成的,不需要占用CPU资源;动态分配内存是在运行时完成的,动态内存的分配与释放需要占用CPU资源;2) 静态内存分配是在栈上分配的,动态内存是堆上分配的;3) 动态内存分配需要指针或引用数据

2014-09-02 15:54:41 769

转载 define宏定义和const定义之间的区别

define部分:宏不仅可以用来代替常数值,还可以用来代替表达式,甚至是代码段。(宏的功能很强大,但也容易出错,所以其利弊大小颇有争议。)宏的语法为:#define 宏名称 宏值注意,宏定义不是C或C++严格意义上的语句,所以其行末不用加分号结束。作为一种建议和一种广大程序员共同的习惯,宏名称经常使用全部大写的字母。利用宏的优点:1)让代码更

2014-09-02 15:54:08 707

转载 堆和栈的区别

堆(heap)和栈(stack)的区别一、预备知识—程序的内存分配一个由c/C++编译的程序占用的内存分为以下几个部分1、栈区(stack)—由编译器自动分配释放,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈。2、堆区(heap)—一般由程序员分配释放,若程序员不释放,程序结束时可能由OS回收。注意它与数据结构中的堆是两回事,分配方式倒是类似于链表,呵呵。

2014-09-02 15:50:12 418

verilog_经验

非常好的verilog经验文档,很适合初学者。

2013-03-07

FPGA入门教程

非常详细的FPGA入门教程,很适合初学者。

2013-03-07

空空如也

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

TA关注的人

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