怎么选购arm嵌入式开发板

来源:快飞出国留学 浏览:453 发布日期:2023-02-11 15:30:27

arm嵌入式开发板是半导体行业分工合作的载体之一,它为开发产品的厂商提供基本的底层硬件、系统和驱动等资源,使得用户不需要再投入人力和时间来完成这些底层的工作。那么怎么选购arm嵌入式开发板呢?

一、选购建议

以嵌入式开发板的功能和作用作为出发点,嵌入式开发板选型应该从以下三个方面来综合考虑:

(一)开发板的硬件设计是基本照搬半导体厂商的参考设计,还是充分为国内厂家生产制造、产品上市等方面考虑。

半导体厂商专注于芯片的设计,对参考设计的投入一定不会像开发板的厂商一样,能够做到专注专业。国外芯片厂商的工程师,在做参考设计的时候,习惯上会采用在本国使用比较多的外围芯片。这样,半导体厂商的参考设计对国内厂商提供的参考价值有限。

所以,在选择开发板的时候,无论是出于最终产品的性能和功能考虑,还是为后期能够更加方便地制造生产,用户一定要擦亮眼睛,仔细对比一下供应商提供的开发板是不是更加适合自己的产品研制和生产。

(二)开发板的软件是否支持完善,是否能够支持所有开发板上所有的硬件接口。

开发板的价值就在于,能够让用户节省在系统、驱动等方面的投入,专注于使产品形成差异化的上层软件的开发。如果供应商提供的开发板,板级硬件接口没有对应的软件驱动的支持,用户的开发进度就会受到影响 。在购买开发板的时候 ,一定要确认清楚 ,是不是所有的硬件接口都有相应的驱动,开发板是不是拿到手就能够马上用来做开发。

(三)供应商的技术支持力度如何。

嵌入式行业是客户研发和售后支持具有高度互动性的行业,供应商的技术支持有时就会成为用户产品上市的关键因素,在供应商的技术支持能力方面,一定要慎重考察。

考察一个供应商能不能提供充分的支持,一个有效的方法就是到这个公司的技术支持论坛上看看。在论坛上,用户发贴询问的问题,是不是能够及时得到回复。没有专业的支持团队的公司,没有办法为用户提供及时的支持。用户在论坛上发贴询问,有的厂商一个月才给用户一个答复,有的甚至不予回答。

是否能够提供完备的技术支持,是一个开发板公司是不是专业的开发板公司,是不是能够发挥在产业链上承上启下的作用,是不是能够为用户创造价值的重要标准。这个道理实际上应该很浅显,开发板厂商的入门门槛并不高,只要有硬件设计能力,参考半导体厂商的参考设计,就能够推出开发板产品。如果不能够为用户或者不给用户提供技术支持,这样的厂商能够为用户提供的就只是一个硬件板子,供应商所获得的利润也是很高的,因为这些厂家的成本只是开发板的硬件成本和销售成本;专业的开发板公司,需要承担的研发成本、售后支持成本、运营成本和销售成本均摊下来,不一定有非专业公司的盈利高,市面上开发板的价格为什么会有那么大的价格差别,原因也可见一斑。

总之,用户在购买开发板的时候,选择的不是开发板,而是为自己提供服务的合作伙伴。开发板的价格是公司服务价值的体现,所以目前很多追求最低价开发板的消费理念是偏颇的。选择开发板,选择一个为自己服务的公司,一定要慎重。在半导体行业里面,开发板厂商就是衔接上下游厂商的链条。质量上乘的链条,能够快速地将用户送上新品促进市场良性循环的金光大道;劣质的链条,关键时刻,掉链子了,用户需要修修补补,就会被竞争对手赶超,再好的产品创意也会逐渐失去价值。

二、入门建议

第一,学习基本的裸机编程。

对于学硬件的人而言,必须先对硬件的基本使用方法有感性的认识,更必须深刻认识该硬件的控制方式,如果一开始就学linux系统、学移植那么只会马上就陷入一个很深的漩涡。我在刚刚开始学ARM的时候是选择ARM7(主意是当时ARM9还很贵),学ARM7的时候还是保持着学51单片机的思维,使用ADS 去编程,第一个实验就是控制 led。学过一段时间ARM的人都会笑这样很笨,实际上也不是,我倒是觉得有这个过程会好很多,因为无论做多复杂的系统最终都会落实到这些最底层的硬件控制,因此对这些硬件的控制有了感性的认识就好很多了  学习裸机的编程的同时要好好理解这个硬件的构架、控制原理,这些我称他为理解硬件。所谓的理解硬件就是说,理解这个硬件是怎么组织这么多资源的,这些资源又是怎么由cpu、由编程进行控制的。比如说,s3c2410中有AD转换器,有GPIO(通用IO口),还有nandflash控制器,这些东西都有一些寄存器来控制,这些寄存器都有一个地址,那么这些地址是什么意思?又怎么通过寄存器来控制这些外围设备的运转?还有,norflash内部的每一个单元在这个芯片的内存中都有一个相应的地址单元,那么这些地址与刚刚说的寄存器地址又有什么关系?他们是一样的吗?而与 norflash相对应的nandflash内部的储存单元并不是线性排放的,那么s3c2410怎么将nandflash的地址映射在内存空间上进行使用?或者简单地说应该怎么用nandflash?再有,使用ADS进对ARM9行编程时都需要使用到一个初始化的汇编文件,这个文件究竟有什么用?他里面的代码是什么意思?不要这个可以吗?诸如此类都是对硬件的理解,理解了这些东西就对硬件有很深的理解了,这对以后更深一步的学习将有很大的帮助,如果跳过这一步,我相信越往后学越会觉得迷茫,越觉得这写东西深不可测。因为,你的根基没打好。

第二,使用linux系统进行一些基本的实验。

在买一套板子的时候一般会提供一些linux的试验例程,好好做一段时间这个吧,这个过程也是很有意义的,也是为进一步的学习积累感性认识,你能想象一个从没有使用过linux系统的人能学好linux的编程吗?好好按照手册上的例程做一做里面的实验,虽然有点娃娃学走路,有点弱智,但是我想很多高手都会经历这个过程。主要是开发板的提供商会提供很丰富的例程,我们不做重复工作,只提供他们没有的、最有价值的东西给大家。

第三,研究完整的linux系统的的运行过程。

所谓完整的linux系统包括哪些部分呢?三部分:bootloader、linux kernel(linux内核)、rootfile(根文件系统)。那么这3部分是怎么相互协作来构成这个系统的呢?各自有什么用呢?三者有什么联系?怎么联系?系统的执行流程又是怎么样的呢?搞清楚这个问题你对整个系统的运行就很清楚了,对于下一步制作这个linux系统就打下了另一个重要的根基。介绍这方面的资料网上可以挖掘到几吨,自己好好研究吧。

第四,开始做系统移植。

上面说到完整的linux有3部分,而且你也知道了他们之间的关系和作用,事实上这个3者都能在网下载到相应的源代码,但是这个源代码不可能下载编译后就能在你的系统上运行,需要很多的修改,直到他能运行在你的板子上,这个修改的过程就叫移植。在进行移植的过程中你要学的东西很多,要懂的相关知识也很多,等你完成了这个过程你会发现你已经算是一个初出茅庐的高手了。在这个过程中如果你很有研究精神的话你必然会想到看源代码。很多书介绍你怎么阅读linux源代码,我不提倡无目的地去看linux源代码,用许三多的话说,这没有意义。等你在做移植的时候你觉得你必须去看源代码时再去找几本好书看看,这里我推荐一本好书倪继利的《linux内核的分析与编程》,这是一本针对linux-2.6.11内核的书,说得很深,建议先提高自己的C语言编程水平再去看。至于每个部分的移植网上也可以找到好多吨的资料,自己研究研究吧,不过要提醒的是,很多介绍自己经验的东西都或多或少有所保留,你按照他说的去做总有一些问题,但是他不会告诉你怎么解决,这时就要靠自己,如果自己都靠不住就找我一起研究研究吧,我也不能保证能解决你的问题,因为我未必遇到过你的问题,不过我相信能给你一点建议,也许有助你解决问题。这一步的最终目的是,从源代码的官方主页上(都是外国的,悲哀)下载标准的源代码包,然后进行修改,最终运行在板子上。盗用阿基米德的一句话:“给我一根网线,我能将linux搞定”。

第五,研究linux驱动程序的编写。

移植系统并不是最终的目的,最终的目的是开发产品,做项目,这些都要进行驱动程序的开发。Linux的驱动程序可以说是五花八门,linux2.4和 linux2.6的编写有相当大的区别,就是同为linux2.6但是不同版本间的驱动程序也有区别,因此编写linux的驱动程序变都不是那么容易的事情,对于最新版本的驱动程序的编写甚至还没有足够的参考资料。那么我的建议就是使用、移植一个不算很新的版本内核,这样到时学驱动的编程就有足够的资料了。这部分的推荐书籍可以参考另一篇文章《推荐几本学习嵌入式linux的书籍》。第六,研究应用程序的编写。 做作品做项目除了编写驱动程序,最后还要编写应用程序。是图形应用程序的开发,而图形应用程序中用得最多的还是qt/e函数库。我一直就使用这个函数库来开发自己的应用程序,不过我希望你能使用国产的MiniGUI函数库。盗用周杰伦的广告词就是“支持国产,支持MiniGUI”。 MiniGUI的编程比较相似Windows下的VC编程,比较容易上手,效果应该说是相当不错的,我曾使用过来开发ARM7的程序。记住,问题是学习的最好机会。

推荐阅读