哈哈,之前在一个台企工作,说是做开发工作,但是没学到真正的什么东西,然后果断跳槽。找工作的路艰辛啊,由于知识能力有限,整整找了一个多月,没有放弃,最终找到了目前的这份工作,一个纯做开发设计的企业,算是运气好吧。所以这里给那些在迷茫的刚毕业的或者再找工作的一个建议,如果觉得目前工作学不到啥东西,果断跳槽。找工作也不要放弃,幸运女神会观临你的。
来公司我主要是做ARM程序这块,刚来的时候傻的要死,ADS开发环境不会用,JTAG仿真也不会用,C语言基础也不好,刚开始的时候写个程序,老想着以前的程序,结果抄过来,发现什么都不行(其实是本人c不过关),反正很笨很笨了。最后我们领导也好,耐心的一步一步教我。首先叫我看那边杜春蕾的《ARM体系结构与编程》,这本书比较老了,主要基于ARM7的,但是ARM7作为入门还是蛮不错的。首先看了ARM的体系结构,就看那些很基础的东西,工作模式啊,寄存器啊啥的。然后是存储系统跟异常中断这两个很重要。当然,对应初学者来说可能会看的很模糊,要反复的看,不一定要全看到,但是头脑中要有个印象,等后面实践中遇到了要能懂。这部分应该在3天内看完。OK。
其次,一定要有开放板,没有开发板,那你就别学了。我个人建议先使用简单ARM7处理器,我用的就是AT91。有了处理器,你就要去官网下这个处理器的资料,包括手册,函数库。下好之后,你就看这些资料,最好是看官网的英文资料,先稍微了解下这款处理器。
然后,使用开发环境新建一个新的工程,程序可以很简单,比如main()函数里面弄个死循环就好,这里主要是让你学习使用这个开发环境,把程序编译通过。比如用ADS1.2,网上有很多资料,新建工程这些都很简单,主要是设置,简单的模式下是设置RO,RW地址,entry address,复杂的是写分散加载文件。对于这些你又得回过去看书了,《ARM体系结构与编程》里都有,必须了解RO,RW地址是啥意思,书里面ARM编译器,连接器,ADS的使用这几章要好好去看看,当然,网上有很多资料,设置很简单。但是你必须知道原理啊,不然换个处理器,换个编译环境,你又不会用了。现在假设你设置都搞定了,都弄懂了,或者模糊的懂了,接下去编译成功。
再然后,你可以写程序了,首先建议去看描述处理器的头文件,里面有寄存器的定义啥的。头文件必须去看,了解他的结构,很重要。现在写个很简单的程序,点亮LED。这里需要说明的是一般官网有驱动程序库,有例程,你直接拿过来用就好了,比如PIO口,直接拿PIO口的驱动来用,来点个LED。程序写好了,设置工程,编译通过。
接下来就是,使用仿真调试和程序固化了。我是用的JTAG调试。用的J-link仿真器。上电,连好仿真器,点击AXD调试,你就可以进行仿真调试了,这部分怎么做网上很多。程序固化也是,我使用的是J-flash软件,这里网上也很多。假如你以上都搞定了,那好,继续写一些程序玩。
现在开始搞中断,之前不是看过书了吗,现在再好好的理解下。什么是异常中断向量表?异常中断的过程?这部分你的看启动文件了。ARM7的启动文件还是很简单的。你要想了搞定,必须把启动文件搞定,不需要每句话都看懂,但是结构还是要弄懂的,之后中断的机理你就明白了,之后遇到的处理器中断都差不多是哦一样的。弄懂了之后,你可以开始写中断ISR程序,可以是按键中断,定时器中断。把中断搞定,你离入门不远了。
再来巩固下存储系统的知识,ADS工程设置时,使用分散加载模式。具体还是可以看《ARM体系结构与编程》,如果那处理器有重映射功能,可是试试重映射。
最后,你可以根据需要的外设开始编程了,注意,尽量使用库函数。
接下来,你就慢慢的在项目中成长,我是这么走过来的,大概就2个月的时间,后来又搞了FPGA软核,SMT32,现在过来也半年多了,遇到很多问题,要多像前辈请教。多动手。同时基础很重要,要狠狠的抓,现在差没关系,那就开始狠狠的补。
这是本人学习ARM入门的一点小小经验,可能不值一提,我也不知道对初学者有没帮助,写写下来分享一下,同时也互相学习探讨,共同进步。高手们别取笑我啊,哈哈。
有人愿意一起学习的可以加我qq(714464626) |