ARM入门学习经验

一 首先说说ARM的发展 

      ARM由于其功耗、成本、功能、可控性、供货等多方面的优势,在商业、工业等电子产品领域发展的越来越快,占据的市场份额也越来越多。   

      广义的嵌入式无非几种:传统的什么51、AVR、PIC称做嵌入式微控制器;ARM是嵌入式微处理器;DSP;FPGA。 
       DSP因为数字处理与通信领域的空前发展而火暴,小到MP3 射象头,大到我们军品里的控制器,应用面很广。现在随着ARM处理器的主频升高,再加上一些DSP协处理器组成双核芯片等。越来越多的ARM应用到了原来DSP的市场。从cortexM3到达芬奇系列的arm,从音频编解码,到视频编解码,机顶盒、视频处理等,ARM在多媒体方面的优势多来越大。 
      FPGA的兄弟一般做ANSIC(特殊芯片设计,好象是这么翻译的)。而ARM单纯说来并不比一个单片机强多少,但是它的独特就在于不断下降的价格和提升的性能。这完全依靠于ARM公司的战略,厉害!!很佩服他们的战略眼光!! 
      值得注意的是:在找工作中,企业(著名的,小的不算)对单纯的ARM硬件开发工程师并不比单片机重视,很少有大企业的职位里写“从事过ARM开发优先”。写的多的是什么?“嵌入式LINUX”到这相信大家看出来了吧,需要的是硬件中的软件。 


二 ARM是硬件还是软件 

      很难说,ARM是硬件,LINUX是软件。ARM的硬件多半已经模块化了,像我这样把板子改成这样的就算动的多的了,这同样是ARM公司的战略,再次佩服。 
      实际中的LINUX的开发工作更多,更耗时。从这方面说ARM应该算是软件了。 
      在找工作中更是这样,举个例子,联想里和ARM最接近的是“BIOS工程师”是软件,MOTO里接近的是嵌入式LINUX工程师是软件。而其他很多公司把嵌入式产品开发归为硬件。所以,不要讨论这个,好好玩转自己的板子才是关键。实在不爽你就把自己叫“嵌入式开发工程师” 


三 要不要买开发板 买哪家 
       
       我的答案是“在你个人的学习方法”,作者建议前期买现成的开发板,入门之后可以做自己的。自己做板子调试对自己的提升是最快最直接的,但是刚刚接触的时候硬件上往往不能够一次成功,学习的效率就低了。当然如果有过来人指导就不一样了。

1 买 
       买板子可以把注意力集中在软件开发、开发板资源上,软件开发(尤其是驱动)可以不必担心自己硬件上的问题,我就是以便调试一边写驱动和程序,每次写驱动前就要先确认硬件没问题。另外,买板子更省钱和省时间。自己做板子周期长,而且调试麻烦,因为你不知道是硬件问题还是软件问题。

      再有就是买的资料相对来说比较全,但是不要指望有技术支持!都是骗人的,卖你之后就不会理你。所以,板子有一个调通的可用就行了,没有必要花太多RMB去买所谓的超强板子。芯片都是一样的,引脚引出来就行。在自己掌握原理之后,可以自己搭建简单的电路,调试、修改程序。 

      不能太依赖开发板,再有了一定基础后要尽快抛弃,让它变成自己脑袋里的东西。这样资料方面就起了很关键的因素,所所以资料才是最关键的,可以通过很多渠道获得一些全面的资料,比如可以跟朋友要,也可以跟买过资料全面开发的朋友借,还有可以通过技术论坛下载一些免费的,还可以通过二手交易网、淘宝网等和其他技术人员索要、购买,比如淘宝店铺:http://shop63212757.taobao.com 就有很多入门资料。   


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,23XX,24XX的可以跑uclinux。但是说是话,21XX系列才是ARM7的价格性能结合点。ARM7最适合做工业控制,ARM普及,销量都是怎么来的?都是ARM7来的,而44B0是典型的商业片子。但是,这里如果你看中的是为工作做准备,还是选能跑UCLINUX的吧。 
但是仍然作为第一个推荐,因为菜鸟时期,合适的资料太重要了!!在这里被ZLG的务实精神感动!你看人家那代码写的。所以,ZLG的24XX的资料和基于LPC2400的两本深入浅出ARM7,是不可多得的资料哦。 
     2)感觉立宇泰的44B0不错 
硬件没别的,就是资料比较全的说,不像有些家,原理图直接拿人家的,还错的~~ 
     3)找个最便宜的 
好象最便宜的有卖到几十块钱的吧?淘宝一下,也是没别的,就是即省了钱 还省时间搜集资料,至于资料全不全,别计较了~~硬件肯定好使就行吧。资料另外收集去,不要想着一个开发的资料就能决绝你的学习任务了 O(∩_∩)O哈! 


四 要不要有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 PLASHPGM 
FLASH烧写的软件。AXD在RAM里调试,掉电就没有了,方便程序修改。调试好的程序再下到FLASH里,上电直接运行。 
同类的软件还有很多,什么FLUTED了、FLSHP了都是,但FLASHPGM最好,要是有人还问FLASH不支持BIN格式文件的问题就要看我写的PLASHPGM使用了。 


3 调试代理(不知道名对不,起这么个难记的,我一般都叫它“半羊”因为知道它那几天刚吃了烤羊) 

调试代理还有很多种,什么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 LINUX包 
LINUX的源码包,不用多说了吧?建议大家用现成的先体会一下,然后再自己编译,裁剪。


7 VMWARE 
老牌的虚拟机软件,在一个机器上虚拟出一个机器装LINUX(PC上用的),省得你来回开关机了。记得装VMWARE-TOOLS,安装方法在我另一篇笔记里。 


六 有哪些书推荐 
      主要推荐ZLG的三本书,有这3本再加网络就不用别的书了,其中主要推荐前2本,3是介绍体系结构的,也不错 

1 ARM嵌入式LINUX系统构建与驱动开发,LPC3250&Linux 2.6实验指导(linux)

  驱动写的很详细,前期开发介绍也很好 

深度剖析Windows Embedded CE ,SmartARM3250配套教程(wince)
2 深入浅出ARM7基于LPC2300(ARM7),深入浅出ARM9基于LPC3250(ARM9),
有项目经验,理论知识,还有实验电路实验程序和注释,了解人家是怎么开发的。 

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

4 arm处理器的数据手册(根据手头的资料选芯片) 
写在这里是强调它的重要。 


不推荐ZLG早期出的红色皮的ARM什么体系结构~只类的 
写的太多,看烦了。 
其他的书没了几本,没看见好的,大家有看过的推荐吧。 


七 选UCOS?UCLINUX?LINUX?VXWORKS?还是当单片机用 
     1 搞开发,工程设计,用UCOS,小巧,多进程,简单,体现了ARM7的精髓。 
     2 LINUX 正根的嵌入式系统,LINUX消费与通信领域用的比较多,但缺点是必须ARM9才能跑,ARM9的板子自己做就不行了,6层板太贵。买开发板1K达底吧。但是还是推荐选ARM9+LINUX 
     3 UCLINUX 算投机嵌入式系统:)ARM7上可以跑,由有LINUX近亲,学好好可以比较方便的转向LINUX,像我一样的穷鬼用吧,呵呵 
     4 VXWORKS 
学好后可以找到高薪工作,但工作机会本身并不比LINUX好找。 
    5 当单片机用 
不推荐,虽然我景仰的ZLG一直号召这么干。因为对于学习来说多进程的系统设计才是ARM7的玩头,至少你也要整个UCOS啊:) 
有朋友问我先学这个当基础不行吗?那当然可以~~但我当时就用了1周搞定,就是我先的ADS在RAM中调试的笔记。后来我清空FLASH用的小段程序还是当时写的LED闪烁程序呢。另外1周里其中还因为自己过于菜,没把OM设置好导致晶阵不阵 
哈哈。这个是必须做的,但一带而过。目标放的远一点。 


八 学习要用多长时间 
       我从菜鸟到现在两个多月,中间被打扰数次。仍然搞定了PCB设计与制版,RAM调试,FLASH下载,UBOOT移植和下载UCLINUX(没剪裁,用现成的),LCD驱动。 
再次坦诚的说:我确实比较菜,说这些不是让大家羡慕,只是告诉你们“你们应该比这个更好” 
我相信良好的态度+合适的方法+及时的总结=成绩 


九 ARM都玩什么 
就几点 
1 硬件设计 
2 系统移植 
3 驱动开发 
4 应用开发 
没了。其中推荐把注意力放在后两个上,3有难度,4比较灵活,最重要的是都是找工作的砝码。 


十 我用的什么板子 
很多人问我这个问题,我特意写过一个的。再说一次吧。 
我是自己做的,RAM、ROM、8019等比较麻烦而当时的自己不理解的都按照龚俊的做的。保持其他不便的情况下做了如下改动。 
1 加了串口通信的GPS模块、 GPRS模块 
一个UART0,一个UART1,当与要用超级终端时用跳线切换。 
2 SD卡,和7843触摸屏 
同时挂在SPI总线上,因为SPI只能挂一个设备,同时还做了I/O模拟的准备,把两个设备又通过跳线挂在4个IO上。 
3 扩了个IIC的35个键子的键盘 
用的ZLG的7290,不占用CPU,最大支持64个键子,只上了35个,其他留接口。 
4 把LCD接口按照买的LCD改装了,可以用FPC线直接连接。 
所以改动虽然多,但真正很移植了,初期调试有关的并没动,就是为了现在不那么菜的时候做准备:) 


十一 开发流程 
这里是我的开发流程 
1 设计原理图
2 设计PCB
3 制版 
4 焊接电压,确定电压没问题 
5 焊接芯片+周边电路,用JLINK仿真器连接,JlinkV8已经支持arm7,9,11 cortexM3 等常见arm,而且价格便宜,淘宝75元一个。
6 尽量用keil,网上很多程序都是基于这个的,ADS1.2调试起来买有它方便
7 跑裸机程序,熟悉常用端口,串口,iic,spi,usb等
8 看看驱动开发的方法,自己写个驱动看看 
9 还有很多事东西等着你玩 呵呵 


十二 关于JTAG访真器 

建议jlink V8

linux下用网卡加串口调试,熟悉之后可以移植串口工具,只用串口调试。



十三 哪个公司的ARM 
这个是问题比较简单。 

1 ARM7主要就几个公司的 
三星,PHILIP,ATMEL的 
ATMEL的有比较便宜的AT91SAM7S32 和AT91SAM7S64 专为8位应用产品量身定做,价格很便宜好象《3刀吧。和PHILIP的21XX差不多,资料太少,项目中选还不错。 
其他两家上面说了的不多说了吧 


2 cortex M3

cortex M3 有意法半导体,流明,但是STM32系列用的人多,资料也有,我用过的比较来说稳定性好一些,流明的价格其实并没有他们自己说的那么便宜

而且供货也是问题,很多功能多的片子不是中断有BUG就是由于加入以太网发热成问题,导致稳定性不容乐观。


2 ARM7以上
这个玩2410和2440的多吧,现在2440停产了,可以找替代产品,也可以用ARM11 6410 

其实ARM9用的最多的领域应该是消费电子,比如手机PDA,而这上面用的多的应该是INTEL的和TI的吧。

工业上的可以用飞思卡尔和LPC3250之类的,各有利弊选型时注意看是否合适自己 

但是飞思卡尔,INTEL的TI的入门材料少,价格高,自己看情况定吧。

还有 很多要说的,限于篇幅有限以后再写了,今天先到这里。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值