• ARM入门最好的文章


    一 首先说说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 plashpgm
    flash 烧写的软件。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+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 设计原理图(含wiggler的jtag访真器)
    2 设计pcb(含wiggler的jtag访真器)
    3 制版
    4 焊接电压,确定电压没问题
    5 焊接44b0+jtag电路+wiggler的jtag访真器+周边电路,用banyant+仿真器连接,banyant提示错误,但可以显示44b0编号,好象是0x0f0f0f0f只类的,说明44b0没问题
    6 焊接晶体+ram+rom+周边电路,用banyant+仿真器连接,可以显示正确的44b0了
    7 用banyant+仿真器连接,开axd,在命令行窗口操作ram,看可不可以修改,可以的话(用内存窗口看ram地址)ram就没问题
    可以用这个命令“setmem 0xc000000,0xffffffff,32”
    我的ram挂在bank6上 所以地址是0xc000000,你要是改了就也得改。
    8 用我写的《自己写了个c工程模板又写了个使用说明 》里的方法调试程序吧,写个简单的,我当时写个led闪烁的。看好使不。
    9 把程序按照《flash烧写总结 》里的烧到flash里,测试一下
    10 按照《uboot 移植操作》移植uboot
    11 按照《uclinux下载简单说明》下个uclinux
    12 看看驱动开发的方法,自己写个驱动看看
    13 还有很多事东西着你玩 呵呵
    十二 关于jtag访真器
    jtag访真器现在用的多是简板的,一个244那种,用的没什么不好。
    按照并口定义不同分几种,建议选wiffler定义的,因为支持的软件多。这个网上多的是,不多说了。
    值得提的是有的jtag访真器原理图上有跳线用来使能复位信号,这个一般不跳上。就是不用复位信号,因为jtag协议里本身也可以控制44b0复位。
    当然,板子上的复位信号跳线也不用跳。
    十三 哪个公司的arm
    这个是问题比较简单。
    1 arm7主要就几个公司的
    三星,philip,atmel的
    atmel的有比较便宜的at91sam7s32 和at91sam7s64 专为8位应用产品量身定做,价格很便宜好象《3刀吧。和philip的21xx差不多,资料太少,项目中选还不错。
    其他两家上面说了的不多说了吧
    2 arm9
    这个玩2410和2440的多吧,现在2440还比较火啊 可以考虑买个了
    但是2410就比较便宜了,作为学习来说反到和不错,推荐整一个:)
    其实arm9用的最多的领域应该是消费电子,比如手机pda,而这上面用的多的应该是intel的和ti的吧。
    但是 intel的ti的入门材料少,价格高,自己看情况定吧。

  • 相关阅读:
    ASP.NET 缓存技术分析
    asp.net中两款文本编辑器NicEdit和Kindeditor
    VS2005,VS2008,VS2010将ASP.NET网站编译成一个DLL文件
    公共的Json操作C#类
    怎么把100多个EXCEL文件合并成一个
    C# ToString()方法一些特殊用法
    C# 将数据导出到Execl汇总
    ASP.NET MVC中在Action获取提交的表单数据方法总结
    vue实现锚点定位跳转(当前页面跳转,url不变)
    es6 去除小数点后,不四舍五入
  • 原文地址:https://www.cnblogs.com/tao560532/p/3288225.html
Copyright © 2020-2023  润新知