解决wince启动Nandflash扫描慢
### 解决WinCE启动Nandflash扫描慢的问题 #### 一、问题背景及原因分析 在使用基于Freescale Semiconductor的处理器(如i.MX27、i.MX31等)并搭载Windows CE(WinCE)操作系统的设备时,可能会遇到启动过程中Nandflash扫描时间过长的问题。这一现象会导致整体启动时间显著增加,影响用户体验。 **原因分析:** 1. **默认管理方式**:无论是Flash Abstraction Layer (FAL) 和 Flash Media Driver (FMD) 基础的Flash驱动程序,还是Model Device Driver (MDD) 和 Platform-Dependent Driver (PDD) 基础的Flash驱动程序,默认情况下都将Flash ROM视为单一磁盘进行管理。 2. **全盘扫描机制**:当WinCE系统启动时,会对NAND Flash磁盘上的文件系统进行全面扫描,包括所有分区,即使是未挂载的分区也会被扫描。如果NAND Flash上存储了大量文件,则扫描过程会非常耗时。 3. **设备加载延迟**:在WinCE启动过程中,首先加载设备驱动文件device.dll,该文件负责加载NAND Flash磁盘驱动程序。其他系统服务(如gwes.dll、explorer.exe和服务启动器servicesStart.exe)依赖于device.dll文件,并在其任务完成后才开始运行。因此,NAND Flash磁盘的文件系统扫描阻塞了device.dll文件完成其任务,导致系统服务的启动延迟,进而延长了整个启动过程的时间。 #### 二、解决方案概述 为了解决上述问题,可以通过以下方法避免启动时的NAND Flash扫描延迟: 1. **延迟加载NAND Flash驱动程序**:通过在启动时不立即加载NAND Flash磁盘驱动程序,而是在系统完成基本初始化后再通过调用`ActivateDevice`函数手动加载。这样可以确保文件系统扫描不会阻碍其他服务的启动。 2. **改进旧版NAND Flash驱动程序**:参考Freescale提供的文档中的“提高旧版NAND Flash驱动程序启动速度”部分,可以对现有的驱动程序进行优化,以减少启动时的扫描时间。 3. **调整注册表设置**:修改注册表和BIB(Boot Image Builder)设置来控制NAND Flash磁盘驱动程序的行为,例如设置自动加载应用等。 #### 三、详细实施步骤 1. **设计参考**:查阅Freescale Semiconductor提供的设计参考文档,了解如何适配不同的NAND Flash配置和驱动程序结构。 2. **PDD驱动程序参考**:研究PDD驱动程序的设计原理和技术细节,特别是针对NAND Flash的特定实现。 3. **FMDLIB库参考**:熟悉FMDLIB库的功能和接口,以便更好地集成到现有系统中。 4. **内核I/O控制代码参考**:掌握内核级别的I/O控制代码,以实现更高效的驱动程序加载策略。 5. **注册表和BIB设置**:调整注册表和BIB设置,以支持延迟加载NAND Flash驱动程序和其他相关配置。 6. **自动加载应用程序**:开发或修改自动加载应用程序,用于在系统初始化后加载NAND Flash驱动程序。 #### 四、具体操作指南 1. **停止启动时加载**:在启动过程中不自动加载NAND Flash驱动程序,而是通过手动调用`ActivateDevice`函数来加载。 2. **优化旧版驱动程序**:根据Freescale提供的文档指导,优化旧版本的NAND Flash驱动程序,减少启动时的扫描时间。 3. **调整注册表设置**:通过修改注册表项来禁用启动时的自动加载,并设置合适的延迟加载选项。 4. **实现自动加载应用**:编写一个简单的应用程序,在系统启动完毕后自动加载NAND Flash驱动程序。 通过以上步骤,可以有效地解决WinCE启动时Nandflash扫描慢的问题,从而显著缩短整体启动时间,提升用户体验。
剩余23页未读,继续阅读
- 粉丝: 2
- 资源: 2
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- new_bird_c-c语言入门
- christmasTree-圣诞树html网页代码
- working-shell脚本入门——流程控制
- hadoop_install-sqoop数据导入
- ThinkCMF-mysql安装
- BigData-Notes-sqoop的安装与配置
- C语言-leetcode题解之28-implement-strstr.c
- C语言-leetcode题解之27-remove-element.c
- C语言-leetcode题解之26-remove-duplicates-from-sorted-array.c
- C语言-leetcode题解之24-swap-nodes-in-pairs.c
- 1
- 2
前往页