ARM入门最好的文章------转载一位资身工程师的入门心得.

合集下载

ARM学习心得

ARM学习心得

ARM学习心得1.ARM是32位精简指令集处理器2.ARM7 3级流水线冯.诺依曼结构3.ARM9 5级流水线哈佛结构4.只有Load/Store指令可以访问存储器5.支持数据cache和指令cache6.处理器模式:(1).用户模式(usr)(2).快速中断模式(fiq)(3).外中断模式(irq)(4).管理模式(svc)(5).中止模式(abt)(6).未定义模式(und)(7).系统模式(sys)7.工作模式:(1).ARM指令集 32位(2).Thumb指令集 16位8.ARM处理器含有37个寄存器,包括31个通用寄存器和6个状态寄存器9.R13(SP-堆栈寄存器)R14(LR-链接寄存器)R15(PC-程序计数寄存器)CPSR(当前程序状态寄存器)SPSR(备份程序状态寄存器)10.小端模式:高地址位存放高数据位,低地址位存放低数据位;大端模式与之相反11.寻找方式:(1).立即数寻找立即数为8位以#开头(2).寄存器寻找(3).寄存器移位寻找(4).寄存器间接寻找(5).基址变址寻找(6).多寄存器寻找(7).相对寻找(8).堆栈寻找12.常用指令解析:(1).MOV MOV Rd,operand2 只适用于寄存器与寄存器或寄存器与立即数之间(2).MOVS 影响CPSR中的标志位(3).MVN MVN Rd,operand2 数据取反传送(4).LSL LSL n 逻辑左移(5).LSR LSR n 逻辑右移(6).ASL ASL n 算数左移相当于乘2(7).ASR ASR n 算数右移相当于除2(8).ROR ROR n 循环右移(9).RRX RRX n 带扩展的循环右移(10).ADD ADD Rd,Rn,operand2 加法(11).ADC ADC Rd,Rn,operand2 Rd=Rn+operand2+c 带进位的加法加上CPRS的C位(12).SUB SUB Rd,Rn,operand2 减法(13).SBC SBC Rd,Rn,operand2 Rd=Rn-operand2+c-1 带进位的减法(14).RSB RSB Rd,Rn,operand2 Rd=operand2-Rn 逆向减法(15).RSC RSC Rd,Rn,operand2 Rd=operand2-Rn+c-1 带进位的逆向减法(16).AND AND Rd,Rn,operand2 Rd=Rn and operand2 逻辑与(17).ORR ORR Rd,Rn,operand2 Rd=Rn or operand2 逻辑或(18).EOR EOR Rd,Rn,operand2 Rd=Rn xor operand2 逻辑异或(19).BIC BIC Rd,Rn,operand2 Rd=Rn and not operand2 位清零(20).CMP CMP Rd,operand2 比较,影响CPSR标志位(21).CMN CMN Rd,operand2 负数比较,影响CPSR标志位(22).TST TST Rd,operand2 位测试,影响CPSR标志位(23).TEQ TEQ Rd,operand2 相等测试,影响CPSR标志位(24).MUL MUL Rd,Rn,operand2 乘法 32位(25).MLA MLA Rd,Rn,Rm,operand2 Rd=Rn*Rm+operand2 乘加 32位(26).UMULL UMULL Rd,Rn,Rm,operand2 Rd=[Rm*operand2](0-31) Rn=[Rm*operand2](32,63) 64位无符号乘法(27).SMULL SMULL ... 64位有符号乘法(28).UMLAL UMLAL Rd,Rn,Rm,operand2 Rd=[Rm*operand2](0-31)+Rd Rn=[Rm*operand2](32-63)+Rn 64位无符号乘加(29).SMLAL SUMLAL... 64位有符号乘加(30).LDR LDR Rn,operand2/=start/=0x010201 加载内存数据(31).STR STR Rn,operand2/=start/=0x012010 数据存入内存(32).LDM 从内存中加载多个数据(33).STM 存储多个数据到内存(34).B B Rn 跳转(34).BL 带链接的跳转改变R14(35).BX 带状态切换的跳转(36).BLX 带链接和状态切换的跳转......13.运用于STM和LDM的模式:(1).IA 每次传送后增加地址(2).IB 每次传送前增加地址(3).DA 每次传送后减少地址(4).DB 每次传送前减少地址(5).FD 满递减堆栈STMFD SP!,{R1-R4} ;将R1-R4的数据存放到SP所指的内存中高寄存器放在高地址位,SP自增4当前SP不存放数据(6).ED 空递减堆栈当前SP存放数据(7).FA 满递增堆栈(8).EA 空递增堆栈14.条件标志位:编码扩展表示式标志位影响意义0000 EQ Z置1 等于操作数0001 NE Z清0 不等于操作数0010 CS/HS C置1 进位/无符号数大于或等于操作数0011 CC/LO C清0 无进位/无符号数小于操作数0100 MI N置1 负数0101 PL N清0 正数或00110 VS V置1 溢出0111 VC V清0 无溢出1000 HI C置1且Z清0 无符号数大于操作数1001 LS C清0且Z置1 无符号数小于或等于操作数1010 GE N等于V 有符号数大于或等于操作数1011 LT N不等于V 有符号数小于操作数1100 GT Z清0且N等于V 有符号数大于操作数1101 LE Z置1且N不等于V 有符号数小于或等于操作数1110 AL 任何状态总是,常忽略1111 NV 从不使用 ---15.子程序参数传递规则:当参数不超过4个时用R0-R3来存放返回值存放在R0中,存放顺序:寄存器编号由小到大当参数超过4个时,前面4个参数按上面规则存放,后面的参数按参数传递顺序右后往前依次入栈16.CPSR结构:31 30 29 28 27 ... 7 6 5 4 3 2 1 0N Z C V Q I F TN:Negative 负数标志位N=1:结果为负数N=0:结果为正数或零Z: Zero 零标志位 Z=1:结果为0 Z=0:结果不为0C: Carry 进位标志位 C=1:C=0:... 有四种情况V: oVerflow 溢出标志位 V=1:V=0:... 有两种情况I:IRQ中断使能/失能 I=1:失能IRQ I=0:使能IRQF:FIQ中断使能/失能 F=1:失能FIQ F=0:使能FIQT:状态标志位 T=1:Thumb状态 T=0:ARM状态4-0:工作模式:10000 usr10001 fiq10010 irq10011 svc10111 abt11011 und11111 sys17.ARM工作模式间的切换(1).切换方式:软件切换、硬件切换(2).除usr外其他的都叫特权模式,在特权模式下可以任意切换其他模式(3).在usr模式下只有通过硬件的方法切换到其他工作模式(4).除usr和sys,其他模式都叫异常模式(5).机器上电复位时,处于svc模式18:C语言和ARM汇编混用的几种方法:(1).内联汇编:在C函数中插入汇编语句使用arm或__arm关键字(2).嵌入式汇编:.........。

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

菜鸟学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个问题我一一解答。

ARM初学入门

ARM初学入门

ARM初学入门经过一段时间对arm的学习,在这里跟大家说一些前期的学习经验,另外仅以一个例子说明一下ads的开发过程,因为这也是初学,可能有的地方说的不太好,望大家谅解,另外可以找其它参考资料来学习。

第一部分:arm的早期学习经验个人认为,要想学好arm应该首先对arm的整体框架(包括arm体系结构,arm开发过程,及arm程序框架及执行过程等)有一个了解。

这里这就不多说了,这些东西我也只是刚刚开始学习,还没有很好的掌握,就只说一些个人想法吧。

呵呵,因为时间紧,据说要在一周内完成。

至少你可以用书做一点,但上周之后,最后,哇,我真的疯了。

当我第一次得到这个实验盒时,我认为和NIOS一样,我几乎可以玩更多的演示。

一开始我没想到会遇到大问题。

我在arm实验箱里带了几本教科书和实验说明。

在用实验说明做了几次演示后,我没能做到这一点,因为前两次演示相对简单,只需用汇编语言编写一些关于arm寄存器操作的语句,那些学习过汇编语言的人很快就能理解。

但未来会有所不同,因为我在学习之初不知道ARM项目的框架。

我真的不明白。

为什么44B在整个过程中都有用。

h、 44B。

还有一个44binit的文件吗?前三个很容易理解。

那些玩过MCU的人可以很容易地看到44B H在S3C44B0X中定义了一些寄存器,44blib H和44blib C定义了一些初始化函数,而44binit S?我不明白。

我不能在这里做arm程序。

我必须在互联网上找到信息,看看这个功能是用来做什么的。

事实证明,这是我以前经常听到的“bootloader”或“boot code”或“arm boot program”,这是处理器启动时执行的一段代码,主要任务是初始化处理器模式,设置堆栈,初始化变量等由于上述操作与处理器架构和系统配置密切相关,它们通常是由汇编编写的(对于此内容,您可以查看相关资料)。

所以我花了几天时间研究文件“44binit.S”。

通过对本文档的研究,我学到了很多关于arm编程的知识,并对arm编程的总体框架有了大致的了解。

ARM9入门学习心得分享

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入门该学什么

实用干货高手告诉你ARM入门该学什么
ARM入门阶段通常是最容易让人产生挫败感的时候,并不是因为知识有多幺难以理解,而是因为很多人并不知道从哪方面进行入手。

此时一篇较为系统的入门知识介绍文章就变得很有必要,本文来自于一名经验丰富的电源设计者,将其对新手的入门建议进行了总结,大家快来看一看吧。

 关于基础
 很多人在学习ARM时都在纠结是否需要有51、AVR等基础。

其实这部分知识并非必须,懂一些更好但没有也无所谓。

没有相关基础也无所谓,重要的是找一些参考书,去了解里面的例子和原理图,例程里有汇编有C,都能看懂即可,不用追求能够流利编写。

 需要学习哪些软件
 软件实际上就那幺几种,下面为大家总结一下。

 ADS调试用
 确切的说是ADS+AXD。

ADS里包含AXD。

以前都用SDT,但后来ARM 公司停止对SDT的支持,转而支持ADS,所以还是用ADS比较好。

目前有的人的程序发布的仍然是SDT版本,但基本都可以找到相应ADS的,新人在这里不要发蒙。

ADS是编译器,AXD是调试器。

编译成AXF以后再在ARM的RAM里调试。

 PLASHPGM
 FLASH烧写的软件。

AXD在RAM里调试就不会出现掉电,方便程序修改。

调试好的程序再下到FLASH里上电直接运行。

同类的软件还有很多,比如FLUTED、FLSHP,但FLASHPGM最好。

 BANYANT调试代理。

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

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。

arm开发经验.

arm开发经验.

arm开发经验(连载)发表于2005-11-27 21:51:36前一段时间做了arm的一些开发,主要是编写了arm的启动软件和移植了uCOS-II到arm7。

我做事情喜欢深入简出,及从最简单,最原理的方面先做一个框架,然后在这个框架里面进行补充。

我还是一个很喜欢和别人讨论的人,希望有人可以给我提出意见和建议。

我的这个心得很初级,都是一些基本的东西。

现在拿出来和大家分享,希望在我毕业之前能给大家留一些纪念。

^_^由于这些东西发paper实在是没有价值,但是我感觉可以作为arm开发的入门。

由于我的水平和经验有限,错误也是难免的。

但是如果不拿出来和大家分享,就算有错误我也发现不了,是么?呵呵。

我现试试发连载的第一篇,看看有多少价值,如果大家觉得有价值,我会继续连载的。

连载一:前言这个文档是我学习ARM编程的总结和心得。

阅读这个文档的人应当首先阅读ADS1.2的帮助文档及相关内容。

这个文档不会对编译器及连接器做出详细的说明,在需要的时候会指出具体内容在相关资料的章节。

同时阅读这个文档的人需要了解ARM指令集和一些ARM汇编的基本内容以及C和C++的相关编程内容。

同时还需要了解ARM的流水线结构及一些基本的编程知识。

同时为了方便查阅英文文档,所有的相关术语都使用英文原文第一章STARTUP1 ARM的启动一般的嵌入式系统在主程序执行之前都需要执行一些初始化的过程以创造嵌入式程序运行的环境,尤其是一些高级的嵌入式系统,由于核心芯片使用内存映射、内存保护等机制以及编程使用高级语言C,C++甚至JA V A语言,都需要先创建一个适合程序运行的硬件环境,然后初始化或者配置或者剪裁run-time library, 这些工作都必须在主程序运行前完成,所以一个startup程序或者程序组对于一个嵌入式系统来说是非常重要的。

要编写startup程序,需要对编译器、链接器和汇编器的细节有一定的了解,同时对ARM芯片硬件本身的地址分配以及memory mapping机制也需要有一些了解。

arm心得.

arm心得.

arm心得.第一篇:arm心得.心得体会(许晶)本次实习时间是一周,我们组所选的题目是直流电动机转速控制设计,其要求有:硬件部分要求在LPC2100系列ARM的最小系统的基础上,设计通过按键控制直流电动机速度的驱动电路,要求通过LPC2100内置的PWM发生器控制直流电动机;并将电动机速度通过串口送至PC机。

软件部分要求设计以上功能的脱机运行程序,并在试验室调试通过。

我负责的是硬件部分。

首先我将系统分为两部分。

一是电动机控制驱动电路;二是ARM最小系统。

在电动机驱动中,直流电机控制使用了H桥驱动电路,控制口线为P0.21、P0.22。

在ARM 最小系统中,分为5部分:电源电路、复位电路、JTAG接口电路、RS232串口电路、时钟电路。

在制作原理图中,我查阅了实验指导书和课本。

我所选用的是2114板子。

因为LPC2114是基于一个支持实时仿真和跟踪的16/32位ARM7TDMI-STM CPU的微控制器,并带有128/256 k字节(kB)嵌入的高速Flash存储器。

128位宽度的存储器接口和独特的加速结构使32位代码能够在最大时钟速率下运行。

对代码规模有严格控制的应用可使用16位Thumb模式将代码规模降低超过30%,而性能的损失却很小。

在这个过程中,我注意到了许多问题。

通过最小系统的制图,我对一些问题逐渐了解,不像刚开始学习一样,感觉什么也不懂,硬装知识。

我画了5部分,这几个部分让我对书上的内容更加深了学习。

如:时钟电路中,我就把时钟系统和晶体振荡两节课程,重新学习。

而在软件设计中,在我的搭档编程完之后,我也对程序进行了研究。

在主程序中,我们用的是i、j表示速度与方向,正转为“+”、反转为“—”;最小速度为1,最大速度为4。

先让电机正向慢慢的加速,加到正传的最大速后,在按下就变成反转,然后在依次加速,往返循环,直至没有按键按下。

所运用的是,调节PWM的占空比就能达到电机的速度调节。

我们组在硬件中遇到的问题并不多,主要是在画各部分原理图时找器件很不熟练,不能很快的找到。

ARM入门笔记(1)

ARM入门笔记(1)

ARM入门笔记(1)前言如果您是一个单片机爱好者,当见到一款功能强大、性价比高的处理器时,一定会有一股很想掌握它、运用它的冲动,起码我是这样。

5 年前第一次接触单片机(标准的51 系列),就被它强大的功能所吸引,而痴迷于它,一直到今天。

在这期间的不同时期,各种增强型51,PIC、AVR,DSP 和ARM 等不同程度的吸引和诱惑着我。

有的已经玩过了,有的则没有,但很想玩的这股冲动一直存在心里,特别是对ARM。

记得2002 年我就知道了ARM 这个东东,眼睁睁地看着它一天天的火热,但由于对其开发工具及开发过程的不了解等原因一直只处于认识的阶段,尽管也曾玩过ZLG 的2104 开发板!可能是ZLG 团队做的太出色的原因吧(详细的教材与源码,还有非常方便的工程模板),没过多久、没费多少劲就把里面的实验做完了,然后由于自已性格上的缺陷把它给扔在了一边,导致不到一个月就把大部分的东东还给了周老师。

直到前段时间,让我有机会真真正正的玩起了ARM!像最初玩8051 那样的尽兴(出现问题时,吃不下饭、睡不着觉的那种痛苦和解决问题后的那种畅快)。

这篇文档就是记录了我在前段时间学习、调试目前最低价的ARM 核处理器AT91SAM7Sxx 时出现的问题与解决方法。

它尽量完整地记录了我从开始不懂ARM,到最终完成AT91SAM7S64 各种外围实验的各个环节及整个过程,包括我在开始一个实验前的一些想法,实验目的,以及各个实验中,我以单片机的思维去思考时遇到的各种问题,和这些问题的解决方法。

现将自己的一点经验以及体会拿出来与大家共同分享,一来是希望能够为那些在ARM 门口徘徊迷茫的人提供一些借鉴,使他们顺利越过这道门槛;二来是希望能够抛砖引玉,以结识更多有共同爱好的朋友。

由于我也是新手上路,文章中难免疏漏与错误,希望大家不吝指正,如果在调试AT91SAM7Sxx 时有什么问题,欢迎大家共同。

ARM基础知识(强烈推荐)

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〉其中MODE可以是下面几种模式之一:usr,svc,abt,und,irq,fiq程序计数器PC可以作为一般的通用寄存器使用,但有一些指令在使用R15时有一些限制。

ARM初学

ARM初学

7.如何检验学习成果
在经过一段时间的学习后,初学者一定想知道自己达到了一个怎样的程度,我们给初学者提供一个检查自己学习效果的方法:可以仿照我们的开发板,自己做一款类似的开发板出来。当然,没有必要完全按照我们的设计,您可以在自己设计的开发板中加入更多的功能,配套更多的实验。
8.充分利用网络资源,不耻下问!
(4)目前国内应用比较多的ARM处理器芯片有哪些?它们主要应用于哪些领域?
以上四个问题,用户可以通过在网上查找资料很快得出答案。我们之所以只提出问题,不给出答案,是希望用户能够亲自去查阅相关信息和资料,因为这也是ARM学习的一部分。我们希望用户能够与我们给出的学习建议进行一种互动,即我们提出问题,用户通过查找资料来找出答案,这样更有助于用户对知识的理解。
(4)看看是否可以用另外的方法实现实验所要达到的效果,如果可以,可自己编写代码进行调试。
经过以上四步的练习,相信初学者可以很好的掌握LPC213X/214X片内功能器件的使用,对ARM开发流程也有了比较深刻的体会。
6.学ARM必搞嵌入式操作系统?
很多ARM初学者有一个错误的概念——学ARM必搞嵌入式操作系统。认为在ARM上跑嵌入式操作系统就代表技术先进、产品档次高的观点绝对是谬论。持这种观点的人一定是没有做过具体的产品开发。一个嵌入式产品是否需要跑嵌入式操作系统,是由很多因素决定的,例如,产品的功能需求、开发成本、开发周期等都是需要综合考虑的。
2.一开始就必须掌握ARM体系结构与汇编指令?
未必!我们身边的很多ARM初学者,一开始就抱着有关ARM体系结构的书籍开始苦读,更有甚者,在很多具体内容上钻牛角尖,把大量时间花在了ARM汇编指令上,几个月下来,进展不大,虽然也能知道一些ARM的相关概念,但离真正的具体应用相差甚远,很多初学者会感觉到,学完ARM体系结构后,对ARM的应用还是无从下手,一片茫然,有的甚至就因为这个原因,被挡在了ARM嵌入式开发领域的大门外,从此放弃了ARM嵌入式开发的学习。

ARM学习---经验.

ARM学习---经验.

一步一步学习uCOS和ARM体系结构的心得学习必备条件:1、一块开发板——例如44B0开发板,建议初学者不要去购买那些ARM9体系结构的,因为作为初学者来说ARM9体系的东西是很复杂的,买块ARM7的就可以了(先入门,然后再提高);2、学习必备书籍《Pointer on C》中文名字叫《C和指针》(美)里科|译者:徐波前提你的了解C指针吧(这本书时非常经典的书籍,完全可以看中文版的,作者翻译的非常到位)《嵌入式实时操作系统μCOS-II(第二版)》--邵贝贝翻译的(不能不承认邵贝贝是一个非常好的翻译者)《μC/OS-Ⅱ标准教程》--杨宗德对于英文不好的朋友可以购买《ARM体系结构与编程》--杜春蕾(该书其实还是有很多翻译错误的,大家在看的时候要注意一下,但是不可否认的是这本书到目前为止算得上是我见过最好的讲解关于ARM体系结构的书籍了)对于英文过关的兄弟姐妹可以直接看《ARM+Architecture+Reference+Manual(2nd+Edition)》3、有条件的兄弟姐妹可以选购一个仿真器JLINK V8全功能版(这个的感谢中国的优秀工程师,是他们把原价1999多的JLINK变成了几十元钱的东西4、开发环境--MDK350或者IARARM如果要熟悉这些开发环境,就需要好好读一些这些开发环境的手册资料,不好意思,这个就只有英文的了。

以上4个条件具备下来,可能也不会超过500元钱。

下面来讲讲我的学习经历:我刚开始学习的时候,自己走了不少弯路,这里就省略不说了。

第一步:在开发板上跑跑简单程序因为你有开发板,所以你就先在网上找一下对应开发板上的ARM芯片的datasheet,你都不先搞懂芯片的手册,又谈何让自己实现很多功能呢。

熟读数据手册后,就尽可能的在开发板上实现芯片对应的每个功能,像GPIO实验,UART 通讯,I2C,ADC,DAC,PWM,RTC,SPI等等。

自己写自己的程序,然后在开发板上好好实践一下。

arm学习经验

arm学习经验

从开始搞ARM到现在将近半年多了,第一个项目搞得有些眉目了,终于感觉像是入门了,半年来,有开始的新鲜,中间的苦闷,到最后的欣喜。

其中过程可谓曲折离奇,遇到了很到前人没有遇到过的疑难杂症,当然很多时候是因为我的粗心酿成的。

曾经也有过放弃的念头,那个焦虑,像得了狂躁症一样。

后来下定决心即使绩效没了,工作丢了也要搞完它。

其实在这个过程中,看到跟我一样的很多新人在论坛上发帖求助,可是很多时候回者寥寥无几,可能问题太幼稚,也可能问题描述的不清楚。

我发过很多帖子,甚至直接骚扰了网上很多的牛人,他们都给了我很大的帮助,但是我当时的想法太简单了,总想着某个牛人能够解决掉这个问题,现在想想,即使是牛人,没有看到具体的问题也很难给你一个解决方法,遇到困难不能把希望完全寄托在别人身上,要挖掘自身潜力,一遍遍仔细看手册,反复试验,不断思考,问题肯定能解决掉,只是时间问题而已。

再次要感谢公司对我的容忍,一个这么简单的东东允许我搞了这么久。

其实,在前面的过程中,一直有写点什么的冲动,但是当时困难重重、前途未卜,也没了这个心情。

现在可以坐下来仔细总结下前面的问题,有现在都没搞明白的,特向大家请教了;有解决掉的,那就说说经验教训,给其他人一些参考。

首先声明本人脑瓜笨,逻辑思维差,点一个灯点了一个多月,最后还发现没点对。

所以提到的问题可能很幼稚,说话也好像前言不搭后语,有兴趣看的那就受累了哈。

先说说我们的这个块板子,裸奔的at91sam9260,外扩Norflash、SRAM,实现程序既可以跑在Norflash中,也可以拷贝到Sram中跑。

任务就一个:控制一个片外AD,读出数据然后通过串口发出。

很简单的吧,这我都搞了几个月呢,你说菜不菜吧。

以下我将回想整个的ARM学习过程,涉及到的知识都是很简单的基础知识,老鸟就不用看了,希望可以帮助到像我一样的菜鸟。

前三个月主要是熟悉的过程,当时完全没有想到后面程序的调试会如此的困难,想当然地认为又不上系统,无非是32位的单片机嘛。

ARM(44b0)初学者总结(转载)

ARM(44b0)初学者总结(转载)

ARM(44b0)初学者总结(转载)我的开发板是s3c44b0x的, 2m NOR FLASH在bank0,8m sdram在bank6.首先看看我们要解决的问题。

有些ARM芯片有内嵌的RAM 和FALSH.这样可以直接在片内运行程序,44B0X片内只有几K CACHE,ROM和RAM都是外接的芯片。

我们的程序是要写入FLASH中保存,但执行时是拷到SDRAM中执行的(如在ROM中执行速度会较慢)。

要做到这一点需要把程序做成两个分程序:一个是实现你的系统功能的主程序,如果你用嵌入式系统,那就是UCOS和UCLINUX之类的程序,这个程序的代码保存在FLASH中,但执行时会拷到RAM中再执行;一个是引导程序,直接在FLASH中执行,负责把初始化芯片和外设,并把主程序从FLASH中拷到 RAM中,然后跳到主程序去执行,对应的概念是UBOOT等常见的引导程序,这个程序会被写入0X0开始的地址,开机后自动执行。

那么我们需要解决以下几个问题:1.如何编译和调试主程序2.如何使中断跳到RAM中的中断服务程序执行3.如何把引导程序和主程序写入FLASH中.以下我们来解决这几个问题:1 开始在仿真器中写代码和调试由于主程序会被拷贝到RAM中执行,则我们应该在编译时就把程序定位到RAM中。

这里先要说说几个ADS的参数的意义,在ADS的ARM LINKER页有RO,RW两个参数,此外还有一个ZI没有在页中给出,RO是只读代码的起始地址,由这个地址开始存放编译出来的程序指令;RW是程序的读写段的开始,即你程序中的数据存放的开始地址,ZI紧跟在RW区后,ZI区存放的是需要在程序运行时初始化为0的数据。

了解这几个链接参数的意义后我们可以设置这几个参数了:对于我的44B0X板8M SDRAM 在0XC00_0000.因此在开发时把ADS中的RO BASE的地址指定为0XC00_0000;置于RW,在程序完成前可以预先估计一下程序的体积有多大,需要用到的数据区有多大,避免数据区太小或代码区覆盖掉前面的数据区就是了,我用了0XC10_0000,1M的代码空间,其他作数据区。

ARM入门笔记

ARM入门笔记

如果您是一个单片机爱好者,当见到一款功能强大、性价比高的处理器时,一定会有一股很想掌握它、运用它的冲动,起码我是这样。

5年前第一次接触单片机(标准的51系列),就被它强大的功能所吸引,而痴迷于它,一直到今天。

在这期间的不同时期,各种增强型51,PIC、A VR,DSP和ARM等不同程度的吸引和诱惑着我。

有的已经玩过了,有的则没有,但很想玩的这股冲动一直存在心里,特别是对ARM。

记得2002年我就知道了ARM这个东东,眼睁睁地看着它一天天的火热,但由于对其开发工具及开发过程的不了解等原因一直只处于认识的阶段,尽管也曾玩过ZLG的2104开发板!可能是ZLG团队做的太出色的原因吧(详细的教材与源码,还有非常方便的工程模板),没过多久、没费多少劲就把里面的实验做完了,然后由于自已性格上的缺陷把它给扔在了一边,导致不到一个月就把大部分的东东还给了周老师。

直到前段时间,让我有机会真真正正的玩起了ARM!像最初玩8051那样的尽兴(出现问题时,吃不下饭、睡不着觉的那种痛苦和解决问题后的那种畅快)。

这篇文档就是记录了我在前段时间学习、调试目前最低价的ARM核处理器——A T91SAM7Sxx时出现的问题与解决方法。

它尽量完整地记录了我从开始不懂ARM,到最终完成A T91SAM7S64各种外围实验的各个环节及整个过程,包括我在开始一个实验前的一些想法,实验目的,以及各个实验中,我以单片机的思维去思考时遇到的各种问题,和这些问题的解决方法。

现将自己的一点经验以及体会拿出来与大家共同分享,一来是希望能够为那些在ARM门口徘徊迷茫的人提供一些借鉴,使他们顺利越过这道门槛;二来是希望能够抛砖引玉,以结识更多有共同爱好的朋友。

由于我也是新手上路,文章中难免疏漏与错误,希望大家不吝指正,如果在调试A T91SAM7Sxx时有什么问题,欢迎大家共同讨论。

第一章开发工具与调试环境一.目标板所用实验板是参考A TMEL公司官方网站上发布的《A T91SAM7S-EK Evaluation Board User Guide》设计的,相当于A T91SAM7Sxx评估测试板,主要用于各种外围实验,结构框图如图1-1所示。

致ARM初学者

致ARM初学者

致ARM初学者1.做个最小系统板:假如你从没有做过的开发,建议你一开头不要贪大求全,把全部的应用都做好,由于ARM的启动方式和dsp或有所不同,往往会碰到各种问题,所以建议先布一个仅有Flash,SRAM或SDRAM、CPU、JTAG、和复位信号的小系统板,留出扩展接口。

使最小系统能够正常运行,你的任务就完成了一半,好在ARM的外围接口基本都是标准接口,假如你已有这些硬件的布线阅历,这对你来讲是一件很简单的事情。

2.写启动代码,按照硬件地址先写一个能够启动的小代码,包括以下部分:初始化端口,屏蔽中断,把程序拷贝到SRAM中;完成代码的重映射;配置中断句柄,衔接到入口。

大概你看到给你的一些示例程序当中,bootloader会有无数东西,但是不要被这些复杂的程序所困扰,由于你不是做开发板的,你的任务就是做段小程序,让你的应用程序能够运行下去3.认真讨论你所用的芯片的资料,尽管ARM在内核上兼容,但每家芯片都有自己的特色,编写程序时必需考虑这些问题。

尤其是女孩子,在这儿千万别有依靠心理,总想拿别人的示例程序修改,却越改越乱。

4.多看一些操作系统程序,在ARM的应用开放源代码的程序无数,要想提高自己,就要多看别人的程序,linux,uc/os-II等等这些都是很好的原码。

6.假如你是作硬件,每个厂家基本上都有针对该芯片的DEMO板原理图。

先将原理图消化。

这样你以后做设计时,对资源的分配胸有成竹。

器件的DATSHEET一定要好好消化。

7.假如做软件最好对操作系统的机理要有所了解。

固然这对软件工程师来说是小菜一碟。

但假如是硬件出身的就有点费力。

问:做最小系统板是2层还是4层好?第1页共2页。

ARM基础知识

ARM基础知识

ARM入门最好的文章------转载一位资身工程师的入门心得2007-07-12 13:36 开始学ARM一团雾水,不知道如何入手.这个介绍的比较全面.本人认为aRM入门最好的文章.抓住51开发ARM这几个月来我一直都爬在51的问题,自己都有一点笑自己了,用了4个月的时间,来巩固51的原理和程序,还好我自己算是走过来了,自己笨,身边的高才生又看不上51的原理,他们都比较“牛”,说51过时了,你问那个做什么???我比较郁闷!过时吗?我有一点怀疑?他们不愿意说有他们自己的理由,没有人强求,靠自己好了。

我自己个人的观点:51是一个基础,而且还很重要,这是再我看了ARM之后感觉到的。

它可以加速你的ARM学习速度,真得!不相信你试一试好了。

凡是要求一个速度、效率,不要做一些无用功,抓紧身边的每一个一分钟,人是活的,东西(知识、书)是死得,想要做的事情因此就简单了。

2.我在网上看到了一篇很不错的ARM文章,粘贴过来,为了和像我一样在很少有人帮助的情况下,自学ARM 的难兄难弟们。

“ARM怎么入门”。

我不是高手,仍然是菜鸟。

但是回想起自己当时的迷茫,特意写了这篇东西,当作给和我一样的兄弟姐妹的帮助吧。

问这个问题的人多半不是已经工作的工程师,而是和我一样是学生,所以这篇笔记就把看家当成我一样的菜鸟,高手勿怪。

首先声明:本人还没有找工作,事实上处于研究生刚毕业,还没开始找工作的空闲时间,44B0只是兴趣所在,打发时间。

所有看法完全是自己的感受,不代表任何他人。

错了的观点各位帮我纠正。

再次补充:很多朋友看了上面的话就问我为什么研究生毕业了还不找工作:)说是打发时间,其实是因为研究生的时候带了一个项目,申请提前毕业以后项目还有块尾巴,答应导师把项目做完再走:)就这么简单。

男人总点负点责,呵呵以下问题常被问到,我就想到哪说到哪吧。

一首先说说ARM的发展可以用一片大好来形容,翻开各个公司的网站,招聘里面嵌入式占据了大半工程师职位。

浅谈ARM嵌入式系统如何学习与入门

浅谈ARM嵌入式系统如何学习与入门

浅谈ARM嵌入式系统如何学习与入门关于ARM嵌入式系统的开发,一直是it行业人员关注的热点,也是属于一个高门槛的行业,目前也有很多的开发者正在从事着这方面的学习。

而那些对于那些想去学习开发者还有那些初学者往往会碰到难题,到底从哪里学起才好?学了半天还是不懂?其实往往在一门技术的学习上,特别是在基础知识上不能胡乱的学习,只有掌握了技术的核心,运用起来才会得心应手。

那么ARM嵌入式系统该如何掌握,怎么去快速入门呢?嵌入式简单来讲,就是软硬结合的东西,嵌入式开发又分为两类,这两类各有特点,当然需要的资质也完全不同。

一类是学电子工程、通信工程等偏硬件专业出身的人,主要是搞硬件设计,有时要开发一些与硬件关系最密切的最底层软件,如BootLoader和最初级的硬件驱动程序等,他们的优势是对硬件原理非常清楚,当然也会有不足之处,不足的是他们更擅长定义各种硬件接口,但对复杂软件系统往往表现的力不从心。

另一类就是学软件、计算机专业出身的人,主要从事嵌入式操作系统和应用软件的开发。

嵌入式设备的增值很大程度上取决于嵌入式软件,这一领域占了嵌入式系统的最主要的工作部分,因为很多公司都知道,嵌入式产品的差异很大程度在软件上,所以都会将硬件设计外包给专门的硬件公司。

1、关于ARM嵌入式系统是一门综合性的学科,首先需要的是要掌握C语言。

ARM嵌入式领域中大部分会使用到C语言。

目前所有的8/16/32位(51系列,MSP430系列,ARM 系列)都是使用C语言,以C语言为基础的。

c++要知道什么是类,怎么定义,继承,接口,要深刻理解,当然基本语法也是必不可少的。

2、在操作系统上,相关的基本原理是应该去掌握的,这样可以保证你对硬件和软件又更深刻的了解,同时也具有更大的帮助,比如进程、线程、系统是如何来进行分配资源的,系统是如何来进行管理硬件的,对于初学者一定要多看看,结合以后的项目经验,会有更好地理解。

3、你必须掌握一门嵌入式操作系统,比如linux或者是wince下的编程,这些对以后做应用的编程会有很大的帮助。

学习ARM的开始

学习ARM的开始

初学ARM的开始-----------S3C44B0X(ARM7)到目前为止,断断续续的搞了阵ARM,毕竟自己买的板不能就这样浪费了,而个人的理念是一定要摆脱单片机,毕竟谁都会搞点单片机,如果你是软件工程师,而你仅仅停留在单片机的话,我想绝对不够的,其实我自己也就是个单片机工程师,我意识到这一点,在一个只有我一个人搞单片机的公司里,任何知识都是靠自己自学,2006年毕业出来快两年了,说实在的,搞技术的同学里我算说出色点的。

呵呵,因为我们都不咋滴!其实我算是很菜的,只是比较喜欢自学,ARM也是,觉得目前手持数码设备的繁荣离不开ARM,这点足以使很多向我这样的要转型了。

o(∩_∩)o...,可能很多人买来开发板不会用,我也是一样啊,呵呵,所以在这里先声明一下,我只是刚刚会,也仅仅是当单片机用。

希望还没有整ARM的兄弟能有帮助,而高手请指点我的错误,觉得ARM区比较冷,而ARM这么热?因为我公司只有我一个写程序的,真的希望有高手指点我,让小弟少走些弯路。

谢谢先。

步入正题。

ARM是目前手持设备上用得最广泛的处理器了,其出色的性能低廉的价格占据了该市场的大半壁江山。

用智能机的会更清楚。

那些系统就是建立在ARM上。

我们抛开系统,如何让其简单的做单片机的事,如跑马灯。

这就是我要说的BOOT.当你买了个板(S3C44B0X)的板来了之后,用了光盘资料的程序跑了跑,里面基本就是跑马灯啊,定时啊,等的小程序,小是小啊,但是,在A VR,51等单片机中不是这样的哦,为什麽有一大串的汇编呢?这个汇编程序就是ARM的初始程序,类似于电脑的BIOS。

下面讲讲BOOT.建议用AXD一步一步试着理解。

1.上电后从0X00开始,这个都是一样的。

AREA Init,CODE,READONL YENTRY0x00 b ResetHandler ;for debug0x04 b HandlerUndef ;handlerUndef0x08 b HandlerSWI ;SWI interrupt handler0x0c b HandlerPabort ;handlerPAbort0x10 b HandlerDabort ;handlerDAbort0x14 b . ;handlerReserved0x18 b HandlerIRQ0x1c b HandlerFIQ上电即执行b ResetHandler,即跳到初始化程序2.初始化程序这里对很多内容进行初始化。

相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

ARM入门最好的文章------转载一位资身工程师的入门心得开始学ARM一团雾水,不知道如何入手.这个介绍的比较全面.本人认为aRM入门最好的文章.抓住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 射象头,大到我们军品里的控制器,应用面很广。

FPGA的兄弟一般做ANSIC(特殊芯片设计,好象是这么翻译的)。

而ARM单纯说来并不比一个单片机强多少,但是它的独特就在于不断下降的价格和提升的性能。

这完全依靠于ARM 公司的战略,厉害!!很佩服他们的战略眼光!!值得注意的是:在找工作中,企业(著名的,小的不算)对单纯的ARM硬件开发工程师并不比单片机重视,很少有大企业的职位里写“从事过ARM开发优先”。

写的多的是什么?“嵌入式LINUX”到这相信大家看出来了吧,需要的是硬件中的软件。

二 ARM是硬件还是软件很难说,ARM是硬件,LINUX是软件。

ARM的硬件多半已经模块化了,像我这样把板子改成这样的就算动的多的了,这同样是ARM公司的战略,再次佩服。

实际中的LINUX的开发工作更多,更耗时。

从这方面说ARM应该算是软件了。

在找工作中更是这样,举个例子,联想里和ARM最接近的是“BIOS工程师”是软件,MOTO里接近的是嵌入式LINUX工程师是软件。

而其他很多公司把嵌入式产品开发归为硬件。

所以,不要讨论这个,好好玩转自己的板子才是关键。

实在不爽你就把自己叫“嵌入式开发工程师”三要不要买开发板买哪家我的答案是“在你个人的学习方法”,但是如果看家是需要看这骗笔记的水平,个人推荐还是买现成的。

1 买买板子可以把注意力集中在软件开发上,软件开发(尤其是驱动)可以不必担心自己硬件上的问题,我就是以便调试一边写驱动和程序,每次写驱动前就要先确认硬件没问题。

另外,买板子更省钱和时间,我自己做的板子,原理图PCB花了2周以上!制版又15天,回来以后焊接44B0 160个脚!那叫一个麻烦~~花了多少钱呢?2层板,制版费就300块!当然我把接口都外引了,还做了个20X18的LCD背板,板子比较大。

总体下来元件+LCD屏+PCB=11XX块!够2410的了。

再有就是买的资料相对来说比较全,但是不要指望有技术支持!都是骗人的,卖你之后就不会理你。

2 做自己做可以更了解底层硬件,可以按照自己的要求加东西,比如我就加了GPS模块、GPRS模块、SD卡模块,扩了个IIC的35个键子的键盘、把LCD接口按照买的LCD改装了,可以用FPC线直接连接。

做的很爽的。

玩一把吗。

当然,你可以有策略的做,比如像我一样,把RAM和ROM,网络都保持和某现成的板子一样,这样他们的资料你就可以拿过来直接用,给自己留个退路。

其他的如SD了什么的自己做。

都达到了~~就是费钱,费时间。

再有就是给做的朋友几点建议:尽量拿到现成的板子,尽量多搜集其他板子的全套资料,一定要拿到一张没问题的原理图。

网上流传的原理图多数是龚俊03年画的,再这里对龚俊表达一下我的敬意!!牛人!但是那个图有个小BUG,我指的是03版的,后来的没这问题了。

8019那地址线和地址有问题。

还有人仿照他的PDF图画的SCH,更是漏洞百出!谴责!顺便谴责把龚俊板子偷卖的人。

3 买哪家个人感觉分3类吧1)首先是ZLG的,资料非常的全,感觉他是真正想教你怎么开发ARM,而不是像有的公司自己技术都没做好就做个板子出来卖钱。

但是最大的不利就是价格太贵!而且主要是PHILIP的,货源比较麻烦~~可能有人说21XX系列的不贵啊,那是总线不外扩的,只能跑UCOS,不能跑UCLINUX。

但是说是话,21XX系列才是ARM7的价格性能结合点。

ARM7最适合做工业控制,ARM普及,销量都是怎么来的?都是ARM7来的,而44B0是典型的商业片子。

但是,这里如果你看中的是为工作做准备,还是选能跑UCLINUX的吧。

但是仍然作为第一个推荐,因为菜鸟时期,合适的资料太重要了!!在这里被ZLG的务实精神感动!你看人家那代码写的。

2)感觉立宇泰的44B0不错硬件没别的,就是资料比较全的说,不像有些家,原理图直接拿人家的,还错的~~ 3)找个最便宜的好象最便宜的有卖350的吧?也是没别的,就是即省了钱还省时间搜集资料,至于资料全不全,别计较了~~硬件肯定好使就行吧。

四要不要有51 AVR等单片机基础有更好,但没有也无所谓。

两个月以前,我只是看别人做,耳濡目染~~,本科学过单片机,从来没做过。

我们这的技术主干做AVR和51,我就跟他们调过C语言程序。

你看出来了?我是个不折不扣的菜鸟吧?但是做这个之前我特意找了ZLG的两本书,看了里面的例子和原理图,这很重要。

例程里有汇编有C,都看懂了就OK,不用自己现写五开发都需要学习哪些软件总结起来最主要的有以下几个吧1 ADS调试用确切的说是ADS+AXD。

ADS里包含AXD。

原来都用SDT后来ARM公司停止对SDT支持了,改支持ADS了,还是用ADS吧。

有的人的程序发布的仍然是SDT版本的,但基本都可以找到相应ADS的,新人在这里不要发蒙。

ADS是编译器,AXD是调试器。

便宜成AXF以后再在ARM的RAM里调试。

2 PLASHPGMFLASH烧写的软件。

AXD在RAM里调试,掉电就没有了,方便程序修改。

调试好的程序再下到FLASH里,上电直接运行。

同类的软件还有很多,什么FLUTED了、FLSHP了都是,但FLASHPGM最好,要是有人还问FLASH 不支持BIN格式文件的问题就要看我写的PLASHPGM使用了。

3 BANYANT调试代理(不知道名对不,起这么个难记的,我一般都叫它“半羊”因为知道它那几天刚吃了烤羊)调试代理就是用它帮你使用更简单的JTAG(便宜啊)来实现原本1K才卖的JTAG仿真器的大部分功能。

JTAG调试原理看我另一篇笔记。

简单的就可以把他理解为你自己做的JTAG的驱动就行了。

调试代理还有很多种,什么H-JTAG了、ARM7了(不知道具体叫什么,就记得可执行文件叫ARM7.EXE)都是,BANYANT比较好。

需要注意的是,没种调试代理安装方法虽然都简单但都不一样,需要看说明。

而且AXD调试之前都要运行。

省钱了,就别怕麻烦了。

4 ARM-ELF-TOOLS工具链里面是UCLINUX开发用的工具比如ARM-ELF-GCC只类的。

工具链就是把很多工具打包在一起发布的方便你开发的东西。

具体安装方法看我另一篇笔记。

另外如果你开发LINUX就要用ARM-LINUX-TOOLS,不一样,不通用。

5 U-BOOT大名鼎鼎的BOOTLOADER生成工具,同类的好象还有VIVI(名字很暧昧~~)生成的BOOTLOADER烧到FLASH里,然后就可以用BOOTLOADER下载烧写其他了有了BOOTLOADER才能下UCLINUX。

BOOTLOADER就像电脑上的BIOS。

当然UCOS的不用这个,用什么我不知道:)最新版本是1.1.4 具体使用方法看我另一篇笔记吧。

6 UCLINUX包UCLINUX的源码包,不用多说了吧?建议大家用现成的先体会一下,然后再自己编译,裁剪。

因为单独UCLINUX的编辑技术上比较简单,但涉及的方面还是比较广的。

7 VMWARE老牌的虚拟机软件,在一个机器上虚拟出一个机器装LINUX(PC上用的),省得你来回开关机了。

记得装VMWARE-TOOLS,安装方法在我另一篇笔记里。

六有哪些书推荐主要推荐ZLG的三本书,有这3本再加网络就不用别的书了,其中主要推荐前2本,3是介绍体系结构的,也不错1 ARM嵌入式LINUX系统构建与驱动开发,北航版驱动写的很详细,前期开发介绍也很好2 ARM 嵌入式系统实验教程(二),北航版有ZLG2200的原理图,实验程序和注释,了解人家是怎么开发的。

3 ARM嵌入式系统基础教程最重要的是体系结构,汇编部分介绍,看看吧,增加理论素质。

4 44B0数据手册写在这里是强调它的重要。

不推荐ZLG早期出的红色皮的ARM什么体系结构~只类的写的太多,看烦了。

其他的书没了几本,没看见好的,大家有看过的推荐吧。

七选UCOS?UCLINUX?LINUX?VXWORKS?还是当单片机用1 搞开发,工程设计,用UCOS,小巧,多进程,简单,体现了ARM7的精髓。

2 LINUX 正根的嵌入式系统,LINUX消费与通信领域用的比较多,但缺点是必须ARM9才能跑,ARM9的板子自己做就不行了,6层板太贵。

买开发板1K达底吧。

但是还是推荐选ARM9+LINUX3 UCLINUX 算投机嵌入式系统:)ARM7上可以跑,由有LINUX近亲,学好好可以比较方便的转向LINUX,像我一样的穷鬼用吧,呵呵4 VXWORKS学好后可以找到高薪工作,但工作机会本身并不比LINUX好找。

5 当单片机用不推荐,虽然我景仰的ZLG一直号召这么干。

相关文档
最新文档