文档库 最新最全的文档下载
当前位置:文档库 › arm入门实验练习

arm入门实验练习

arm入门实验练习
arm入门实验练习

实验二汇编指令实验2

一.实验目的

1:掌握ARM数据处理指令的使用方法。

2:灵活使用第二操作数

二.实验内容:

1:使用MOV MVN指令访问ARM通用寄存器。

2:使用ADD 、SUB、 AND、 ORR、 CMP、 TST等指令完成数据加减运算及逻辑运算。三.实验要求:

1:编译源程序并通过

2:通过单步执行查看相应寄存器中的数据

3:在程序的指令旁边加上相应的注释,并指明当前寄存器中的数据

4:指出3段程序的功能

5:下课上交此报告

源程序:

X EQU 11 ;定义x的值为11

Y EQU 8 ;定义y的值为8

BIT23 EQU (1<<23) ;定义BIT23的值为0x800000

AREA SHIYAN2,CODE,READONLY ;声明代码段SHIYAN2

ENTRY ;标识程序入口

CODE32 ;声明32位ARM 指令

START 例:此段程序实现MOV、ADD指令实现R8=R3=X+Y

MOV R0,#X 例:x R0,R0=11

MOV R1,#Y

ADD R3,R0,R1

MOV R8,R3

功能:此段程序实现MVN,SUB指令实现R5=R0-R8*8=0x5FFFFF60 MVN R0,#0XA0000007 ;R0=0X5FFFFFF8

SUB R5,R0,R8,LSL #3 ; R5=R0-R8*8=0x5FFFFF60

功能:此段程序实现R5=0x5FFFFFFF

MOV R0,#Y ;R0=8

ADD R0,R0,R0,LSL #2; R0=RO+R0*4=0x00000028

MOV R0,R0,LSR #1 ;R0=R0/2=0x00000014

MOV R1,#X ;R1=X=0x0000000B

MOV R1,R1,LSL #1 ;R1=R1*2=0x00000016

CMP R0,R1 ; R0与R1相比较

LDRHI R2,=0XFFFF0000 ;若大于加载=0XFFFF0000到R2

ANDHI R5,R5,R2 ;若大于R2与R5相与后给R5

ORRLS R5,R5,#0X00000000FF;若小于等于 R5与#0X00000000FF相货给R5

功能:

TST R5,#BIT23 ;R5与0x800000相与测试R5的第23位为1,所以Z=0

BICNE R5,R5,#0X00000040 ;若不等 R5和 #0X00000040 相与给R5

B START

END

四.练习:

1:指令MOV R0,#0X12345678是否正确?为什么?不正确,大于八位不能用MOV指令,所以要用LDR

2:蒋参考程序中应用CMP指令的代码,功能改为若(5*Y/2)>(2*X),则R5=R5|0x000000FF,否则R5=R5&0XFFFF0000,程序应如何修改?

MOV R0,#Y

ADD R0,R0,R0,LSL #2

MOV R0,R0,LSR #1

MOV R1,#X

MOV R1,R1,LSL #1

CMP R0,R1

LDRLS R2,=0XFFFF0000

AND R5,R5,R2

ORRHI R5,R5,#0X00000000FF

3:如何实现64位加法运算(R6、R5)=(R6、R5)+(R3、R2)?(提示:使用ADC指令) ADDS R5,R5,R2

ADC R6,R6,R3

实验三

实验三汇编指令实验3

一.实验目的

1:掌握 ARM乘法指令的使用方法。

2:了解子程序编写及调用

二.实验内容:

使用STMFD/LDMFD、MUL指令编写一个整数乘方的子程序,然后使用BL 调用子程序计算Xn 的值。

三.实验要求:

1:编译源程序并通过

2:通过单步执行查看相应寄存器中的数据

3:在程序的指令旁边加上相应的注释,并指明当前寄存器中的数据

源程序:

X EQU 9

n EQU 8

AREA SHIYAN4,CODE,READONLY

ENTRY

CODE32

START LDR SP,=0X40003F00 ;将0X0003F00中的数给寄存器SP LDR R0,=X ;将9给R0

LDR R1,=n ;将8给R1

BL POW ;带链接的跳转到POW

HALT B HALT

;名称:POW

;功能:整数乘方运算

;入口参数:R0 底数;R1 指数

;出口参数:R0 运算结果

;占用资源:R0、R1

;说明:本子程序不考虑溢出问题

POW STMFD SP!,{R1-R12,LR} ;现场保存,将R1--R12和LR寄存器内容入栈 MOVS R2,R1 ;将R1给R2,标志位Z=0

MOVEQ R0,#1 ;当Z=1的时候将1给R0

BEQ POW_END;当Z=0的时候跳转到POW_END

CMP R2,#1 ;R2与1做比较

BEQ POW_END ;若相等,跳转到POW_END

MOV R1,R0 ;R0给R1

SUB R2,R2,#1 ;R2=R2-1

POW_L1 BL DO_MUL ;带链接的跳转到DO_MUL

SUBS R2,R2,#1 ;R2=R2-1,标志位Z变化

BNE POW_L1 ;若Z=0的时候跳转到POW_L1

POW_END LDMFD SP!,{R1-R12,PC};恢复R1--R12和PC寄存器的内容,同时恢复CPSR寄存器的内容

;名称:DO_MUL

;功能:32位乘法

;入口参数:R0 乘数;R1被乘数

;出口参数:R0 运算结果

;占用资源:R0、R1

;说明:本子程序不会破坏R1

DO_MUL MUL R0,R1,R0 ;R0=R1*R0

MOV PC,LR ;

END

四.思考:

1:若需要考虑溢出问题(使用32位运算,判断运算是否溢出),如何修改程序?(提示:使用UMULL指令)。

UMULL R2,R3,R1,R0

2:在程序中,DO_MUL子程序,是否可以使用B、ADD、SUB指令返回?(提示:修改程序进行测试)

(1)POW_L1 BL DO_MUL

POW_SB SUBS R2,R2,#1

BNE POW_L1

POW_END LDMFD SP!,{R1-R12,PC}

DO_MUL MUL R0,R1,R0

B POW_SB

END

(2)POW_L1 BL DO_MUL

SUBS R2,R2,#1

BNE POW_L1

POW_END LDMFD SP!,{R1-R12,PC} DO_MUL MUL R0,R1,R0

SUB PC,PC,#24

END

实验四

实验四汇编指令实验4

一.实验目的

1:掌握冒泡排序算法

2:多重循环程序设计联系

3:加深堆栈保护的用途

二.实验内容:

冒泡排序法,将数组按照从大到小的顺序重新排序。

三.实验要求:

1:编译源程序并通过

2:通过单步执行查看相应寄存器中的数据

3:在程序的指令旁边加上相应的注释,并指明当前寄存器中的数据冒泡排序原理

例:数组个数n=4

5, 3, 4, 1,

第一遍排序

3, 5, 4, 1

3, 5, 4, 1

1, 5, 4, 3 经过第一遍排序,将一个最小数排到第一个位置,后面则不必对它进行比较

第二遍排序

1, 4, 5, 3

1, 3, 5, 4 经过第二遍排序,将一个次小数排到第二个位置,后面则不必对它进行比较

第三遍排序

1, 3, 4, 5 经过第三遍排序,将第三小数排到第三个位置,后面则不必对它进行比较

从以上可以看出,如果数组中数的个数为n,则大循环的次数为n-1

从程序设计上,可以考虑,大循环的循环条件为计数循环,循环次数位n-1,内部循环的循环判定条件为比较的数据的地址,用条件循环来实现。

源程序:

AREA BUF,DATA,READWRITE ARRAY DCD 5,4,3,2,1,6 ;给的数

LEN EQU 4*6 ;数组的长度定义为24

AREA MAOPAO,CODE,READONLY

ENTRY

CODE32

START MOV R4,#5 ;将5给R4

LDR R6,=ARRAY ;加载AREA中的数据 ADD R6,R6,#LEN ;R6地址加24

LDR R0,=ARRAY ;R0指向数据首址

LDR R1,=ARRAY+4 ;R1指向数据第二个地址

LDR SP,=0X40003F00 ;指针变为=0X40003F00

LOOP1 LDR R2,[R0] ;将5给R2

LDR R3,[R1] ;将4给R3

STMFD SP!,{R1} ;现场保存,将R1寄存器内容入栈LOOP2 CMP R2,R3 ;R2与R3做比较

STRHI R3,[R0] ;若大于,将寄存器中的5给R3

STRHI R2,[R1] ;若大于,将4放入R2的内存中

LDR R2,[R0] ;加载内存中数据,将内存中4给寄存器R2

ADD R1,R1,#4 ;R1地址加4

CMP R1,R6 ;R1与R6做比较

LDRCC R3,[R1] ;若小于,将R1对应的内存地址里的数(3)给R3 BCC LOOP2 ;若小于,跳转到LOOP2

LDMFD SP!,{R1} ;恢复现场,将R1寄存器内容出栈

ADD R0,R0,#4 ;R0地址加4

ADD R1,R1,#4 ;R1地址加4

SUBS R4,R4,#1 ;R4减1

BNE LOOP1 ;R4不等于0就跳转到LOOP1

HALT B HALT

END

四.思考

换成从大到小排序,程序如何修改?

只需要将LOOP2中STRHI都换成STRCC STRCC R3,[R0]

STRCC R2,[R1]

实验五

实验五汇编指令实验5

一.实验目的

1:了解如何使用ARM汇编指令实现结构化程序编程

二.实验内容:

使用ARM汇编指令实现IF、FOR、WHILE、DO……while、switch结构

三.实验要求:

1:编译源程序并通过

2:通过单步执行查看相应寄存器中的数据

3:在程序的指令旁边加上相应的注释,并指明当前寄存器中的数据

源程序:

AREA Example6,CODE,READONLY ; 声明代码段Example6

ENTRY ; 标识程序入口

CODE32 ; 声明32位ARM指令

START ; if(x>y) z=100;

; else z=50;

; 设x为R0,y为R1,z为R2 (x、y、z均为无符号整数)

MOV R0,#76 ; 初始化x 的值

MOV R1,#243 ; 初始化y的值

CMP R0,R1 ; 判断x>y?

MOVHI R2,#100 ; x>y条件正确,z=100

MOVLS R2,#50 ; 条件失败,z=50

; for(i=0; i<10; i++)

; { x++;

; }

; 设x为R0,i为R2 (i、x均为无符号整数)

MOV R0,#0 ; 初始化x的值

MOV R2,#0 ; 设置i=0

FOR_L1 CMP R2,#10 ; 判断i<10?

BHS FOR_END ; 若条件失败,退出循环

ADD R0,R0,#1 ; 循环体,x++

ADD R2,R2,#1 ; i++

B FOR_L1

FOR_END NOP

菜鸟学arm之方法入门篇(基于arm7内核)

by:爱雪胡 想必有很多同学都有这样的经历,学过了51单片机之后,想要学习ARM,但又无从下手,关于ARM的学习视频或资料又没有51的那样好理解,结果花了好长时间也不得其法。我也曾是一个初学者,也是从这个过程走过来的,对其中的困难深有感触,闲来无事,把自己的学习过程及心得体会记录成文,希望能对处在纠结中的孩纸有点帮助。ps:我不是大神,本人菜鸟一个,如有疏漏,还望不吝赐教qq:1906723068 首先说一下我用的芯片,是LPC2103,ARM7内核的,相信很多人也用过,ARM9比较高端,目前还没有学完。个人感觉ARM7还是作为单片机使用比较好,不适合用它来跑系统,因为它主频不够高(能提到60多M貌似),我就是把它单纯作为一个32位的单片机来使用的。 ARM7与51的最大区别首先是CPU位数不一样,这个应该好理解一个是32位单片机,一个是8位单片机,性能上当然前者更好点了,速度更快、功耗更小、外设更多,价格差距也越来越小。一般用的51单片机多为STC89C52或其同类产品如图所示:

51的外设一般比较少,以上图为例只有UART,定时器资源,其他功能基本需要另加元件,比如AD芯片、DA芯片、有些功能还只能靠软件模拟,如SPI接口,IIC接口,PWM等,在简单的控制系统中51是非常厉害的,但是在一些复杂控制并且对体积功耗等要求严格的系统中,51就力不从心了,这时ARM7就非常好用了,它速度快,体积小(LPC2103的面积还不到1平方厘米),外设多(集成有2个UART,1个SPI,2个IIC,1个SSP,2个定时器,PWM,AD,RTC等)这样就非常方便好用。 最开始学习ARM我们最希望弄明白的就是怎么去操作它,具体来说就是我买一个学习板,怎么把程序下载到芯片里边并让程序跑起来,这和我们学51时点亮第一盏等的想法是一样的。这就要求知道3点: 1.编程,即使用什么软件去编程序; 2.烧程序,即使用什么烧录程序软件; 3.怎么烧,是用串口ISP下载还是使用JLINK烧录 对这3个问题我一一解答。1.编程序,一般使用IAR或ADS或Keil,如果想很快上手建议使用IAR,不过我用了一段时间之后感觉并不好

嵌入式学习心得体会5篇

嵌入式学习心得体会5篇 嵌入式学习心得体会(一) 首先我声明,我是基于嵌入式系统平台级设计的,硬件这个方向我相对来讲比较有发言权,如果是其它方面所要具备的基本技能还要和我们培训中心其它专业级讲师沟通。他们的方面上我只能说是知道些,但不是太多,初级的问题也可以问我。 对于硬件来讲有几个方向,就单纯信号来分为数字和模拟,模拟比较难搞,一般需要很长的经验积累,单单一个阻值或容值的精度不够就可能使信号偏差很大。因此年轻人搞的较少,随着技术的发展,出现了模拟电路数字化,比如手机的modem 射频模块,都采用成熟的套片,而当年国际上只有两家公司有此技术,自我感觉模拟功能不太强的人,不太适合搞这个,如果真能搞定到手机的射频模块,只要达到一般程度可能月薪都在15k以上。 另一类就是数字部分了,在大方向上又可分为51/arm的单片机类,dsp类,fpga 类,国内fpga的工程师大多是在ic设计公司从事ip核的前端验证,这部分不搞到门级,前途不太明朗,即使做个ic前端验证工程师,也要搞上几年才能胜任。dsp 硬件接口比较定型,如果不向驱动或是算法上靠拢,前途也不会太大。 而arm单片机类的内容就较多,业界产品占用量大,应用人群广,因此就业空间极大,而硬件设计最体现水平和水准的就是接口设计这块,这是各个高级硬件工程师相互pk,判定水平高低的依据。而接口设计这块最关键的是看时序,而不是简单的连接,比如pxa255处理器i2c要求速度在100kbps,如果把一个i2c外围器件,最高还达不到100kbps的与它相接,必然要导致设计的失败。这样的情况有很多,比如51单片机可以在总线接lcd,但为什么这种lcd就不能挂在arm的总线上,还有arm7总线上可以外接个winband的sd卡控制器,但为什么这种控制器接不到arm9或是xscale处理器上,这些都是问题。 因此接口并不是一种简单的连接,要看时序,要看参数。一个优秀的硬件工程师应该能够在没有参考方案的前提下设计出一个在成本和性能上更加优秀的产品,靠现有的方案,也要进行适当的可行性裁剪,但不是胡乱的来,我遇到一个工程师

ARM基础知识(强烈推荐)

ARM基础知识(强烈推荐) ARM基础知识一 ARM处理器共有37个寄存器。其中包括: **31个通用寄存器,包括程序计数器(PC)在内。这些寄存器都是32位寄存器。 **6个状态寄存器。这些寄存器都是32位寄存器。 ARM处理器共有7种不同的处理器模式,每一种模式中都有一组相应的寄存器组。在任何时刻,可见的寄存器包括15个通用寄存器(R0-R14),一个或两个状态寄存器及程序计数器(PC)。在所有的寄存器中,有些是各模式公用一个物理寄存器,有一些寄存器各模式拥有自己独立的物理寄存器。 **************************************************** 通用寄存器 ***************************************************8 通用寄存器分为以下三类:备份寄存器、未备份寄存器、程序计数器PC 未备份寄存器 未备份寄存器包括R0-R7。对于每一个未备份寄存器来说,所有处理器模式下都是使用同一个物理寄存器。未备份寄存器没有被系统用于特别的用途,任何可采用通用寄存器的场合都可以使用未备份寄存器。 备份寄存器 对于R8-R12备份寄存器来说,每个寄存器对应两个不同的物理寄存器。系统为将备份寄存器用于任何的特殊用途,但是当中断处理非常简单,仅仅使用R8-R14寄存器时,FIQ处理程序可以不必执行保存和恢复中断现场的指令,从而可以使中断处理非常迅速。 对于R13,R14备份寄存器来说,每个寄存器对应六个不同的物理寄存器,其中的一个是系统模式和用户模式共用的;另外的五个对应于其他的五种处理器模式。采用下面的记号来区分各个物理寄存器: R13_ 其中MODE可以是下面几种模式之一:usr,svc,abt,und,irq,fiq 程序计数器PC 可以作为一般的通用寄存器使用,但有一些指令在使用R15时有一些限制。由于ARM采用了

ARM嵌入式系统基础教程第二版课后习题答案

第1章嵌入式系统概述 (1)举出3个本书中未提到的嵌入式系统的例子。 答:键盘、鼠标、扫描仪。 (2)什么叫嵌入式系统? 答:嵌入到对象体系中的专用计算机应用系统。 (3)什么叫嵌入式处理器?嵌入式处理器分为哪几类? 答:嵌入式处理器是为完成特殊的应用而设计的特殊目的的处理器。分为3类:1.注重尺寸、能耗和价格;2.关注性能;3.关注全部4个需求——性能、尺寸、能耗和价格。 (4)什么是嵌入式操作系统?为何要使用嵌入式操作系统? 答:嵌入式操作系统是操作系统的一种类型,是在传统操作系统的基础上加入符合嵌入式系统要求的元素发展而来的。原因:1.提高了系统的可靠性;2.提高了开发效率,缩短了开发周期。3.充分发挥了32位CPU的多任务潜力。 第2章ARM7体系结构 1.基础知识 (1)ARM7TDMI中的T、D、M、I的含义是什么? 答:T:高密度16位Thumb指令集扩展;D:支持片上调试;M:64位乘法指令;I:Embedded ICE硬件仿真功能模块。 (2)ARM7TDMI采用几级流水线?使用何种存储器编址方式? 答:3级;冯·诺依曼结构。 (3)ARM处理器模式和ARM处理器状态有何区别? 答:ARM处理器模式体现在不同寄存器的使用上;ARM处理器状态体现在不同指令的使用上。 (4)分别列举ARM的处理器模式和状态? 答:ARM的处理器模式:用户模式、系统模式、管理模式、中止模式、未定义模式、中断模式、快速模式;ARM的处理器状态:ARM状态、Thumb状态。 (5)PC和LR分别使用哪个寄存器? 答:PC:R15;LR:R14。 (6)R13寄存器的通用功能是什么? 答:堆栈指针SP。 (7)CPSR寄存器中哪些位用来定义处理器状态?

ARM学习心得etc

ARM 学习心得 一、通用I/O口设置: 1、使用PINSELx定义端口作为通用I/O功能, 每个引脚可能有4 个功能, 因此需要用2位来确定其功能 2、设置SCS寄存器第0位为1, 使其作为快速I/O端口 3、使用PINMODEx定义端口的模式, 分为上拉, 下拉, 浮空, 因 此需要用2位来确定其模式 4、使用FIOxDIR来确定端口方向 5、使用FIOxMASK与FIOxCLR, FIOxSET, FIOxPIN联合来设置端 口的值 6、由于通用I/O一般情况下方向是确定的, 通常或者为输入, 或者为输出, 要模拟数据总线, 必须在需要的时候, 随时 改变端口的方向, 可使用FIOxDIR寄存器完成此项工作 7、除EXTINT0-EXTINT3外,端口0和端口2均可以作为外部 中断源,它们共用EXTINT3这个外部中断。 8、根据实际情况合理选用。主要对上电时的初始值。上拉或 下拉都是弱的,有时也用外部分电阻上/下拉。对于输入, 上拉表示通用端口所连接的外部信号不存在时, 端口值 为1, 下拉为0。对于输出,如果没有更改时,上拉输出 为高(1), 下拉输出为低(0)。FIOxPIN总是可以读出端口的 状态。FIOxPIN对非通用I/O端口也可读出其状态。 9、对于内置(片上)外设, 如UART, CAN, SPI等:使用PINSELx定

义端口作为特定外设。通常情况作为外设的引脚的方向是 确定的,如果可能,还会自动改变方向。大多情况下,无 须设置上拉或下拉模。设置外设的参数,如果需要的话, 安装中断服务程序外设上电(有些外设默认是上电的,有些 不是)启动外设 二、以太网模块心得 实例1: 以微处理器LPC2368为核心、DP83848C为以太网物理层 接口芯片,介绍嵌入式以太网接口的实现方法。 以太网接口电路主要由MAC控制器和物理层接口 (Physical Layer,PHY)两大部分构成。LPC2368内嵌一个 以太网控制器,支持精简的媒体独立接口(Reduced Media Independent Interface,RMII)和带缓冲DMA接口(Buffered DMA Interface,BDI),可在半双工和全双工模式下提供 10M/100Mbps的以太网接入。因此,LPC2368内部实际上 己经包含了以太网MAC控制,但并未提供物理层接口,所 以,需要外接一片物理层芯片以提供以太网的接入通道。 在这里选用National Semiconductor公司的DP83848C作为 以太网物理层接口芯片,它提供了包括MII/RMII/SNI接口, 可以很方便地与LPC2368连接。 DP83848C是一个10/100Mb/s单端低功耗物理层器件,有 几种智能降功耗模式,包括有25MHz时钟输出,很容易通过

arm嵌入式linux安装课程设计心得

arm嵌入式linux安装课程设计心得 篇一:116709047陈俊松嵌入式Linux课程设计 福建农林大学金山学院电子信息类课程设计 课程名称:设计题目:姓名: 系: 专业:年级:学号:指导教师:职称: 嵌入式linux应用开发课程设计嵌入式linux Web服务器的设计 陈俊松信息与机电工程系电子信息工程2011级116709047 朱仕浪讲师 2014年11 月24 日 福建农林大学金山学院电子信息类 课程设计结果评定 目录 设计的目的

-------------------------------------------------------- 1 设计要求---------------------------------------------------------- 1 主要仪器设备(软硬件环境)---------------------------------------- 1 设计内容---------------------------------------------------------- 1 设计原理---------------------------------------------------- 1 总体方案设计------------------------------------------------- 3 程序设计---------------------------------------------------- 3 程序的调试和运行结果---------------------------------------- 7 总结-------------------------------------------------------------- 8 参考文献---------------------------------------------------------- 9 嵌入式linux Web服务器的设计 1. 设计的目的

ARM指令大全

目录 一、跳转指令 (4) 1、B指令 (4) 2、BL指令 (4) 3、BLX指令 (4) 4、BX指令 (5) 二、数据处理指令 (5) 1、MOV指令 (5) 2、MVN指令 (5) 3、CMP指令 (6) 4、CMN指令 (6) 5、TST指令 (6) 6、TEQ指令 (7) 7、ADD指令 (7) 8、ADC指令 (7) 9、SUB指令 (7) 10、~~~~C指令 (8) 11、R~~~~指令 (8) 12、RSC指令 (8) 13、AND指令 (9) 14、ORR指令 (9) 15、EOR指令 (9) 16、BIC指令 (9) 三、法指令与乘加指令 (10) 1、MUL指令 (10) 2、MLA指令 (10) 3、SMULL指令 (10) 4、SMLAL指令 (11) 5、UMULL指令 (11) 6、UMLAL指令 (11) 四、程序状态寄存器访问指令 (12) 1、MRS指令 (12) 2、MSR指令 (12) 五、加载/存储指令 (12) 1、LDR指令 (12) 2、LDRB指令 (13) 3、LDRH指令 (14) 4、STR指令 (14) 5、STRB指令 (14) 6、STRH指令 (15) 六、批量数据加载/存储指令 (15) LDM(或STM)指令 (15)

IA (15) IB (15) DA (15) DB (15) FD (15) ED (15) FA (15) EA (15) 七、数据交换指令 (16) 1、SWP指令 (16) 2、SWPB指令 (16) 八、移位指令(操作) (16) 1、LSL(或ASL) (17) 2、LSR (17) 3、ASR (17) 4、ROR (17) 5、RRX (17) 九、协处理器指令 (18) 1、CDP指令 (18) 2、LDC指令 (18) 3、STC指令 (18) 4、MCR指令 (19) 5、MRC指令 (19) 十、异常产生指令 (19) 1、SWI指令 (19) 2、BKPT指令 (20) 一、符号定义(Symbol Definition)伪指令 (20) 1、GBLA、GBLL和GBLS (20) 2、LCLA、LCLL和LCLS (21) 3、SETA、SETL和SETS (22) 4、RLIST (22) 二、数据定义(Data Definition)伪指令 (23) 1、DCB (23) 2、DCW(或DCWU) (23) 3、DCD(或DCDU) (24) 4、DCFD(或DCFDU) (24) 5、DCFS(或DCFSU) (25) 6、DCQ(或DCQU) (25) 7、SPACE (25) 8、MAP (26) 9、FILED (26) 三、汇编控制(Assembly Control)伪指令 (27) 1、IF、ELSE、ENDIF (27) 2、WHILE、WEND (28)

关于ARMloader的一些心得.

关于ARM loader的一些心得 最近的项目里需要用KS8695这块MPU,它是ARM922T内核的,有cache,也有MMU,RAM和ROM需要外扩,最大都支持到64M,足以跑起一个完整功能的linux核.虽然这MPU主频最高只有166Mhz,相比三星的S3C2410等性能不是很强,但有内置的硬件WAN口和LAN口,构建网络路由器非常方便. 考虑到各种原因,最主要是实时性响应和速度响应的原因,决定不上linux操作系统,当作普通单片机以单一任务不断循环的方式实现,这就涉及到了loader的问题.由于专用于网络,普及率不大,这块MPU的网上资料不多,随开发板赠送的loader是uboot,uboot 是引导linux内核的,功能多,但要在linux环境下编译和调试,比较麻烦.我习惯用的工具是ADS,因此决定用ADS的汇编实现一个简单功能的loader(以下提到的代码语法全部是针对ADS环境的,而且仅是KS8695这块芯片,对于Keil for ARM或GCC环境或其他ARM芯片需要做别的考虑,但可以参考下面的作法和思路). 玩ARM的朋友,少不免要接触loader,但因为loader涉及到很多跟硬件有关的很抽象的东西,看起来比较复杂和难理解。希望下面说的这些能帮助有兴趣的朋友更好理解。 下面由简单到复杂来说说这个loader。 先想想,这个loader该有哪些功能呢?很明显,最重要的是,它必须最后能调用C语言里的Main函数,因为我不想整个项目都用汇编写,毕竟我不是自虐狂.而很明显,如果你要调用函数,必须进行入栈,出栈这些保护现场的工作,否则程序就会乱套.那保护现场工作需要什么?当然就是需要RAM来保存现场.对于KS8695,它没有内置可随意使用的RAM(实际上,它有特殊的小容量的RAM,但那是给网卡这些做硬件数据缓冲,用户是不能随意调用的,顺便提一下,ARM芯片很多,不同的厂家有不同的硬件配置,譬如很多低端应用的ARM芯片其实有内置的SRAM,譬如菲利浦的LPC系列),因此,就得使用外扩的RAM了.开发板上用的是 SDRAM,SDRAM的本身的特性决定,需要定时刷新的支持,KS8695有内置的SDRAM控制器,只要往某个专用的寄存器写入一些与硬件参数有关的数值,该SDRAM控制器就能自动产生各种读写SDRAM的时序信号来驱动SDRAM。然后用户程序只需用str和ldr指令就能读写SDRAM的内容. OK,现在有点头绪了,loader至少要完成这两个功能: 只要这两部做完,其实就可以调用C里的main函数,然后由main函数再调用各种功能的子函数,以后就爱咋滴就咋滴了. 咋一看,似乎这两步做完,就天下太平了,真的就这么简单吗? 未必,别忘了,几乎所有的CPU都带有中断触发机制.一个稍能完成点实用功能的项目,你想完全避开中断处理这一部分是完全不可能的,也不现实,你必须按你的需要来编写各种各样的中断服务程序,处理各种各样的中断触发(至于中断触发对CPU来说是必需的吗?中断有什么好处?中断时CPU的硬件会做什么动作?...这些就不想罗嗦,有兴趣的可以参考51系列的中断原理作为入门理解).编写中断服务程序,可以在C语言里实现,不要在loader里实现,loader里要实现的,是要建立中断向量表.中断向量表是一个有点专业的名词,请自行查入门资料. 这里说说为什么要建立中断向量表.在51单片机里,是不用自己建立中断向量表的,这是因为标准51核的中断,本身就是一个向量中断(自行查资料),自身硬件里就已经有内置的中断向量表,没必要自己去建立.就是说,当某个中断触发时,51核的硬件会自动把PC置成相应的固定的地址入口来执行相应的中断处理程序,不同的中断触发时,会有不同的地址入口,一一对应,俗称向量中断.但

嵌入式系统学习心得

嵌入式系统学习心得 首先我声明,我是基于嵌入式系统平台级设计的,硬件这个方向我相对来讲比较有发言权,如果是其它方面所要具备的基本技能还要和我们培训中心其它专业级讲师沟通。他们的方面上我只能说是知道些,但不是太多,初级的问题也可以问我。 对于硬件来讲有几个方向,就单纯信号来分为数字和模拟,模拟比较难搞,一般需要很长的经验积累,单单一个阻值或容值的精度不够就可能使信号偏差很大。因此年轻人搞的较少,随着技术的发展,出现了模拟电路数字化,比如手机的modem射频模块,都采用成熟的套片,而当年国际上只有两家公司有此技术,自我感觉模拟功能不太强的人,不太适合搞这个,如果真能搞定到手机的射频模块,只要达到一般程度可能月薪都在15k以上。 另一类就是数字部分了,在大方向上又可分为51/arm的单片机类,dsp类,fpga类,国内fpga的工程师大多是在ic设计公司从事ip核的前端验证,这部分不搞到门级,前途不太明朗,即使做个ic前端验证工程师,也要搞上几年才能胜任。dsp硬件接口比较定型,如果不向驱动或是算法上靠拢,前途也不会太大。而arm 单片机类的内容就较多,业界产品占用量大,应用人群广,因此就业空间极大,而硬件设计最体现水平和水准的就是接口设计这块,这是各个高级硬件工程师相互pk,判定水平高低的依据。而接口设计这块最关键的是看时序,而不是简单的连接,比如pxa255处理器

i2c要求速度在100kbps,如果把一个i2c外围器件,最高还达不到100kbps的与它相接,必然要导致设计的失败。这样的情况有很多,比如51单片机可以在总线接lcd,但为什么这种lcd就不能挂在arm的总线上,还有arm7总线上可以外接个winband的sd卡控制器,但为什么这种控制器接不到arm9或是xscale处理器上,这些都是问题。因此接口并不是一种简单的连接,要看时序,要看参数。一个优秀的硬件工程师应该能够在没有参考方案的前提下设计出一个在成本和性能上更加优秀的产品,靠现有的方案,也要进行适当的可行性裁剪,但不是胡乱的来,我遇到一个工程师把方案中的5v变1.8v的dc芯片,直接更换成ldo,有时就会把cpu烧上几个。前几天还有人希望我帮忙把他们以前基于pxa255平台的手持gps设备做下程序优化,我问了一下情况,地图是存在sd卡中的,而sd卡与pxa255的mmc控制器间采用的spi接口,因此导致地图读取速度十分的慢,这种情况是设计中严重的缺陷,而不是程序的问题,因此我提了几条建议,让他们更新试下再说。因此想成为一个优秀的工程师,需要对系统整体性的把握和对已有电路的理解,换句话说,给你一套电路图你终究能看明白多少,看不明白80%以上的话,说明你离优秀的工程师还差得远哪。其次是电路的调试能力和审图能力,但最最基本的能力还是原理图设计pcb绘制,逻辑设计这块。这是指的硬件设计工程师,从上面的硬件设计工程师中还可以分出ecad工程师,就是专业的画pcb板的工程师,和emc设计工程师,帮人家解决emc的问题。硬件工程师再往上就是板级测试工程师,就是c语功底很好的硬件工程师,在电路板调试过程中

arm入门测试

TQ2440(ARM9)的第一个无OS实验 (2011-03-23 16:14:06) 转载 标签: 分类:AVR_ARM 内存 led 2440 流水灯 it #include"2440addr.h" //包含2440相关寄存器的设置 //四个LED对应GPB5.6.7.8 #define LED1 5 #define LED2 6 #define LED3 7 #define LED4 8 #define Bit(x) (1<

* 功能:测试流水灯功能 * 入口参数:无 * 出口参数:无 void Main(void) { int i; rGPBCON=(Output(LED1)|Output(LED2)|Output(LED3)|Output(LED4)); //设置四个LED为输出 while(1) { for(i=LED1;i<=LED4;i++) { rGPBDAT=~Bit(i); Delay(); } } } 此后,可以直接下载至内存中执行,不过掉电后丢失;或者下载到NANDFlash 中,上电后,s3c2440自动copyNANDFlsh前4K的代码到内存中,并从内存起始地址0x30000000开始执行程序。 利用ARM外部中断控制流水灯的闪烁速度(基于LPC2134) (2011-03-13 14:52:57) 转载 分类:AVR_ARM 标签: 外部中断 流水灯 arm lpc it #include "config.h" void __irq Eint0_IRQ(void); //INT0中断函数声明 void delay(int dly); //delay延时函数声明

嵌入式学习心得

嵌入式学习心得 如何学习嵌入式系统(基于ARM平台) 前言 网上看到众多网友都问了关于嵌入式系统方面的很多问题,很多都可在这里找到答案,希望我的这篇文章能给他们以启发。也请大家不要轻易转载。 一、嵌入式系统的概念 着重理解“嵌入”的概念 主要从三个方面上来理解。 1、从硬件上,将基于CPU的处围器件,整合到CPU芯片内部,比如早期基于X86体系结构下的计算机,CPU只是有运算器和累加器的功能,一切芯片要造外部桥路来扩展实现,象串口之类的都是靠外部的16C550/2的串口控制器芯片实现,而目前的这种串口控制器芯片早已集成到CPU内部,还有PC 机有显卡,而多数嵌入式处理器都带有LCD控制器,但其种意义上就相当于显卡。比较高端的ARM类Intel Xscale架构下的IXP网络处理器CPU内部集成PCI控制器(可配成支持4个PCI从设备或配成自身为CPI从设备);还集成3个NPE网络处理器引擎,其中两个对应于两个MAC地址,可用于网关交换用,而另外一个NPE网络处理器引擎支持DSL,只要外面再加个PHY芯片即可以实现DSL上网功能。IXP系列最高主频可以达到1.8G,支持2G内存,1G×10或10G×1的以太网口或Febre channel的光通道。IXP系列应该是目标基于ARM体系统结构下由intel进行整合后成Xscale内核的最高的处理器了。 2、从软件上前,就是在定制操作系统内核里将应用一并选入,编译后将内核下载到ROM中。而在定制操作系统内核时所选择的应用程序组件就是完成了软件的“嵌入”,比如WinCE在内核定制时,会有相应选择,其中就是wordpad,PDF,MediaPlay等等选择,如果我们选择了,在CE启动后,就可以在界面中找到这些东西,如果是以前PC上将的windows操作系统,多半的东西都需要我们得新再装。 3、把软件内核或应用文件系统等东西烧到嵌入式系统硬件平台中的ROM中就实现了一个真正的“嵌入”。 以上的定义是我在6、7年前给嵌入式系统下自话侧重于理解型的定义,书上的定义也有很多,但在这个领域范围内,谁都不敢说自己的定义是十分确切的,包括那些专家学者们,历为毕竟嵌入式系统是计算机范畴下的一门综合性学科 二、嵌入式系统的分层与专业的分类。 嵌入式系统分为4层,硬件层、驱动层、操作系统层和应用层。 1、硬件层,是整个嵌入式系统的根本,如果现在单片机及接口这块很熟悉,并且能用C和汇编语言来编程的话,从嵌入式系统的硬件层走起来相对容易,硬件层也是驱动层的基础,一个优秀的驱动工程师是要能够看懂硬件的电路图和自行完成CPLD的逻辑设计的,同时还要对操作系统内核及其调度性相当的熟悉的。但硬件平台是基础,增值还要靠软件。 硬件层比较适合于,电子、通信、自动化、机电一体、信息工程类专业的人来搞,需要掌握的专业基础知识有,单片机原理及接口技术、微机原理及接口技术、C语言。 2、驱动层,这部分比较难,驱动工程师不仅要能看懂电路图还要能对操作系统内核十分的精通,以便其所写的驱动程序在系统调用时,不会独占操作系统时间片,而导至其它任务不能动行,不懂操作系统内核架构和实时调度性,没有良好的驱动编写风格,按大多数书上所说添加的驱动的方式,很多人都能做到,但可能连个初级的驱动工程师的水平都达不到,这样所写的驱动在应用调用时就如同windows 下我们打开一个程序运行后,再打开一个程序时,要不就是中断以前的程序,要不就是等上一会才能运

ARM基础知识详解

复习问题提纲 第一讲基础知识 1.什么是嵌入式系统(IEEE定义和国内普遍认同的定义分别是什么)? IEEE(国际电气和电子工程师协会)对嵌入式系统的定义:“用于控制、监视或者辅助操作机器和设备的装置” 国内普遍认同的嵌入式系统定义为:以应用为中心,以计算机技术为基础,软硬件可裁剪,适应应用系统对功能、可靠性、成本、体积、功耗等严格要求的专用计算机系统。 更简单的讲:就是嵌入到对象体中的专用计算机系统。 三要素:嵌入、专用、计算机 嵌入性:嵌入到对象体系中,有对象环境要求 专用性:软、硬件按对象要求裁减 计算机:实现对象的智能化功能 2.嵌入式系统的特点? 1、专用软、硬件可剪裁可配置; 2、低功耗、高可靠性、高稳定性; 3、软件代码短小精悍; 4、代码可固化; 5、实时性; 6、弱交互性 7、嵌入式系统软件开发通常需要专门的开发工具和开发环境; 8、要求开发、设计人员有较高的技能。 3.嵌入式系统的组成? 嵌入式系统总体上是由硬件和软件组成的,硬件是其基础,软件是其核心和灵魂。 第二讲ARM技术概述(以下指的arm处理器都是指ARM920T) 1.arm处理器是32位架构,它支持的基本数据类有哪3个(提示:字 节、?、?)? (1)Byte:字节,8bit (2)Halfword:半字,16bit(半字必须与2字节边界对齐)(3)word: 字,32bit(字必须与4字节边界对齐) 2.什么是存储大小端模式? 所谓的大端模式,是指高位字节存放在低地址单元中,而低位字节存放在高地址单元中。 所谓的小端模式,是指低位字节存放在低地址单元中,而高位字节存放在高地址单元中。

ARM9入门学习心得分享

ARM9入门学习心得分享 ARM9采用哈佛体系结构,指令和数据分属不同的总线,可以并行处理。在流水线上,ARM7是三级流水线,ARM9是五级流水线。由于结构不同,ARM7的执行效率低于ARM9。平时所说的ARM7、ARM9实际上指的是ARM7TDMI、ARM9TDMI软核,这种处理器软核并不带有MMU和cache,不能够运行诸如linux这样的嵌入式操作系统。而ARM公司对这种架构进行了扩展,所以有了ARM710T、ARM720T、ARM920T、ARM922T等带有MMU和cache的处理器内核。本文首先介绍了ARM9的优势及特点,其次阐述了ARM9要学的内容汇总以及书籍推荐,最后介绍了ARM9入门学习心得。ARM9的优势1)时钟频率的提高 虽然ARM7和ARM9内核架构相同,但ARM7处理器采用3级流水线的冯·诺伊曼结构;,而ARM9采用5级流水线的哈佛结构。增加的流水线设计提高了时钟频率和并行处理能力。5级流水线能够将每一个指令处理分配到5个时钟周期内,在每一个时钟周期内同时有5个指令在执行。在常用的芯片生产工艺下,ARM7一般运行在100MHz左右,而ARM9则至少在200MHz以上。 2)指令周期的改进 指令周期的改进对于处理器性能的提高有很大的帮助。性能提高的幅度依赖于代码执行时指令的重叠,这实际上是程序本身的问题。对于采用最高级的语言,一般来说,性能的提高在30%左右。 3)MMU(内存管理单元) ARM7一般没有MMU(内存管理单元),(ARM720T有MMU)。 ARM9一般是有MMU的,ARM9940T只有MPU ,不是一个完整的MMU。 这一条很重要,MMU单元是大型操作系统必需的硬件支持,如LINUX;WINCE等。这就是说,ARM7一般只能运行小型的实时系统如UCOS-II,eCOS等,而ARM9无此限制,一般的操作系统都可以移植。其实即使ARM720T能支持LINUX;WINCE等系统,也鲜有人用,因为以ARM7的运行速度跑这种大型操作系统,实在有点吃力。再者两者的应用

ARM基础知识资料(强烈推荐)

ARM基础知识(强烈推荐).txt有谁会对着自己的裤裆傻笑。不敢跟他说话却一遍一遍打开他的资料又关上。用了心旳感情,真旳能让人懂得很多事。╮如果有一天,我的签名不再频繁更新,那便证明我过的很好。ARM基础知识(强烈推荐) ARM基础知识一 ARM处理器共有37个寄存器。其中包括: **31个通用寄存器,包括程序计数器(PC)在内。这些寄存器都是32位寄存器。 **6个状态寄存器。这些寄存器都是32位寄存器。 ARM处理器共有7种不同的处理器模式,每一种模式中都有一组相应的寄存器组。在任何时刻,可见的寄存器包括15个通用寄存器(R0-R14),一个或两个状态寄存器及程序计数器(PC)。在所有的寄存器中,有些是各模式公用一个物理寄存器,有一些寄存器各模式拥有自己独立的物理寄存器。 **************************************************** 通用寄存器 ***************************************************8 通用寄存器分为以下三类:备份寄存器、未备份寄存器、程序计数器PC 未备份寄存器 未备份寄存器包括R0-R7。对于每一个未备份寄存器来说,所有处理器模式下都是使用同一个物理寄存器。未备份寄存器没有被系统用于特别的用途,任何可采用通用寄存器的场合都可以使用未备份寄存器。 备份寄存器 对于R8-R12备份寄存器来说,每个寄存器对应两个不同的物理寄存器。系统为将备份寄存器用于任何的特殊用途,但是当中断处理非常简单,仅仅使用R8-R14寄存器时,FIQ处理程序可以不必执行保存和恢复中断现场的指令,从而可以使中断处理非常迅速。 对于R13,R14备份寄存器来说,每个寄存器对应六个不同的物理寄存器,其中的一个是系统模式和用户模式共用的;另外的五个对应于其他的五种处理器模式。采用下面的记号来区分各个物理寄存器: R13_ 其中MODE可以是下面几种模式之一:usr,svc,abt,und,irq,fiq 程序计数器PC

学习arm的心得体会

学习arm的心得体会 篇一:ARM学习心得体会 ARM四天学习心得体会 1.懂得了如何使用IAR的软件使用,使用前要先进行环境的设置,具体见文档IAR使用说明。 2.第一次是学习点亮LED灯,在点亮LED灯中学习到如果要点亮LED灯必须学会调用已经写好的库函数,对系统进行初始化SystemInit();对IO口进行初始化GPIOInit();,还得对GPIO口的设置GPIOSetDir--设置GPIO口为输入为1的IO口,设置完成后就可以对IO口成为输入输出方向,当要点亮LED灯时,要使用到GPIOSetValue();函数,当为确定好某个IO口确定时,后一个为0时可以设置LED灯为点亮了,然后就可以对IO口进行设置了,用法和单片机基本一致,具体可以参考程序《闪灯》。 3.蜂鸣器的鸣响很简单,就是首先对蜂鸣器的IO端口进行设定以驱动蜂鸣器,GPIOSetDir( PORT3, 3, 1 ); 当蜂鸣器需要鸣响时,直接对PORT3_3端口进行赋值0《GPIOSetValue( PORT3, 3, 0 ); 》不让蜂鸣器鸣响则是(GPIOSetValue( PORT3, 3, 01); )就可以了。 4.串口的使用 串口开始时要初始化出口,并且通过串口打印前会把数据存在数据缓存区里面,如果我们需要通过输入值来控制

ARM板子的功能时,可以读取缓存区(UARTBuffer[UARTCount-1])的内容(缓存区的内的数据都是字符型数据【char】)然后就可以通过输入的值来处理,可以用中断方式,也可以用查询方式,可参考串口中断程序 5.中断的使用 使用中断时需要初始化中断例如: init_timer32(TEST_TIMER_NUM,TIME_INTERVAL); // 初始化定时器 enable_timer32(TEST_TIMER_NUM); //使能定时器使定时器工作 LPC_SYSCON->SYSAHBCLKCTRL |= (1 1: 图1 定时器的使用操作要先开使能,与定时器的定时方式如图2 图2 6.外部中断 外部中断时要先对外部中断的方式进行设置,是下降沿触发还是上升沿触发方式或其他, 图3 7.步进电机 InitStep();//步进机相关引脚初始化 对了步进电机的引脚初始化后就可以对步进电机的转动方向进行控制了,如图

ARM学习心得体会

ARM四天学习心得体会 1.懂得了如何使用IAR的软件使用,使用前要先进行环境的设置,具体见文档IAR使用说明。 2.第一次是学习点亮LED灯,在点亮LED灯中学习到如果要点亮LED灯必须学会调用已经写好的库函数,对系统进行初始化SystemInit();对IO口进行初始化GPIOInit();,还得对GPIO口的设置GPIOSetDir--设置GPIO口为输入为1的IO口,设置完成后就可以对IO口成为输入输出方向,当要点亮LED灯时,要使用到GPIOSetV alue();函数,当为确定好某个IO口确定时,后一个为0时可以设置LED灯为点亮了,然后就可以对IO口进行设置了,用法和单片机基本一致,具体可以参考程序《闪灯》。 3.蜂鸣器的鸣响很简单,就是首先对蜂鸣器的IO端口进行设定以驱动蜂鸣器,GPIOSetDir( PORT3, 3, 1 ); 当蜂鸣器需要鸣响时,直接对PORT3_3端口进行赋值0《GPIOSetValue( PORT3, 3, 0 ); 》不让蜂鸣器鸣响则是(GPIOSetValue( PORT3, 3, 01); )就可以了。 4.串口的使用 串口开始时要初始化出口,并且通过串口打印前会把数据存在数据缓存区里面,如果我们需要通过输入值来控制ARM板子的功能时,可以读取缓存区(UARTBuffer[UARTCount-1])的内容(缓存区的内的数据都是字符型数据【char】)然后就可以通过输入的值来处理,可以用中断方式,也可以用查询方式,可参考串口中断程序5.中断的使用 使用中断时需要初始化中断例如: init_timer32(TEST_TIMER_NUM,TIME_INTERV AL); // 初始化定时器 enable_timer32(TEST_TIMER_NUM); //使能定时器使定时器工作 LPC_SYSCON->SYSAHBCLKCTRL |= (1<<6); //能AHB时钟,为GPIO提供时钟源通过定时器就可以在定时器内直接操作例如图1: 图1 定时器的使用操作要先开使能,与定时器的定时方式如图2

一个电子工程师机器人ARM学习心得

一个电子工程师的机器人ARM学习心得 我的笔记刚公布就有很多朋友来找我,把我当高手,问我“ARM怎么入门”。我不是高手,仍然是菜鸟。 但是回想起自己当时的迷茫,特意写了这篇东西,当作给和我一样的兄弟姐妹的帮助吧。问这个问题的人多半不是已经工作的工程师,而是和我一样是学生,所以这篇笔记就把看家当成我一样的菜鸟,高手勿怪。 首先声明:本人还没有找工作,事实上处于研究生刚毕业,还没开始找工作的空闲时间,44B0只是兴趣所在,打发时间。 所有看法完全是自己的感受,不代表任何他人。错了的观点各位帮我纠正。 再次补充:很多朋友看了上面的话就问我为什么研究生毕业了还不找工作:)说是打发时间,其实是因为研究生的时候带了一个项目,申请提前毕业以后项目还有块尾巴,答应导师把项目做完再走:)就这么简单。男人总点负点责,呵呵 以下问题常被问到,我就想到哪说到哪吧。 一首先说说ARM的发展 可以用一片大好来形容,翻开各个公司的网站,招聘里面嵌入式占据了大半工程师职位。广义的嵌入式无非几种:传统的什么51、A VR、PIC称做嵌入式微控制器;ARM是嵌入式微处理器;DSP;FPGA。 客观的讲,工作需求量上DSP的需求比ARM要多,而ARM和FPGA差不多。 DSP因为数字处理与通信领域的空前发展而火暴,小到MP3 射象头,大到我们军品里的控制器,应用面很广。 FPGA的兄弟一般做ANSIC(特殊芯片设计,好象是这么翻译的)。 而ARM单纯说来并不比一个单片机强多少,但是它的独特就在于不断下降的价格和提升的性能。这完全依靠于ARM公司的战略,厉害!!很佩服他们的战略眼光!! 值得注意的是:在找工作中,企业(著名的,小的不算)对单纯的ARM硬件开发工程师并不比单片机重视,很少有大企业的职位里写“从事过ARM开发优先”。 写的多的是什么?“嵌入式LINUX” 到这相信大家看出来了吧,需要的是硬件中的软件。 二ARM是硬件还是软件 很难说,ARM是硬件,LINUX是软件。 ARM的硬件多半已经模块化了,像我这样把板子改成这样的就算动的多的了,这同样是ARM公司的战略,再次佩服。 实际中的LINUX的开发工作更多,更耗时。从这方面说ARM应该算是软件了。 在找工作中更是这样,举个例子,联想里和ARM最接近的是“BIOS工程师”是软件,MOTO 里接近的是嵌入式LINUX工程师是软件。而其他很多公司把嵌入式产品开发归为硬件。 所以,不要讨论这个,好好玩转自己的板子才是关键。实在不爽你就把自己叫“嵌入式开发工程师” 三要不要买开发板买哪家

ARM入门最好的文章,适合菜鸟.

我自己在学arm7,不小心在网上看到这篇文章,内容如题,自我感觉他写的不错,因此帖上来供菜鸟们参考,高手就不用看了 该文章作者不详,我在此只转载未做任何修改: 1.抓住51开发ARM 这几个月来我一直都爬在51的问题,自己都有一点笑自己了,用了4个月的时间,来巩固51的原理和程序,还好我自己算是走过来了,自己笨,身边的高才生又看不上51的原理,他们都比较“牛”,说51过时了,你问那个做什么???我比较郁闷!过时吗?我有一点怀疑? 他们不愿意说有他们自己的理由,没有人强求,靠自己好了。 我自己个人的观点:51是一个基础,而且还很重要,这是再我看了ARM之后感觉到的。它可以加速你的ARM学习速度,真得!不相信你试一试好了。 凡是要求一个速度、效率,不要做一些无用功,抓紧身边的每一个一分钟,人是活的,东西(知识、书)是死得,想要做的事情因此就简单了。 2.我在网上看到了一篇很不错的ARM文章,粘贴过来,为了和像我一样在很少有人帮助的情况下,自学ARM 的难兄难弟们。 “ARM怎么入门”。我不是高手,仍然是菜鸟。 但是回想起自己当时的迷茫,特意写了这篇东西,当作给和我一样的兄弟姐妹的帮助吧。问这个问题的人多半不是已经工作的工程师,而是和我一样是学生,所以这篇笔记就把看家当成我一样的菜鸟,高手勿怪。 首先声明:本人还没有找工作,事实上处于研究生刚毕业,还没开始找工作的空闲时间,44B0只是兴趣所在,打发时间。 所有看法完全是自己的感受,不代表任何他人。错了的观点各位帮我纠正。再次补充:很多朋友看了上面的话就问我为什么研究生毕业了还不找工作:)说是打发时间,其实是因为研究生的时候带了一个项目,申请提前毕业以后项目还有块尾巴,答应导师把项目做完再走:)就这么简单。男人总点负点责,呵呵 以下问题常被问到,我就想到哪说到哪吧。 一首先说说ARM的发展 可以用一片大好来形容,翻开各个公司的网站,招聘里面嵌入式占据了大半工程师职位。 广义的嵌入式无非几种:传统的什么51、AVR、PIC称做嵌入式微控制器;ARM是嵌入式微处理器;DSP;FPGA。 客观的讲,工作需求量上DSP的需求比ARM要多,而ARM和FPGA差不多。DSP因为数字处理与通信领域的空前发展而火暴,小到MP3 射象头,大到我们军品里的控制器,应用面很广。

相关文档
相关文档 最新文档