微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > ARM技术讨论 > 对51转到ARM新人的一些建议

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

时间:10-02 整理:3721RD 点击:
很多人在问51转到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差不多,关键还是各种外设的寄存器操作。

谢谢指导!我最近也在想这个

不客气!

能用库就用库,有一些东西比如TCP协议栈自己很难赶出来,还可以学习别人的编程方法。至于小型操作系统更是经典程序,如RTX,UCOS等,效率很高切换很快,其实很简单的,用上后会使得编程非常简单。

受用了,谢谢小编分享~~~

谢谢小编分享经验。我也想学,现在是学的是STM32,看你的分享介绍,STM32也都是GPIO口之类的,感觉和ARM差不多呢?  另外懂的是,看别人都说的学ARM要涉及什么交叉编译之类的,还有会用linux编程,就是一直不理解,linux在嵌入式里起的作用在哪里,该怎么入手学ARM

我也是个菜鸟,稍微懂一点,说说看吧,欢迎大家指正。linux是一个操作系统,就像你电脑是windows系统,手机是Android或者IOS系统,linux是嵌入式开发中常用的操作系统。为什么用操作系统,裸机不也跑的飞起吗?个人理解操作系统就像一个大管家,协调各个进程,让CPU达到最大利用率,系统是别人订的一个框架,你把你想执行的各个任务交给系统,系统帮你更好的管理。交叉编译器是为了在电脑上可以跑的程序也能在arm上跑,电脑是x86架构,arm是arm架构,所以要交叉编译。说的感觉好乱,请高人指点

谢谢了谢谢了谢谢哦

xiexiexiexiexiexiexiexiexiexiexiexiexiexiexiexiexiexie

感谢小编  受教了  

基本上是这样的

thanks for 有人 sharing

受教了,自己摸索怎么学习

写得不错,谢谢

ARM就是这些,不过大牛都是直接搞寄存器

多谢小编了,我也是刚从51转arm的。

初学者过来看看

说的有道理,赞一个~~~~~~~~~~~~~

此贴很有用,给初学者提供了很好的建议。

受教了,以后还要多多学习了

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top