嵌入式ARM Linux开发的软硬件方向选择

知识经验 5579浏览 5评论

嵌入式ARM Linux在这个科技高度发达的今天,相信很多在校学生停留在51单片机上的种种应用开发,做一个小玩意,获得个好名次,这在无形中增加了对单片机的理解和认识,对以后的工作奠定雄厚的基础:汇编语言的使用,可以让你在ARM Bootloader的开发上如鱼得水;各种外围器件的使用,可以让你在应用开发中如沐春风。但是,如果仅仅停留在这个阶段,或者说停留在低端单片机的开发应用上,拿到手的“金子”也有限,这就需要你踏入更加广阔的电子领域---嵌入式开发。现在最流行的是“ARM+Linux”构架,如果在这条路上你走的比较远,那么,这对你的生活质量的提高也大有帮助。

由于“ARM Linux”构架的嵌入式开发范围很广,如果想全部掌握,需要懂Linux使用、Linux内核、Linux驱动、汇编语言、C语言、C++、PCB制作、硬件电路设计……,我一直以为贪多未必是好事,所以建议进行嵌入式ARM的开发 分为两个方向:一、偏向硬件,二、偏向软件。

硬件

首先来说下偏向硬件。在这个方面,要从硬件设计入手。

第一、设计最小系统板:由于ARM的启动方式和单片机有很大差异,建议搞一个Flash,SRAM或SDRAM、CPU、JTAG、和复位信号的小系统板,留出扩展接口。这时,你可以参考一些成熟的设计,来进行设计,像论坛中STM32等等都可以。如果使最小系统能够正常运行,你就是很厉害的,毕竟在这方面硬件设计会有一些难点,比如内存等、长线等等。

第二、 写启动代码,ARM启动会使用Bootloader,这时可以参考一些Bootloader介绍,自己琢磨写出简单的Bootloader,完成一小任务,这会使你的信心大大增强。在设计Bootloader时,你的汇编功底会让你左右逢源。

第三、仔细研究你所用的芯片的资料,画外接板,进行功能的扩展,将你之前的单片机资源可以搬到这里,通过写相关的裸板程序,可以实现从单片机向嵌入式ARM方向的转变。

第四、多学习针对该芯片的DEMO板原理图。先将原理图消化,对该芯片的设计做到心中有数,对常用设计达到随手画出。

第五、学习多层板的绘制和布局、走线等。布线时要先布数据地址线,和需要保证的高速线;当涉及的CPU速度达到很高或者信号的频率很高时, PCB板上的走线都要看成传输线。传输线有其特征阻抗做好阻抗匹配和防干扰处理。在设计四层板时,通常外层走信号线,中间两层分别为电源和地平面,这样一方面隔离了两个信号层,更重要的是外层的走线与它们所靠近的平面形成称为"微带"(Microstrip) 的传输线,它的阻抗比较固定性能得到保障。

如果板子资源比较多,需要用6-10层板进行绘制,那么相应的层有推荐设计,可以参考PCB资料四层六层板设计。

如果你能完成以上五个基本的步骤,那么你已经踏入了嵌入式开发的硬件世界,以后的发展,就考自己的修养了。

 

软件

说完硬件,理所当然的要说说偏向软件方面了。

据我所知,偏向软件的嵌入式开发可以分为以下三个方面:Bootloader设计嵌入式驱动开发嵌入式应用开发。如果嵌入式跑现在流行的安卓系统,也可以把安卓开发分配到嵌入式应用开发吧。

首先说下Bootloader开发,前面说道,嵌入式的启动和单片机的启动有所不同,需要有个Bootloader引导,在Bootloader中实现一些硬件的初识和引导嵌入式进入Linux系统或者C语言Main函数,总而言之,这个Bootloader是个很重要的内容,如果想在这方面进行发展,需要有雄厚的汇编语言设计功底,需要对ARM内核的工作机制非常了解,相比硬件设计来说这个有点难度,毕竟有些玩意是需要自己慢慢琢磨的。

现在我们常听说的就是嵌入式驱动开发,工资待遇也是杠杠的!相信很多人也想从事这方面的工作或者正在向这方面前进。那么恭喜你,只要有足够的毅力,月薪几W的工作就在你面前,但是在这之前,需要经历层层的磨练:Linux内核机制,Shell编程、Makefile规则,硬件数据手册和电路连接Linux驱动工作流程,简单应用程序的编写(一次测试驱动)……不过有牛人说过,在嵌入式驱动开发的路上,要么登上山顶,要么滚进深渊。据我所知,在一家公司里,做驱动开发的经常是做应用开发的1/5---1/8,足见其功能。

对于应用开发,相信大家都很愿意去做,只要活得驱动的接口函数,明白其中道理,有足够的时间编写、调试、完善和优化代码,你就是一名优秀的嵌入式应用开发工程师。不过基于Linux的图形界面开发,现在变得火热:像QT编程了、安卓开发了等待都脱离了Linux的形式,但是,这又给码农们有了新的发展空间,据我所知,工资待遇也是很客观的。

最后用一个图片来总结下嵌入式开发的前世今生吧:

浅谈嵌入式ARM开发的前世今生

发表我的评论
取消评论

表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

网友最新评论 (5)

  1. 谢谢站长推送的文章。本人从事硬件设计,主要是SMPS的设计,现在想转嵌入式的硬件方面来发展,看到这篇文章,很是欣慰!
    Allison 4年前 (2015-01-25) 回复 编辑
    • 嗯,可以多看看其他文章,应该也有帮助。
      VeryARM 4年前 (2015-01-26) 回复 编辑
  2. 3Q 站长给我指明了方向,本人目前什么都设计在做,都懂,但是时间不多,不精通
    哦_我就是砍哥 3年前 (2016-01-11) 回复 编辑
  3. 不过我个人认为,安卓APP是跑在虚拟机上的,效率不高,在资源有限的嵌入式系统里,应该不是发展趋势吧?不知道对不对
    哦_我就是砍哥 3年前 (2016-01-11) 回复 编辑
  4. 大家什么看法?我先支持
    黄语芙 3年前 (2016-01-23) 回复 编辑