当前位置:嗨网首页>书籍在线阅读

13-存储子系统

  
选择背景色: 黄橙 洋红 淡粉 水蓝 草绿 白色 选择字体: 宋体 黑体 微软雅黑 楷体 选择字体大小: 恢复默认

7.3.5 存储子系统

除了常见的闪存以外,很多引导加载程序都支持从其他一些非易失性存储设备中引导镜像。支持这些设备的难点在于软件和硬件都相对比较复杂。比如,为了访问硬盘驱动器上的数据,引导加载程序必须有针对IDE控制器接口的设备驱动程序代码,同样也需要了解底层的分区方式和文件系统。这并不容易,并且这项工作更适合由成熟的操作系统来完成。

虽然底层实现很复杂,还是有办法从这类设备中加载镜像的。最简单的方法就是只支持硬件。采用这种方式时,不需要了解设备上的文件系统。引导加载程序仅仅是从设备上的绝对扇区中读取原始数据。采用这种方式时,可以在一个IDE兼容设备(比如CompactFlash)上从扇区0开始专门划分出一个未格式化的分区,引导加载程序就可以从这个分区中加载数据,而这些数据是没有格式的。这是一种从块存储设备中加载内核镜像或其他二进制镜像的简单方法。可以将设备上的其他分区进行格式化,用做文件系统。在内核启动后,Linux的设备驱动程序可用于访问这些格式化的分区。

U-Boot可以从指定的原始分区或经过格式化(有文件系统)的分区中加载镜像。当然,板卡上必须有支持的硬件设备(一个IDE子系统),并且U-Boot必须据此进行相应的配置。在板卡配置文件中添加 CONFIG_CMD_IDE 就可以开启对IDE接口的支持,并且添加 CONFIG_CMD_BOOTD 就可以开启从原始分区引导的功能。如果准备将U-Boot移植到一个定制的板卡上,你很可能需要修改U-Boot,方便其了解特定硬件。