新闻  |   论坛  |   博客  |   在线研讨会
转载 “怎样学习ARM”
sdjntl | 2010-05-30 16:50:28    阅读:2662   发布文章
转载 “怎样学习ARM”
 

工作快5个月了,一直从事所谓ARM的开发工作,但是上午突然迷茫了,觉得自己不知道方向在哪里了,甚至怀疑自己这个所谓的ARM开发是不是真正的ARM开发,于是放下手头的事情,开始思考总结。

最初来到公司实习的时候我曾经迷茫过,不过我相信那个是踏入社会必须的思维方式,那时候觉得一切都是陌生的,没法一下子适应,还好后来慢慢缓过来了,那时候实习我主要画了两块板子,都是照着ARM开发板画的,根据光盘提供的原理图以及现成的板子来做我的PCB,那时候有一定的Protel基础,但是从来没有真正做好一块板子投入生产过,所以很快就完成了PCB的绘制,但是漏洞百出,在老总眼里应该是不堪入目的,不过他是个很好的人,没有批评我,反而是鼓励。我的实习好像只持续了10天,可能是我相对比较熟练的protel绘图技能和LPC方面的基础比较适合公司,我很快就加入了公司,开始了扮演我进入社会后的角色,因为是新人,那时候老总没有给我什么任务,就是让我先熟悉公司然后就是学习,这个时间持续了几天,后来我慢慢开始接触一些模块,起初是一个微打,很简单的东西,但是我以开始硬是没打出东西,再接着是LPC2368板子的熟悉和调试,先是建立一下keil的环境,因为之前在学校接触的是ADS,开始要转到keil上有些不适应,环境的建立花了几天的时间,然后就开始先运行一些他的小程序来熟悉流程,由于Ulink的问题用JTAG下载程序总是出现一些错误,后来不得不用ISP下载,这个没法在线调试着实给我以后的调试带来了一些困难,几天的调试LPC2368下来感觉它给的例程很垃圾,写的太差,完全没有周立功的程序来的有层次,简单明了,但是我还是硬着头皮啃了几天,还没等我完全消化这些程序我的工作才真正进入了一个有序的阶段。

上面给一个任务然后我花时间完成它,这样的有序阶段一直持续到现在,到现在为止我已经完成了所有的布置的任务,这几个月感觉自己找回了状态,也真正开始觉得自己适应工作了。最开始的任务是FM1702的读写,其实这是个非常大的任务,我是最后才体会到的,一开始我没法完成它,我第一个完成的任务是GSM模块的调试,后来就是韦根的解码、韦根协议同时处理4个读头、SPI接口Flash读写、最后回过头来完成SPI接口的FM1702的读写。然后在10放假之前完成了LPC2148核心板的PCB设计,并且发出去做了钢网。

    放假回来,可能是放假结束综合症的影响,也或者是一些外部事物的触发,还有老总的话,使得我开始思考一些东西,开始迷茫,这么久以来甚至以后我虽然做的是ARM的开发,但是我并没有什么很大的收获,我做得只不过是一些简单的模块控制操作,更具体点说就是用了一个高级的单片机来控制一些小应用,这样真的就是ARM的开发吗?我迷茫了,这样我的进步速度太慢了,时间在流失但是我却几乎在原地踏步,甚至不知道自己这样做的东西是不是真的所谓的ARM的开发。

    网络总是个很好的东西,我想知道什么才是ARM的研发,所以我上网,百度告诉了我答案,我开始知道自己以后怎样去做一个真正的ARM的研发工程师,总体可以分为4步:

硬件设计=》系统移植=》驱动开发=》应用开发

我现在做的更高级的单片机没错,但是我接触的这些模块以及一些开发板的设计调试工作正是为我的硬件设计做铺垫,以后一定会上操作系统,那么就一定要系统移植,然后在系统上做一些硬件的驱动开发,最后是应用开发,看来我的大方向没有错,庆幸啊!

    ARM学习硬件设计阶段所要接触的一些模块,我大致罗列了一下,除了一些ARM知道的基本模块重要的模块还有:USB、232/485、TCP/IP、CAN、SD/MMC卡、GPRS/GSM、GPS、RFID等等,去看一本书,好像是《ARM体系结构与编程》,一个重要的说明你基本硬件设计可以过关的标志是你已经掌握了所有ARM芯片所提供的功能,以一般接口丰富的ARM来说,他的功能有:IO操作、外部并行总线、定时器、中断、UART、RAM、Flash、PWM、AD/DA、I2C、SPI、I2S、SSP、USB、CAN、以太网TCPIP差不多这些,如果你用的是更先进的芯片,那么你要查看芯片手册,看看他提供了那些资源,如果你熟练掌握了所有的资源应用,那么你硬件设计应该就是游刃有余了。然后是系统移植阶段,公司一般采用ARM7内核的芯片,那么移植的系统一般不会逃过UCOS-II或者uCLINUX,前者我现在在看,如果系统升级了,用上了ARM9的芯片,从开源的角度看,linux一定是移植的不二选择,如此我们就要去学习linux,学习linux的方法是:使用linux系统=》linux系统编程开发=》linux驱动开发=》linux内核分析,可以参考一些书籍:《深入理解linux内核》、《情景分析》、《源代码》。上了系统之后接下来做得就是驱动的开发了,比如在linux系统下的SD卡驱动开发,还有FM1702驱动开发等等,做好了硬件平台,移植了系统,学好了驱动,等于就是处于一个只欠东风的状态,接下来我们做的就是最后的工作,上层应用软件的开发,经历的这是个阶段,你才是真正的ARM嵌入式研发工程师,努力吧!

*博客内容为网友个人发布,仅代表博主个人观点,如有侵权请联系工作人员删除。

参与讨论
登录后参与讨论
zhangfeioo  2013-03-05 13:05:51 

不错的

在路上
最近文章
ARM的开发步骤
2010-05-30 17:13:59
LPC2XXX系列问答(二)
2010-05-30 17:08:12
LPC2XXX系列问答(一)
2010-05-30 17:07:28
推荐文章
最近访客