打印

对51转到ARM的新人的一些建议。

[复制链接]
46117|211
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
w00d|  楼主 | 2011-1-10 22:31 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
看到坛子里有很多人在问51转到arm该如何如何。。。我说说自己的经验吧。
我以前一直用的是51,不过一直是C51,对C已经有10多年的经验,汇编用的很少。后来因为项目需要转到了arm。一开始对arm什么都不懂,看了本《arm体系结构与编程》也是云里雾里的。但是也许是因为无知者无畏吧,我直接就在mdk中建立一个工程,添加了自带的启动文件,然后做了个main函数,里面一个死循环没有操作任何硬件,居然跑起来了。然后以此为基础,慢慢的开始控制GPIO和串口通信,当时突然发现,我的项目不就是搞搞这些吗?其他的什么运行模式、什么链接寄存器、什么PC寄存器关我鸟事,我只要能控制外设就行了。至于它是怎么实现的,那是编译器和链接器的事情。
现在回头想想开发arm还是很简单的,特别是使用mdk的话,会c也就能做一些简单的开发了。不要被那些稀奇古怪的东西给搞糊涂了。边开发边学习,项目做深了,那些东西自然就懂了。我们公司来了新人,我一般就叫他做个简单的东西,比如按键、串口等,做完也就差不多会了。
罗嗦这么久说几点建议吧:
1.arm的汇编没必要去精通的,能够大概看懂就行了。我一般在调试的时候才需要看看。如果一个速度要求苛刻到需要你使用汇编的话,我认为可能你更需要的是转变思路,修改算法。比如使用查表代替计算等。我做了5年arm开发,完成了n个项目,至今没写过一句汇编。
2.工业控制方面因为有实时性和成本要求,我一般不使用操作系统,但我会自己实现一些内存管理,事件管理,邮箱之类的东西。这些需要时间积累,平时写程序注意尽量通用化,然后建立自己的库,以后再用就爽了。以前使用过一些操作系统,发现并没有提高我的开发速度,而且还造成了调试困难的问题,出了bug找都没法找。
3.对于公司来说,如果项目很大需要用到操作系统、网络、gui、文件系统等,自己做还不如直接买个板子,人家都已经做好了,而且bug很少,自己只要做应用就行了。量大的话还可以定制,算上开发成本,可能更便宜。如果你是个人兴趣,那当我没说。
4.现在对于外设一般都有现成的库,我建议能不用还是不要用吧。因为想要用好这些库,你必须对外设寄存器比较熟悉才行,这时候你自己写一个就行了,而且简单的一个寄存器赋值,函数库往往需要调用一个函数来实现,太奢侈了。但是对于运算库还是要用的,比如DSP库等,毕竟人家写的肯定效率要高点。
5.用好中断,这对51和arm是一样的。能用中断的地方绝对不用轮询,中断是单片机的灵魂,你的所有程序都应该围绕中断展开。
6.学好C语言,注意形成自己的编程风格,起好函数名和变量名,多写注释。不要怕麻烦,这些很重要,我一直认为最好的程序风格是使人不需要看注释就能立刻理解程序的意思也就是:程序即注释。我有时候会写出a=b-2-1之类的东西,不要认为这很傻,其实是因为2和1分别代表了两个东西,你直接写成3就给理解增加了难度,而且这也不会降低效率,编译器会把它翻译成a=b-3的。
7.对于C语言多罗嗦一句,用好指针,如果说中断是单片机的灵魂,那么指针就是C的灵魂。
总之一句话,做arm和做51差不多,关键还是各种外设的寄存器操作。
评分
参与人数 12威望 +14 收起 理由
shuidi_wangdan + 1 赞一个!
JerryWu75 + 3 很给力!
logokfu + 1
dgun + 1
曹鑫曹鑫 + 1

查看全部评分

相关帖子

沙发
zdl_775| | 2011-1-11 11:36 | 只看该作者
:P经验之谈  ~~~~~~~~

使用特权

评论回复
板凳
wangkj| | 2011-1-11 14:36 | 只看该作者
老潜水员,是否原创?我给你推荐到酷帖了。如果是转贴请尽快说明。否则别匠人姐姐打pp.

我在google没搜到,应该是原创。


俺补充一点,51用习惯keil的,arm用起来也很爽,我就是这样用的。

使用特权

评论回复
地板
古道热肠| | 2011-1-11 17:33 | 只看该作者
呵呵,是这样的,先把MDK的例子调出来编译下载看看结果,然后在其基础上扩充功能,当发现异常或功能无法完成了,带着问题去找答案,您会发现ARM也是单片机。

使用特权

评论回复
5
w00d|  楼主 | 2011-1-11 20:06 | 只看该作者
感谢wangkj加酷,潜水这么久,随便说点,都是自己的切身经验,不要见笑。

使用特权

评论回复
6
wangkj| | 2011-1-11 22:46 | 只看该作者
:lol 原创就好,得这匠人姐姐的礼品吧。

使用特权

评论回复
7
cjf0304| | 2011-1-12 08:48 | 只看该作者
很好 很受教呢

使用特权

评论回复
8
xiaovwei| | 2011-1-12 10:02 | 只看该作者
指针是C的灵魂!深有体会!

使用特权

评论回复
9
w00d|  楼主 | 2011-1-13 22:41 | 只看该作者
有人说指针是C语言的魔鬼,当我写程序的量还在1W行以内的时候,我也是这么认为的,后来随着写的程序越来越多,看的书也越来越多,对于C语言也越来越有感觉的时候,我发现它是C语言的灵魂。它就像一把双刃剑,在庸手的手中不能杀敌反倒伤了自己,在一个武林高手的手里却是杀敌立功的利器。近几年写C程序一直使用的是OO的思想,靠的就是指针。

使用特权

评论回复
10
luddle| | 2011-1-13 23:06 | 只看该作者
我也是个刚从51转ARM的新手~~~对我启发很大啊

使用特权

评论回复
11
shihun009| | 2011-1-15 21:01 | 只看该作者
:)

使用特权

评论回复
12
shihun009| | 2011-1-15 21:02 | 只看该作者
:)

使用特权

评论回复
13
mark111111| | 2011-1-16 21:11 | 只看该作者
如果说做到项目管理方面就可以了,但是我喜欢做技术,不想做什么管理

使用特权

评论回复
14
w00d|  楼主 | 2011-1-17 22:05 | 只看该作者
玩技术可以,一般的公司领导层也支持,但是有一点,不要和项目进度相矛盾。

使用特权

评论回复
15
eyue| | 2011-1-17 22:10 | 只看该作者
同感~~~!

使用特权

评论回复
16
xvbct| | 2011-1-18 12:41 | 只看该作者
对于公司来说,如果项目很大需要用到操作系统、网络、gui、文件系统等,自己做还不如直接买个板子,人家都已经做好了。对于我们个人来说,也许我们要进入到这个卖板子的公司啊,人家要求要系统,我们不是还要学吗。

使用特权

评论回复
17
lyk07351| | 2011-1-18 16:20 | 只看该作者
刚刚入门的小鸟,看着很是有感觉

使用特权

评论回复
18
kyzb001| | 2011-1-18 17:16 | 只看该作者
恩恩,我也刚从51转到ARM不到半年。 LZ写的很好,启发很大。

使用特权

评论回复
19
accelink-yy| | 2011-1-19 12:15 | 只看该作者
好贴,顶一个,哈哈~~

使用特权

评论回复
20
armmage| | 2011-1-19 17:22 | 只看该作者
工作4年 ARM玩了3年 要我写写总结的话 也跟楼主差不多   顶一个 !

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

4

主题

19

帖子

2

粉丝