目前,嵌入式处理器常见的有ARM、PowerPC、MIPS、Motorola 68K、ColdFire,但ARM占据了绝对的主流。作为一家不生产芯片的芯片厂商,ARM却在全球范围内支撑起了各种嵌入式设备、智能手机、平板电脑、智能穿戴和物联网设备的运行,同时,ARM很早就开始“入侵”传统X86架构处理器坚守的高性能计算终端市场了。高性能、低功耗、低价格、丰富的可选择芯片、广泛的第三方支持与完整的产品线和发展规划使得ARM大量涌现在人面前,那么作为初学者又该如何学习ARM呢?
密不可分的单片机
ARM嵌入式和单片机学习有着密不可分的关系,可以抛开复杂的软件结构,先掌握硬件操作。ARM与单片机是有着许多区别的,相比来说ARM要比单片机复杂的多。据某位知乎大神表示,往往单片机只需要对一个寄存器赋值即可初始化,而在ARM下就要调用库函数,另外,每个引脚其功能都多了许多,相应的配置也会更为麻烦。但如果有了丰富的ARM的项目经验就会发现,其实它的应用配置也是千篇一律,有章可循的。
著名专家韦东山也曾强调,不要再用老方法学习单片机和ARM。他表示,学习单片机是没有前途的。一是因为单片机太简单,工作十年与两年技能差别不大所以企业更偏向选择薪资较低的新人,二是因为单片机的价格优势正在逐渐消失,目前智能保持微弱的优势就是稳定性这一特点。如果单片机和Linux都想学,在单片机->bootloader->Linux系统/驱动->APP(QT)这条学习线路上可以使用同一套开发板。首选三星(SAMSUNG)S3C2440、S3C6410、S5PV210、Exynos4412;其次是德州仪器 (TI) AM437X、AM335X;然后是飞思卡尔(freescale),iMX6;还有其它国产芯片:全志、瑞芯微。
ARM的学习方法
学习嵌入式难点不是在学,而是很多人就在入门这一关就卡死了。觉得学的没头绪,是因为你学习方法不对,首先,你应该要有目标,要学到什么程度,要从什么开始学起。
据知乎大神讲解,在学习初期第一先看关于ARM芯片的Mannual;第二找一本关于内核的不错的书,比如,想学Cortex-M3的话,《The Definitive Guide to the Cortex-M3》是很不错的。看这书的时候不需要全部掌握,只需要当做一本参考手册来读就好,知道在开发过程中遇到什么问题来这里哪一章找解决方法即可;第三买一块开发板(上文所推荐的),参考板子带的全程进行调试;第四自己跟项目,或者自己搞点开发,例如开发一个小智能小车之类的,学习总得有点儿投入。
Linux作为重要工具,在不明白Linux的情况下,ARM的学习也将面临瓶颈。目前嵌入式Linux领域稀缺的Linux移植到某个新型号的开发板上,能写Linux驱动程序的人,熟悉Linux内核裁减和优化人。现在公认的Linux的入门书籍是“鸟哥的私房菜” ,讲得很全面,鸟哥的私房菜一共分为两部,一部是基础篇,一部是服务器篇。
当然,有知乎大神也推荐看ZLG公司的arm启动文件startup.s还有就是arm公司的官方网站(这里都是最权威的东西),有一定基础了之后,建议试着写一些驱动,最后,根据自己的需要编写代码。“相信你不是一个人,推荐某些论坛,里面的高手很多,应该能帮到你。”论坛学习也是非常明智的方法。相信总有一种方法是适合你的,但若想真正掌握好一门技术总是要付出一些艰辛的。
要知道为什么学?要知道学的是什么?要知道怎么学?要知道学了如何用?最后还要知道用的时候出了问题该如何解决?相信以这些问题为线索的学习过程一定可以帮助大家快速成为一名优秀的嵌入式开发工程师。