本人学的电子信息专业,对51单片机比较熟悉,现在想学习ARM,但不知道如何入手,请过来人指引下方向,去其他地方复制一些长篇大论然后粘贴到这来就不必了。以下问题很困惑
1.学51是从内部的硬件资源入手,然后学习指令,ARM应该怎么学?初了硬件资源,指令,还有哪些东西要学,操作系统与ARM是什么关系,这点概念很模糊。
2.学习单片机可以选择从51或者AVR入手,ARM是不是也有这样的分类?如ARM7,ARM9
3.关于ARM的应用方向在学习中是不是需要考虑,不同的方向在学习是不是要有侧重点?
请高手给予指点,万分感谢
beyond18wu,我以前也学过ARM,建议
最好先找几本书看看,ARM7是最基本的,一般不跑操作系统,如果要跑操作系统的话也是μcLinux。现在ARM9用的比较多,一般可以跑Linux,Windows CE,如果真想学到东西,是要买块学习板。
在学习一些简单的程序.这个很容易理解,然后参考我们编写的驱动程序,在没有操作系统的情况下.自己编写一些最简单的驱动.接着要看arm体系结构的书,适当学习汇编,但不需要花太多时间. 然后尝试自己写全套的驱动和应用.这个过程要4个月左右.然后你可以学习uclinux,根据基础不同时间也不一样,如果没任何基础,估计要半年时间.最后补充一句:没有压力你什么也学不会,最好自己去接个小项目,这样比较容易真正学会ARM
最后beyond18wu祝你学有所成,早日精通ARM
-------------------一下是我帮你网上找到的--------------------
手一:
1把arm当超级单片机用,一个高手的观点,初学者不能跟着学,学习为了什么,为了更好的使用,如果当一个超级单片机学习那你什么都学不到,你看周立功的easy arm好是好,提供了很多模版,但学了半天感觉还是51。为了好好学arm还是从头学把引导程序,终端看仔细了,很多人连lpc的时钟配置也不明白,但敢说他会arm,我曾进也是其中一员。
2我只对硬件感兴趣,arm已经把硬软件的界限打破,如果还硬件管硬件,软件归软件,那你还不如回到51,arm是能同意处理多任务系统,51就不行了,你不在软件上下功夫,那你对不起arm 以上仅是比人愚见,一起讨论
高手二:
连硬件的io口以及外围设备都没有精心设计过,谁会相信你做的软件可以紧贴硬件,得到最佳的工作效率呢?
如果小的嵌入式系统都沉浸在用高速io口模拟什么时序,谁又能保证你能将arm所有的潜力发挥出来呢?大家知道,如果用io口模拟会使指令流打差不多10倍折扣。
现代mcu都是基于编译器原理设计出来的,我们在做设计时必须兼顾软硬件两个方面,不能将二者完全分开。
arm内核那么多层的代码运行级别本身就给我们工程师许多想象的空间,我们为什么不发挥一下呢?
高手三:
对于一个有8位单片机基础的人,将arm作为超级单片机来作入门学习,我觉得没什么不妥,学习由浅入深挺好的。对于这个人来说,他最熟悉的是原来8位的单片机,刚接触ARM的时候先撇开操作系统又暂时不去管bootloader的操作,那么就会发现其实arm和8位单片机操作起来其实是相似的。等到了解一些内容后,再进一步去学习boot、学习操作系统那相对就会容易一点了。
51也有人拿来跑操作系统,不过估计是玩的成份居多,而AVR跑操作系统则是有实际应用的。一个人的精力有限,不可能什么都面面俱到,总该有一个侧重的方向。做一个项目,通常需要一个团队,这个团队里面有软件工程师也有硬件工程师,大家各司其职,又相互配合。搞软件的人懂一点硬件会对写程序有帮助,搞硬件的人也应该懂一点软件。软件工程师可以专门负责操作系统里面的任务处理,硬件工程师除了完成硬件电路的设计外还需要编写一些硬件驱动程序。如果一个软件工程师不知道什么是串口,那么他就可能会不理解用串口发送数据和普通I/O操作有什么不一样。如果一个硬件工程师没有地址的概念、不知道数据位宽,那么他就可能不会理解给ARM系统接一块16位的FLASH的时候地址线为什么要偏移一位。
文章评论(0条评论)
登录后参与讨论