什么是ARM编程
如果说,“嵌入式”是2001年电子工程师谈论得最多的词之一,2002年谈论得最多的一个词就是“ARM”。究竟什么是ARM呢,他是英国一家电子公司的名字,全名的意思是AdvancedRISCMachine。该公司成立于1990年11月,是苹果电脑,Acorn电脑集团和VLSITechnology的合资企业。Acorn曾推出世界上首个商用单芯片RISC处理器,而苹果电脑当时希望将RISC技术应用于自身系统,ARM微处理器新标准因此应运而生。80年代末90年代初半导体行业产业链刚刚出现分工,台积电,联电等半导体代工厂正悄悄崛起,美国硅谷中的一些fabless公司也如雨后春笋一样涌现出来,所谓的fabless公司自己设计芯片,但是生产过程则包给台积电等代工厂生产。而ARM更是为天下先,12年前首创了chipless的生产模式,即该公司既不生产芯片,也不设计芯片,而是设计出高效的IP内核,授权给半导体公司使用,半导体公司在ARM技术的基础上添加自己的设计并推出芯片产品,最后由OEM客户采用这些芯片来构建基于ARM技术的系统产品。这种方式有点象通信行业的高通和半导体行业的RAMBUS,他们站在了半导体产业链上游的上游。12年前成立的ARM可能面临着很大风险,因为没有人知道这条路能不能行得通,但是现在的事实已经证明,ARM走了一条没人走过,却是正确的道路。,作为附加产品,他还让中国的行业人士从这个窗口认识到了英国的电子公司,ARM的成功带动了英国的chipless公司的发展。因为ARM的产品是IPCore,没有任何物理意义上的硬件或者软件实体,所以只能在中国注册成为“咨询”公司,尽管咨询只是其业务中很小的一块。ARM的核心业务是销售芯片核心技术IP,目前全球有103家巨型IT公司在采用ARM技术,20家最大的半导体厂商中有19家是ARM的用户,包括德州仪器,意法半导体,Philips,Intel等。20大巨头中唯一没有购买ARM授权的是Intel的老对头AMD,因为Intel便携式处理器采用的是StrongARM,而AMD则收购了Alchemy公司与之抗衡,采用的是MIPS结构。微处理器核是ARM技术的重中之中,目前面向市场的有ARM7,ARM9,ARM9E-S,StrongARM和ARM10系列。ARM专利技术收入主要来自两个方面,一个是专利授权费用,客户如果采用ARM专利时一次性付给ARM的费用;另一部分是按照一定比例收取客户产品的专利使用费,即客户每卖出一片芯片,就收取同等比例的费用。这两项收入占公司总收入的70%。目前在中国已经有中兴通讯,中芯国际和上海华虹购买了ARM的内核授权,生产自己的芯片。ARM中国方面的业务的其它重点还在于对芯片设计公司(fables)的支持,开展大学计划等。另外ARM还授权科汇宏盛(Impact)和北京旋极为开发工具的授权分销商2002年的销售额增长在三位数(100%)以上。一般来说,ARM的合作伙伴分为三种:1.EDA伙伴计划,融合了ARM在线系统设计、可重复使用IP生成和IP模型等方面的专长与领先EDA工具厂商的专业特长,开发SoC产品。2.ARM技术共享计划,为ARM与外部设计服务公司合作关系的扩展和规范化结果,现在已经有2900多工程师成员。3.制造商计划,使新兴市场的OEM能分享ARM处理器技术,用于设计和制造先进的SoC解决方案。北航出版社和清华出版蛇出版了几本关于ARM技术方面的书籍,并且还会陆续出版更多,质量更高的书。同时ARM中国还计划授权各合作伙伴,开办ARM技术培训班,并为合作伙伴的老师提供培训,另一方面,也将和国内大学开展大学合作计划,加大ARM技术推广和普及的力度,帮助中国的电子工程师迅速和国际接轨,并掌握最新的电子设计技术。总之,ARM是英国全球著名的32位嵌入式RISC芯片内核的设计公司,也是ARM的产品商标,其产品ARM嵌入式内核已被全球各大芯片厂商采用,基于ARM的开发技术席卷了全球嵌入式市场,已成为嵌入式系统主流技术之一。旋极公司作为嵌入式业内的皎皎者,锐意创新,致力于ARM技术的、开发应用和推广,再一次走在了同行的前列,率先成立了ARM的研发中心,并在全国开办了基于ARM的嵌入式系统开发应用培训。2001年12月,旋极正式成为ARM授权中国唯一指定培训中心(ATC)和其系列产品代理商。ARM开发的32位CPU核,全球厂商都可以获得授权生产ARM芯片。而且价格出乎意料得便宜,比如做网络应用的4510只需45元人民币,这样低端产品可以采用8051等8位单片机,而中高端产品采用ARM是非常明智的选择。现在很多人开始学习ARM,开始都是买ARM实验板和JTAG仿真器。
如何使用arm9开发板
1,熟悉开发板的硬件资源(TQ2440的原理图)
2,熟悉SRAM,SDRAM,Nor Flash,Nand Flash。
3,熟悉内存控制器的初始化,程序要在SDRAM中运行,首先要初始化SDRAM。
4,熟悉ARM920T的启动方式(Nor Flash/Nand Flash)。
5,学会程序下载例程运行(TFTP方式或者USB方式)。
6,搭建开发环境(GCC交差编译)。
7,学习ARMv4指令集,编写简单的汇编程序,下载运行。
8,务必非常熟悉串口UART的使用,后边你自己的程序调试都需要通过串口来输出。
9,学习ARM汇编与C语言的混合编程,GCC内联汇编,掌握参数传递方式和ARM过程调用标准(APCS)即可。
10,到了这一步,基本上就可以用板子上的硬件资源来练习了,LED,按键,IIC接口的EEPROM, LCD等(板子上的蜂鸣器,
LED,串口都可以用来当调试工具,观察它们的现象,判断你的程序执行情况)。
11,现在要学习ARM工作模式,异常处理机制,要非常熟悉中断处理,会编写中断处理程序。
12,自己可以写一个bootloader,写DM9000网卡驱动程序,实现ARP,IP,UDP,TFTP协议,从而用你自己的bootloader实现从服务器下载数据到开发板(我已经实现了一个,大家需要的,可以留言说明,我会联系大家)。
13,当第12步完成后,你可以尝试用你的bootloader从PC的TFTP服务器下载Linux内核镜像到开发板,然后启动linux。
14,现在可以学习uboot了,就是你的开发板一上电就运行的那个东西,主要是学习移植。
如果你把12,13步完成了或者理解了,那么你也理解uboot了,它和你自己写的bootloader是一样的东西,只不过它功能更强大而已,可以做很多事情。
(但是最主要的就是,获取Linux内核镜像,初始化硬件环境,运行Linux)。
15,此刻,若你依然深爱着ARM920T,那么你可以在上面写一个操作系统(或者称为调度器),使用ARM920T的MMU。再编写或移植一套GUI,实现一个文件系统,实现一个TCP/IP协议栈(只要你想得到的,都可以在上面实现,目前我也在做)。
嵌入式系统需要学什么语言
嵌入式系统需要学C语言编程。根据中国物联网校企联盟的建议,学习嵌入式系统的必备知识与学习方法如下:1、C开发经验条件:Linux。方法:主要是掌握ANSIC编程(不包括gtk,qt等图形可视化开发)2、网络、操作系统、体系结构条件:Linux,各种书,算法、例程。方法:通过C编程实现简单的网络等知识的算法和过程。3、嵌入式系统概念条件:各个嵌入式网站,讨论组,书籍。方法:少提问,多留给自己思考的空间。4、嵌入式开发实践条件:各种嵌入式系统开发工具的demo版,包括编译器,仿真器。方法:一个是基于MCU/MDSP的嵌入式系统开发,另一个是像PalmOS,WinCE,uC/OSII等RTOS下的应用软件开发。第一个是针对硬件开发而言的,而第二个则是针对软件开发而言的。扩展资料发展趋势:1、嵌入式开发是一项系统工程,因此要求嵌入式系统厂商不仅要提供嵌入式软硬件系统本身,同时还需要提供强大的硬件开发工具和软件包支持。目前很多厂商已经充分考虑到这一点,在主推系统的同时,将开发环境也作为重点推广。比如三星在推广Arm7,Arm9芯片的同时还提供开发板和板级支持包(BSP)。而WindowCE在主推系统时也提供EmbeddedVC作为开发工具,还有Vxworks的Tonado开发环境,DeltaOS的Limda编译环境等等都是这一趋势的典型体现。当然,这也是市场竞争的结果。2、网络化、信息化的要求随着因特网技术的成熟、带宽的提高日益提高,使得以往单一功能的设备如电话、手机、冰箱、微波炉等功能不再单一,结构更加复杂。
嵌入式系统需要学什么语言?
嵌入式系统需要学C语言编程。根据中国物联网校企联盟的建议,学习嵌入式系统的必备知识与学习方法如下:1、C开发经验条件:Linux。方法:主要是掌握ANSI C编程(不包括gtk,qt等图形可视化开发)2、网络、操作系统、体系结构条件:Linux,各种书,算法、例程。方法:通过C编程实现简单的网络等知识的算法和过程。3、嵌入式系统概念条件:各个嵌入式网站,讨论组,书籍。方法:少提问,多留给自己思考的空间。4、嵌入式开发实践条件:各种嵌入式系统开发工具的demo版,包括编译器,仿真器。方法:一个是基于MCU/MDSP的嵌入式系统开发,另一个是像Palm OS,WinCE,uC/OS II等RTOS下的应用软件开发。第一个是针对硬件开发而言的,而第二个则是针对软件开发而言的。扩展资料发展趋势:1、嵌入式开发是一项系统工程,因此要求嵌入式系统厂商不仅要提供嵌入式软硬件系统本身,同时还需要提供强大的硬件开发工具和软件包支持。目前很多厂商已经充分考虑到这一点,在主推系统的同时,将开发环境也作为重点推广。比如三星在推广Arm7,Arm9芯片的同时还提供开发板和板级支持包(BSP)。而WindowCE在主推系统时也提供Embedded VC++作为开发工具,还有Vxworks的Tonado开发环境,DeltaOS的Limda编译环境等等都是这一趋势的典型体现。当然,这也是市场竞争的结果。2、网络化、信息化的要求随着因特网技术的成熟、带宽的提高日益提高,使得以往单一功能的设备如电话、手机、冰箱、微波炉等功能不再单一,结构更加复杂。参考资料来源:百度百科-嵌入式系统
ARM9开发板的基本概念
Arm嵌入式开发板,ARM开发板,从概念上来讲,与软件外包非常类似(软件外包是指软件外包提供商为了集中精力从事核心竞争力业务,降低项目成本,同时提高项目实施的质量,将自己的软件项目中的全部或部分工作发包给合适的软件企业去完成)。像嵌入式产品的硬件、引导代码、驱动程序、文件系统、协议层、基本应用软件这些方面,都是电子产品的公共和通用部分,并不是产品能够形成差异化的关键技术,在这个讲求分工合作的时代,如果是这部分的工作量比较大,或者是厂商没有相关的开发人员的时候,就能够选择由第三方完成这些软件开发的工作,加快产品研发的进程,实现产品的迅速上市,抢占市场先机。 那么,作为“发包方”的开发板用户,选择开发板的时候,实际上选择的不仅是一个硬件板子、开发板提供的源代码等资源,而是选择一个合作伙伴,一个为用户提供软硬件服务的合作伙伴。与软件外包这种合作方式类似,用户和供应商之间的合作更多是软件方面的合作,需要用户和供应商之间根据产品的具体需求进行充分沟通,供应商要根据用户的需求不断地调用人员进行配合。像我们在支持客户进行产品开发的过程中,遇到的比如更改文件系统、串口测试、64M Flash换成128M Flash等问题,大多情况都是要通过软件方式来解决的,这就形成了嵌入式行业供应商的售后支持和客户研发的高度互动性。 也就是说,嵌入式开发板是用户软件外包的载体,相对于传统的软件外包业务,开发板实际上能够为用户提供硬件实物和软件服务两方面的价值。 目前,在嵌入式行业中,除了嵌入式开发板,外包的形式也趋向多样化,用户能够根据自己的产品需要,向供应商提出定制要求,由供应商提供硬件设计和驱动移植等方面的服务;有可能电子厂商会自己设计硬件,由嵌入式系统厂商帮助其完成系统的移植、驱动的完善工作。从行业链上的作用来看,嵌入式系统厂商能够采用灵活的服务方式,利用自己的技术优势帮助电子产品厂商缩短产品开发周期、节省设计资源方面的投资,促进电子产品厂商的快速发展。
arm9嵌入式开发板能实现哪些功能
嵌入式开发板(Embedded development board)就是半导体行业分工合作的载体之一,它为开发产品的厂商提供基本的底层硬件、系统和驱动等资源,使得用户不需要再投入人力和时间来完成这些底层的工作。
1、嵌入式发展趋势
1、嵌入式开发是一项系统工程,要求嵌入式系统厂商不仅要提供嵌入式软硬件系统本身,同时还需要提供强大的硬件开发工具和软件包支持。很多厂商充分考虑到这一点,在主推系统的同时,将开发环境也作为重点推广。比如三星、ARM在推广Arm7,Arm9芯片的同时还提供开发板和板级支持包(BSP)。
2、 网络化、信息化的要求随着因特网技术的成熟、带宽的提高日益提高,使得以往单一功能的设备如电话、手机、冰箱、微波炉等功能不再单一,结构更加复杂。这就要求芯片设计厂商在芯片上集成更多的功能,为了满足应用功能的升级,设计师们一方面采用更强大的嵌入式处理器如32位、64位RISC芯片或信号处理器DSP增强处理能力,同时增加功能接口。
3、网络互联成为必然趋势。未来的嵌入式设备为了适应网络发展的要求,必然要求硬件上提供各种网络通信接口。传统的单片机对于网络支持不足,而新一代的嵌入式处理器已经开始内嵌网络接口,除了支持TCP/IP协议,还有的支持IEEE1394、USB、CAN、Bluetooth或IrDA通信接口中的一种或者几种,同时也需要提供相应的通信组网协议软件和物理层驱动软件。软件方面系统系统内核支持网络模块,甚至可以在设备上嵌入Web浏览器,真正实现随时随地用各种设备上网。
4.精简系统内核、算法,降低功耗和软硬件成本。未来的嵌入式产品是软硬件紧密结合的设备,为了减低功耗和成本,需要设计者尽量精简系统内核,只保留和系统功能紧密相关的软硬件,利用最低的资源实现最适当的功能,这就要求设计者选用最佳的编程模型和不断改进算法,优化编译器性能。因此,既要软件人员有丰富的硬件知识,又需要发展先进嵌入式软件技术,如Java、Web和WAP等。
5.提供友好的多媒体人机界面 嵌入式设备能与用户亲密接触,最重要的因素就是它能提供非常友好的用户界面。图像界面,灵活的控制方式,使得人们感觉嵌入式设备就象是一个熟悉的老朋友。这方面的要求使得嵌入式软件设计者要在图形界面,多媒体技术上痛下苦功。手写文字输入、语音拨号上网、收发电子邮件以及彩色图形、图像都会使使用者获得自由的感受。一些先进的PDA在显示屏幕上已实现汉字写入、短消息语音发布,但一般的嵌入式设备距离这个要求还有很长的路要走。
6、对于企业专用解决方案,如物流管理、条码扫描、移动信息采集等,这种小型手持嵌入式系统将发挥巨大的作用。自动控制领域,不仅可以用于ATM机,自动售货机,工业控制等专用设备,和移动通讯设备结合、GPS、娱乐相结合,嵌入式系统同样可以发挥巨大的作用。
7、在广播电视领域,美国已开始由模拟电视向数字电视转变,欧洲的DVB(数字电视广播)技术已在全球大多数国家推广。数字音频广播(DAB)也已进入商品化试播阶段。而软件、集成电路和新型元器件在产业发展中的作用日益重要。所有上述产品中,都离不开嵌入式系统技术。象前途无可计量的维纳斯计划生产机顶盒,核心技术就是采用32位以上芯片级的嵌入式技术。
2功能与作用
嵌入式开发板(Embedded development board),从概念上来讲,与软件外包非常类似(软件外包是指软件外包提供商为了集中精力从事核心竞争力业务,降低项目成本,同时提高项目实施的质量,将自己的软件项目中的全部或部分工作发包给合适的软件企业去完成)。像嵌入式产品的硬件、引导代码、驱动程序、文件系统、协议层、基本应用软件这些方面,都是电子产品的公共和通用部分,并不是产品能够形成差异化的关键技术,在这个讲求分工合作的时代,如果是这部分的工作量比较大,或者是厂商没有相关的开发人员的时候,就能够选择由第三方完成这些软件开发的工作,加快产品研发的进程,实现产品的迅速上市,抢占市场先机。
那么,作为“发包方”的开发板用户,选择开发板的时候,实际上选择的不仅是一个硬件板子、开发板提供的源代码等资源,而是选择一个合作伙伴,一个为用户提供软硬件服务的合作伙伴。与软件外包这种合作方式类似,用户和供应商之间的合作更多是软件方面的合作,需要用户和供应商之间根据产品的具体需求进行充分沟通,供应商要根据用户的需求不断地调用人员进行配合。像我们在支持客户进行产品开发的过程中,遇到的比如更改文件系统、串口测试、64M Flash换成128M Flash等问题,大多情况都是要通过软件方式来解决的,这就形成了嵌入式行业供应商的售后支持和客户研发的高度互动性。
也就是说,嵌入式开发板是用户软件外包的载体,相对于传统的软件外包业务,开发板实际上能够为用户提供硬件实物和软件服务两方面的价值。
在嵌入式行业中,除了嵌入式开发板,外包的形式也趋向多样化,用户能够根据自己的产品需要,向供应商提出定制要求,由供应商提供硬件设计和驱动移植等方面的服务;有可能电子厂商会自己设计硬件,由嵌入式系统厂商帮助其完成系统的移植、驱动的完善工作。从行业链上的作用来看,嵌入式系统厂商能够采用灵活的服务方式,利用自己的技术优势帮助电子产品厂商缩短产品开发周期、节省设计资源方面的投资,促进电子产品厂商的快速发展。
3选购建议
以嵌入式开发板的功能和作用作为出发点,嵌入式开发板选型应该从以下三个方面来综合考虑:
(一)开发板的硬件设计是基本照搬半导体厂商的参考设计,还是充分为国内厂家生产制造、产品上市等方面考虑。
半导体厂商专注于芯片的设计,对参考设计的投入一定不会像开发板的厂商一样,能够做到专注专业。国外芯片厂商的工程师,在做参考设计的时候,习惯上会采用在本国使用比较多的外围芯片。这样,半导体厂商的参考设计对国内厂商提供的参考价值有限。
所以,在选择开发板的时候,无论是出于最终产品的性能和功能考虑,还是为后期能够更加方便地制造生产,用户一定要擦亮眼睛,仔细对比一下供应商提供的开发板是不是更加适合自己的产品研制和生产。
(二)开发板的软件是否支持完善,是否能够支持所有开发板上所有的硬件接口。
开发板的价值就在于,能够让用户节省在系统、驱动等方面的投入,专注于使产品形成差异化的上层软件的开发。如果供应商提供的开发板,板级硬件接口没有对应的软件驱动的支持,用户的开发进度就会受到影响 。在购买开发板的时候 ,一定要确认清楚 ,是不是所有的硬件接口都有相应的驱动,开发板是不是拿到手就能够马上用来做开发。
(三)供应商的技术支持力度如何。
嵌入式行业是客户研发和售后支持具有高度互动性的行业,供应商的技术支持有时就会成为用户产品上市的关键因素,在供应商的技术支持能力方面,一定要慎重考察。
考察一个供应商能不能提供充分的支持,一个有效的方法就是到这个公司的技术支持论坛上看看。在论坛上,用户发贴询问的问题,是不是能够及时得到回复。没有专业的支持团队的公司,没有办法为用户提供及时的支持。用户在论坛上发贴询问,有的厂商一个月才给用户一个答复,有的甚至不予回答。
是否能够提供完备的技术支持,是一个开发板公司是不是专业的开发板公司,是不是能够发挥在产业链上承上启下的作用,是不是能够为用户创造价值的重要标准。这个道理实际上应该很浅显,开发板厂商的入门门槛并不高,只要有硬件设计能力,参考半导体厂商的参考设计,就能够推出开发板产品。如果不能够为用户或者不给用户提供技术支持,这样的厂商能够为用户提供的就只是一个硬件板子,即使是市面上两千多的板子,如果是非专业厂商提供的话,供应商所获得的利润也是很高的,因为这些厂家的成本只是开发板的硬件成本和销售成本;专业的开发板公司,需要承担的研发成本、售后支持成本、运营成本和销售成本均摊下来,不一定有非专业公司的盈利高,市面上开发板的价格为什么会有那么大的价格差别,原因也可见一斑。
总之,用户在购买开发板的时候,选择的不是开发板,而是为自己提供服务的合作伙伴。开发板的价格是公司服务价值的体现,所以目前很多追求最低价开发板的消费理念是偏颇的。选择开发板,选择一个为自己服务的公司,一定要慎重。在半导体行业里面,开发板厂商就是衔接上下游厂商的链条。质量上乘的链条,能够快速地将用户送上新品促进市场良性循环的金光大道;劣质的链条,关键时刻,掉链子了,用户需要修修补补,就会被竞争对手赶超,再好的产品创意也会逐渐失去价值。
4行业情况
嵌入式开发板的原型,可以说是各大芯片厂商在推出芯片的时候,提供给用户的参考设计。很正常,半导体厂商在推广自己芯片的时候,单单拿芯片给用户看是没有任何吸引力的,一定要给用户看到具体的电路板,具体的接口,能够给客户一个具体的印象,才能够保证推广的效果;半导体厂商给出这些参考设计,也是让用户在设计的时候有一个参考,加快他们产品设计和上市的进度。
无论是8位、16位单片机,还是32位能够运行操作系统的嵌入式处理器,半导体厂商都有这样的参考设计。对应的,市面上有很多向用户提供开发板的厂商。
嵌入式处理器不断推陈出新,早期摩托罗拉半导体(现飞思卡尔半导体)68K/Coldfire和PowerPC处理器的一枝独秀已经一去不返,ARM、Coldfire、PowerPC和ADSP还有基于MIPS、X86体系结构的嵌入式处理器百花齐放、处理器厂商以及处理器架构厂商各显神通,半导体行业的上游企业给开发板厂商的出现和成长提供很好的契机。
特别是2002年底2003年,ARM体系结构在国内的风行,给很多想要基于自己的嵌入式技术进行创业的人送来了东风。大江南北几乎每个省级城市都会有开发板厂商。这段时间以及之后入行的公司有一个共同的特点,就是产品基本都是基于ARM处理器进行开发,或者是仿真器类的 ARM 工具进行开发。这些厂商能够为用户提供具有不同接口功能的开发板,从整体上看是能够为电子产品的制造商提供服务,加速半导体产业链下游厂商产品的上市。[1]
5嵌入式开发板硬件驱动
大部分嵌入式硬件都需要某种类型的软件进行初始化和管理。直接与一个硬件互相作用并控制这一硬件的软件称为设备驱动程序(device driver)。所有需要软件的嵌入式系统,在它们的系统软件层都需要设备驱动程序软件。设备驱动程序是初始化硬件的软件库,它们管理着高层软件对硬件的访问,它是硬件与操作系统、中间件和应用层之间联络的纽带。具体来说,这类驱动程序包括主处理器体系结构专用的功能性驱动程序、存储器和存储器管理驱动程序、总线初始化和事务驱动程序、还有电路板层和主CPU层次的I/O初始化和控制驱动程序(如用于网络、图形、输入设备、存储设备、调试I/O等)。 设备驱动程序通常划分为体系结构专用(architecture-specific)设备驱动程序和通用(generic)设备驱动程序。体系结构专用设备驱动程序管理嵌入到主处理器(体系结构)中的硬件。体系结构专用驱动程序负责初始化主处理器内部的组件,这类驱动程序的具体事例包括片上存储器、集成的存储器管理器(MMU)和浮点硬件的驱动程序。通用设备驱动程序管理电路板上的硬件以及没有集成到主处理器中的硬件。在一个通用设备驱动程序中,通常包含一部分体系结构专用的源代码,因为主处理器是中央控制单元,要访问电路板上的任何组件通常都要经过主处理器。然而,通用驱动程序也可以管理不被特定的处理器所专用的板级硬件,这就意味着一个通用驱动程序可以配置应用到许多体系结构中去,只要该结构中包含该驱动程序对应的硬件。通用驱动程序包含初始化和管理对电路板上剩余主要组件进行访问的代码,这些主要组件包括板级总线(I2C、PCI、PCMCIA等)、片外存储器(控制器、2级以上高速缓存、闪存等)和片外I/O(以太网、RS-232、显示器、鼠标等)。
arm9嵌入式系统设计
⒈ Boot Loader 所支持的 CPU 和嵌入式板
每种不同的 CPU 体系结构都有不同的Boot Loader。有些 Boot Loader 也支持多种体系结构的 CPU,比如 U-Boot 就同时支持 ARM 体系结构和MIPS 体系结构。除了依赖于 CPU的体系结构外,Boot Loader 实际上也依赖于具体的嵌入式板级设备的配置。这也就是说,对于两块不同的嵌入式板而言,即使它们是基于同一种 CPU 而构建的,要想让运行在一块板子上的 Boot Loader 程序也能运行在另一块板子上,通常也都需要修改 Boot Loader 的源程序。
⒉ Boot Loader 的安装媒介(Installation Medium)
系统加电或复位后,所有的CPU 通常都从某个由 CPU 制造商预先安排的地址上取指令。比如,基于 ARM7TDMI core 的 CPU 在复位时通常都从地址 0x00000000 取它的第一条指令。而基于CPU 构建的嵌入式系统通常都有某种类型的固态存储设备(比如:ROM、EEPROM 或 FLASH 等)被映射到这个预先安排的地址上。因此在系统加电后,CPU 将首先执行Boot Loader 程序。
⒊ 用来控制 Boot Loader 的设备或机制
主机和目标机之间一般通过串口建立连接,Boot Loader 软件在执行时通常会通过串口来进行输入、输出,比如:输出打印信息到串口,从串口读取用户控制字符等。
⒋ Boot Loader 的启动过程
BootLoader 的启动过程可分为单阶段(Single-Stage)和多阶段(Multi-Stage)两种。通常多阶段的Boot Loader 具有更复杂的功能,更好的可移植性。从固态存储设备上启动的Boot Loader 大多采用两阶段,即启动过程可以分为 stage1和stage2:stage1完成初始化硬件,为stage2准备内存空间,并将stage2复制到内存中,设置堆栈,然后跳转到stage2。
⒌ Boot Loader 的操作模式 (Operation Mode)
大多数Boot Loader都包含两种不同的操作模式。启动加载模式和下载模式。
(1)启动加载(Boot loading)模式:这种模式也称为“自主”模式,也即Boot Loader从目标机上的某个固态存储设备上将操作系统加载到RAM中运行,整个过程并没有用户的介入。这种模式是Boot Loader的正常工作模式。
(2)下载(Down loading)模式:在这种模式下目标机上的Boot Loader将通过串口连接或网络连接等通信手段从主机下载文件。从主机下载的文件通常首先被Boot Loader保存到目标机的RAM中然后再被Boot Loader写到目标机上的固态存储设备中。
⒍ Boot Loader 与主机之间进行文件传输所用的通信设备及协议
分为两种情况。一种是目标机使用串口与主机相连。这时的传输协议通常是xmodem/ymodem/zmodem中的一种。第二种可以用网络连接的方式传输文件,这时使用的协议多为tftp。