基于AT91SAMA5D35的barebox移植.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
基于AT91SAMA5D35的barebox移植.doc

基于AT91SAMA5D35的barebox移植   摘 要 barebox是一个在U-Boot的基础上发展起来的一个新的功能强大的bootloader,它有着非常直观的设备模型和友好的编程接口,使用方便、功能强大,支持ARM、PowerPC、mips等多种CPU架构.。本文简要介绍了barebox的整体结构,并以AT91SAM5D35为例介绍了barebox的移植和使用方法。   【关键词】barebox U-Boot AT91SAMA5D35   在嵌入式应用中,bootloader的种类很多,其中U-Boot是应用最为广泛和最通用的一个,但是U-Boot也存在一些缺点,如:只能通过修改程序文件来修改配置、环境设置比较琐碎等。   barebox是一个在U-Boot的基础上发展起来的一个新的功能强大的bootloader,它具有非常直观的设备模型和友好的编程接口,使用和移植更加方便。本文以AT91 SAMA5D35为例简单介绍了barebox的移植方法。   1 barebox简介和流程分析   1.1 barebox简介   barebox开发之初被称之为:u-boot-v2,它是一个基于U-Boot发展起来的bootloader,它继承了U-Boot对多架构多平台的支持,采用了更接近于Linux的设备驱动模型等,更有利于从Linux系统继承各种设备的驱动,避免了驱动程序重复开发,而把更多的精力投入到barebox核心功能的开发。barebox的主要特点如下:   1.1.1 POSIX文件接口   barebox使用POSIX接口函数open/close/read/write/lseek ,并且提供了设备文件的模型,与UNIX系统的API函数完全一致。   1.1.2 Shell   提供了标准的shell 命令,例如 cd/ls/cat/echo …等等。   1.1.3 环境变量文件系统   barebox可以像操作文件一样的将环境变量保存在一个flash中,并且可以加载到ram中来。环境变量被模拟成了一个文件,可以通过barebox下简单的文本编辑器来编辑和保存环境变量文件。   1.1.4 Filesystem support   当barebox启动后,环境变量被挂载到/env/目录下,所有的设备被挂载到/dev目录下,我们可以通过标准的API函数来操作这些设备文件,就像在linux下一样。并且还可以通过mount指令挂载其他文件系统。   1.1.5 驱动模型   barebox采用了和linux相同的驱动开发模型,通过在板级支持文件中定义所有的设备名,然后在驱动中通过相同的名字探测和管理这些设备。   1.1.6 Kconfig/Kbuild   barebox采用了与Linux相同的配置方式,避免了源码中大量的ifdef。   1.1.7 Sandbox   可以通过将barebox选择成为sandbox来方便的进行barebox开发,将barebox编译成为在linux用户空间上的一个POSIX应用程序,方便开发和调试。   1.1.8 内部编辑器   barebox实现了一个简单编辑器,可以用于编辑、修改脚本。   1.2 barebox分析   1.2.1 barebox启动流程分析   barebox的主要任务是初始化相关硬件,建立操作系统运行环境,为操作系统的加载运行做准备工作,与大多数bootloader 类似,barebox 的启动分成stage1 和stage2 两个阶段。图 1显示了barebox的启动流程。   Stage1 阶段C 语言环境还没准备好,与CPU 体系紧密相关,使用嵌入汇编代码的方式在start.c 文件中实现。如果采用压缩镜像文件,这里还将对barebox进行解压缩。   Stage2 阶段一般包括:初始化Flash 器件、检测系统内存映射、初始化网络设备、进入命令循环,接收用户从串口发送的命令然后进行相应的处理。Stage2 使用C 语言编写,用于加载操作系统内核,该阶段主要是startup.c 中的start_barebox() 函数实现。   1.2.2 barebox驱动框架   barebox采用了简化的linux驱动模型,用struct device_d来描述设备,struct driver_d来描述系统驱动,初始化时设备和驱动通过设备名称(name)和类型(type)进行匹配,如果匹配成功驱动接口probe()会被调用,probe()函数中对设备进行初始化并分配相应的接口和资源。见图2。   2 barebox在SAMA5D35平台上的移植   2.1 软硬件环境   本文采用的

文档评论(0)

guan_son + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档