标题：arm嵌入式开发板
功能与作用
arm嵌入式开发板，ARM开发板，从概念上来讲，与软件外包非常类似（软件外包是指软件外包提供商为了集中精力从事核心竞争力业务,降低项目成本,同时提高项目实施的质量,将自己的软件项目中的全部或部分工作发包给合适的软件企业去完成）。 
嵌入式开发板牵涉的软件工作分工
像嵌入式产品的硬件、引导代码、驱动程序、文件系统、协议层、基本应用软件这些方面，都是电子产品的公共和通用部分，并不是产品能够形成差异化的关键技术，在这个讲求分工合作的时代，如果是这部分的工作量比较大，或者是厂商没有相关的开发人员的时候，就能够选择由第三方完成这些软件开发的工作，加快产品研发的进程，实现产品的迅速上市，抢占市场先机。
那么，作为“发包方”的开发板用户，选择开发板的时候，实际上选择的不仅是一个硬件板子、开发板提供的源代码等资源，而是选择一个合作伙伴，一个为用户提供软硬件服务的合作伙伴。与软件外包这种合作方式类似，用户和供应商之间的合作更多是软件方面的合作，需要用户和供应商之间根据产品的具体需求进行充分沟通，供应商要根据用户的需求不断地调用人员进行配合。像我们在支持客户进行产品开发的过程中，遇到的比如更改文件系统、串口测试、64M Flash换成128M Flash等问题，大多情况都是要通过软件方式来解决的，这就形成了嵌入式行业供应商的售后支持和客户研发的高度互动性。
也就是说，嵌入式开发板是用户软件外包的载体，相对于传统的软件外包业务，开发板实际上能够为用户提供硬件实物和软件服务两方面的价值。
目前，在嵌入式行业中，除了嵌入式开发板，外包的形式也趋向多样化，用户能够根据自己的产品需要，向供应商提出定制要求，由供应商提供硬件设计和驱动移植等方面的服务；有可能电子厂商会自己设计硬件，由嵌入式系统厂商帮助其完成系统的移植、驱动的完善工作。从行业链上的作用来看，嵌入式系统厂商能够采用灵活的服务方式，利用自己的技术优势帮助电子产品厂商缩短产品开发周期、节省设计资源方面的投资，促进电子产品厂商的快速发展。
选购建议
以嵌入式开发板的功能和作用作为出发点，嵌入式开发板选型应该从以下三个方面来综合考虑：
（一）开发板的硬件设计是基本照搬半导体厂商的参考设计，还是充分为国内厂家生产制造、产品上市等方面考虑。
半导体厂商专注于芯片的设计，对参考设计的投入一定不会像开发板的厂商一样，能够做到专注专业。国外芯片厂商的工程师，在做参考设计的时候，习惯上会采用在本国使用比较多的外围芯片。这样，半导体厂商的参考设计对国内厂商提供的参考价值有限。
所以，在选择开发板的时候，无论是出于最终产品的性能和功能考虑，还是为后期能够更加方便地制造生产，用户一定要擦亮眼睛，仔细对比一下供应商提供的开发板是不是更加适合自己的产品研制和生产。 
（二）开发板的软件是否支持完善，是否能够支持所有开发板上所有的硬件接口。 
开发板的价值就在于，能够让用户节省在系统、驱动等方面的投入，专注于使产品形成差异化的上层软件的开发。如果供应商提供的开发板，板级硬件接口没有对应的软件驱动的支持，用户的开发进度就会受到影响 。在购买开发板的时候 ，一定要确认清楚 ，是不是所有的硬件接口都有相应的驱动，开发板是不是拿到手就能够马上用来做开发。
（三）供应商的技术支持力度如何。
嵌入式行业是客户研发和售后支持具有高度互动性的行业，供应商的技术支持有时就会成为用户产品上市的关键因素，在供应商的技术支持能力方面，一定要慎重考察。
考察一个供应商能不能提供充分的支持，一个有效的方法就是到这个公司的技术支持论坛上看看。在论坛上，用户发贴询问的问题，是不是能够及时得到回复。没有专业的支持团队的公司，没有办法为用户提供及时的支持。用户在论坛上发贴询问，有的厂商一个月才给用户一个答复，有的甚至不予回答。
是否能够提供完备的技术支持，是一个开发板公司是不是专业的开发板公司，是不是能够发挥在产业链上承上启下的作用，是不是能够为用户创造价值的重要标准。这个道理实际上应该很浅显，开发板厂商的入门门槛并不高，只要有硬件设计能力，参考半导体厂商的参考设计，就能够推出开发板产品。如果不能够为用户或者不给用户提供技术支持，这样的厂商能够为用户提供的就只是一个硬件板子，即使是现在市面上两千多的板子，如果是非专业厂商提供的话，供应商所获得的利润也是很高的，因为这些厂家的成本只是开发板的硬件成本和销售成本；专业的开发板公司，需要承担的研发成本、售后支持成本、运营成本和销售成本均摊下来，不一定有非专业公司的盈利高，市面上开发板的价格为什么会有那么大的价格差别，原因也可见一斑。
总之，用户在购买开发板的时候，选择的不是开发板，而是为自己提供服务的合作伙伴。开发板的价格是公司服务价值的体现，所以目前很多追求最低价开发板的消费理念是偏颇的。选择开发板，选择一个为自己服务的公司，一定要慎重。在半导体行业里面，开发板厂商就是衔接上下游厂商的链条。质量上乘的链条，能够快速地将用户送上新品促进市场良性循环的金光大道；劣质的链条，关键时刻，掉链子了，用户需要修修补补，就会被竞争对手赶超，再好的产品创意也会逐渐失去价值。
行业情况
嵌入式开发板的原型，可以说是各大芯片厂商在推出芯片的时候，提供给用户的参考设计。很正常，半导体厂商在推广自己芯片的时候，单单拿芯片给用户看是没有任何吸引力的，一定要给用户看到具体的电路板，具体的接口，能够给客户一个具体的印象，才能够保证推广的效果；半导体厂商给出这些参考设计，也是让用户在设计的时候有一个参考，加快他们产品设计和上市的进度。
无论是8位、16位单片机，还是32位能够运行操作系统的嵌入式处理器，半导体厂商都有这样的参考设计。对应的，市面上有很多向用户提供开发板的厂商。 
嵌入式处理器不断推陈出新，早期摩托罗拉半导体（现飞思卡尔半导体）68K/Coldfire和PowerPC处理器的一枝独秀已经一去不返，现在ARM、Coldfire、PowerPC和ADSP还有基于MIPS、X86体系结构的嵌入式处理器百花齐放、处理器厂商以及处理器架构厂商各显神通，半导体行业的上游企业给开发板厂商的出现和成长提供很好的契机。
特别是2002年底2003年，ARM体系结构在国内的风行，给很多想要基于自己的嵌入式技术进行创业的人送来了东风。大江南北几乎每个省级城市都会有开发板厂商。这段时间以及之后入行的公司有一个共同的特点，就是产品基本都是基于ARM处理器进行开发，或者是仿真器类的 ARM 工具进行开发。这些厂商能够为用户提供具有不同接口功能的开发板，从整体上看是能够为电子产品的制造商提供服务，加速半导体产业链下游厂商产品的上市。
嵌入式linux与ARM开发板的入门建议
[1]第一，学习基本的【非法词语被屏蔽】机编程。 　
对于学硬件的人而言，必须先对硬件的基本使用方法有感性的认识，更必须深刻认识该硬件的控制方式，如果一开始就学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的程序。记住，问题是学习的最好机会。