每个人都经历过初学阶段,有些很顺利,有些则很曲折,有些甚至还在徘徊!更有一些感叹!那就都在这说出来吧,说说自己的经历,自己难忘的经历!当作是一种回味,也给后来人一些经验和教训!
新手也要抓紧时间,有什么想请教老手的,也都再在提。另外这是一种学习方法的探讨,不是具体问题的解答,所以请不要问具体的什么如汇编语法之类的具体问题,这些还是自己踏踏实实的系统的学习课本吧,或让老手教您怎么去学,应该学哪些。
* - 本贴最后修改时间:2007-10-18 13:47:27 修改者:阿南
若有了相关的知识,建议先上ARM官网下载一些ARM的基本文档资料。了解一下ARM的结构体系,知晓ARM的几种版本和相应的典型结构。在此基础上可以购买一套开发实验系统(根据自己的经济实力和系统的适用性来选择),再根据具体的系统下载相应ARM芯片的资料,结合开发系统所提供的资料先从汇编入手做一些小实例(不要太大)。等到汇编和系统硬件都比较熟悉后就可转入用C编一些小软件,尽量搞得有趣些以便提高自己的兴趣。
到这个程度就可以试着接一些小的项目来练手了,从制板到在上面裸奔,等你做完了会发现ARM入门并不难。
接下来就要考虑上OS了,先可以考虑那些适合在ARM7上跑的系统。由于OS涉及到软件技术的方方面面,建议先搞一个简单易加载的系统,利用它真实了解一下OS的作用和基本功能。等到对OS的剪裁,加载和调用已经有了相当的了解就可以转入到基于多进程的当前流行的OS上来。
HWM
开始接触ARM是在2006年,那时还在大学,老师给我的毕业设计题目:《ARM嵌入式系统的bootloader编程》,原因是因为俺之前的单片机成绩还算相当不错。然后就开始学习,查资料。。。
有一本书对我的帮助最大:《ARM体系结构与编程》
这本书一直到我工作后才发现在公司里基本上是ARM嵌入式开发工程师人手一本。这在我工作之初给了我很大的信心——俺们大学看的书也不是完全没用啊--!
我的学习过程大致如下:
1.ARM汇编。不用记住汇编指令,只求能看懂,甚至只要能翻书看懂汇编程序即可。重要的是在学习ARM汇编的过程当中了解了ARM体系结构的过程:
CPU的几种模式极其作用,R1-R15的作用,CPSR,SPSR...
2.简单的程序编写以及编译。使用ARM汇编和C编写一些小的代码,一开始可能无从下手,可以去参考别人的代码,看他们是怎么写bootloader的,看他们的C和汇编是怎样混合编程的。还有,编译也是同样重要,一开始,通过书本以及ADS的集成开发环境能编译出简单的目标文件。这里了解了-ro-base,-rw-base,-first,-entry的作用,同时了解了汇编语言中的AREA以及ENTRY的用途。
3.项目需要,发现内存安排不太合理,需要分散加载,而后开始学习分散加载技术。这时才发现ADS12自带的文档是多么的全面——我想知道的里面都有。
4.工作后开始接触上万个文件组成的大项目,这时使用的编译方法已经不再是集成环境了。于是学习了makefile,同时学习了ADS12的编译器的命令行用法。
5.工作中,一边工作一边学习,逐渐深入的了解了分散加载,bootloader,Flash Driver,Makefile等。
6.现在,依然在学习中,我的OS还在构建中,multi-task,POSIX。。。。
我的几点建议:
1.看书《ARM体系结构与编程》,这可以说是ARM圣经也不为过。
2.ADS12的文档。在安装ADS12时选择"FULL"完全安装,然后在安装目录下会找到PDF目录,里面的文档都相当详细。重点推荐:ADS_AssemblerGuide_B.pdf
ADS_CompilerGuide_D.pdf ADS_LinkerGuide_A.pdf三个文档,英文的,慢慢嚼,会有收获的。
3.看书过程中可能遇到不懂的,问!问不到?跳过,看后面的。这样反复看,当一本书被你这样看几遍后你会发现值得你问的东西会越来越少,最后你甚至会发现:这书上居然有错!这时,恭喜你,可以对这本书说:俺懂你了。。。
4.对于分散加载和编译器的命令行格式,还有Makefile,我强烈建议立志于走这条路的兄弟一定要不畏艰难的啃下他们,当你啃下他们之后请再回头看看以前走过的路:一览众山小的感觉就是这样了。
5.加强各个知识点之间的联系。比如分散加载通常和bootloader有关系,也和汇编有关系,还与连接器有关系。如果能做到一个点一个点的联系起来,而后形成一个知识面,那么相信你的进步会非常迅速的。
6.ATPCS,当你不满足于简单的写汇编,简单的写C,当你想自己写一个OS出来的时候,ATPCS就是你需要了解的了。通过他,我们能进行汇编,C,C++的混合编程。呵呵,有了汇编和C还有什么做不到的呢。。。
以上只是我的一点小小建议,如果认为不对,全当一阵风吹过。。。。。。
wishcom
一 首先说说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的了。 |