WinCE5.0 SMDK2410 BSP在GEC2410开发板上的移植(11)-BINFS在Nand上的实现(Multi-Bin的实现)

之前我们都是把整个系统镜像复制到RAM中运行,这样启动时间较慢,也占用内存.使用Multi-Bin的模式,将需要复制到RAM的组件和可存放在存储设备(如Nand)中的组件分开,系统启动时只需要将CE核心组件复制到内存中运行,然后需要的组件从Nand中读取即可.之前我们已经在eboot中添加了操作BINFS分区的支持.然后就可以进行系统镜像的定制了.
如何实现可以参考PB帮助How to Implement BinFS一节.
1.修改config.bib进行地址设置
 XIPKERNEL  80001000     00400000    RAMIMAGE
 CHAIN         80401000     00001000    RESERVED
 NK               80402000     02BFF000    NANDIMAGE

 RAM            8C200000     01E00000    RAM
 FLASH         92000000     00100000    RESERVED

XIPKERNEL就是我们的RAMIMAGE,即最小内核,里面存放了启动时必须复制到内存的文件,这里设置4MB大小,可以根据编译出来的XIPKERNEL.bin大小进行调整,MS帮助里用的是NK最为RAMIMAGE,由于RAMIMAGE里的文件较少,为了减少工作量,把common.bib中的少部分文件修改属性(NK->XIPKERNEL)即可.
NK为NANDIMAGE,其他文件就存放在这个区域
CHAIN保持了bin文件的信息

关于RAM的设置,使用Multi-Bin可以增加更多的内存,实际上80402000~82000000范围的内存也可以作为内存来使用,但是由于两片SDRAM的地址不连续,在oemaddrtab_cfg.inc中可以看到:
        DCD     0x80000000, 0x32000000, 32      ; 32 MB DRAM BANK 6
        DCD     0x82000000, 0x08000000, 32      ; 32 MB SROM(SRAM/ROM) BANK 1
        DCD     0x84000000, 0x10000000, 32      ; nGCS2: PCMCIA/PCCARD
        DCD     0x86000000, 0x18000000, 32      ; 32 MB SROM(SRAM/ROM) BANK 3
        DCD     0x88000000, 0x20000000, 32      ; 32 MB SROM(SRAM/ROM) BANK 4
        DCD     0x8A000000, 0x28000000, 32      ; 32 MB SROM(SRAM/ROM) BANK 5
        DCD     0x8C000000, 0x30000000, 32      ; 32 MB DRAM BANK 6
而这里只能设置一片连续的RAM(8C200000起始的一段),关于如何将地址不连续的两段内存同时能被CE使用,我们将在下一节进行研究.

以下为配置信息,注意XIPSCHAIN应该为CHAIN的起始地址

CONFIG
 AUTOSIZE=ON
 COMPRESSION=ON
 DLLADDR_AUTOSIZE=ON
 KERNELFIXUPS=ON
 PROFILE=OFF
 RAM_AUTOSIZE=OFF
 ROMFLAGS=0
 ROM_AUTOSIZE=OFF
 ROMSIZE=03000000
 ROMSTART=80001000
 ROMWIDTH=32
 XIPSCHAIN=80401000

2.修改common.bib
接下来就是文件分配了,XIPKERNEL包括的主要是nk.exe,filesys.exe,还有和binfs存储相关的dll,binfs.dll,mspart.dll等,经过反复测试,需要包括的文件具体如下(可能会有不需要的文件),:
   nk.exe          $(_FLATRELEASEDIR)/kern.exe                 XIPKERNEL  SHXL
   kd.dll          $(_FLATRELEASEDIR)/kd.dll                   XIPKERNEL  SHK
   hd.dll          $(_FLATRELEASEDIR)/hd.dll                   XIPKERNEL  SHK
   osaxst0.dll     $(_FLATRELEASEDIR)/osaxst0.dll              XIPKERNEL  SHK
   osaxst1.dll     $(_FLATRELEASEDIR)/osaxst1.dll              XIPKERNEL  SHK
   coredll.dll     $(_FLATRELEASEDIR)/coredll.dll              XIPKERNEL  SHXL
   filesys.exe     $(_FLATRELEASEDIR)/filesys.exe              XIPKERNEL  SHM
   device.exe      $(_FLATRELEASEDIR)/device.exe               XIPKERNEL  SHM
   devmgr.dll      $(_FLATRELEASEDIR)/devmgr.dll               XIPKERNEL  SHM
   regenum.dll     $(_FLATRELEASEDIR)/regenum.dll              XIPKERNEL  SH
   busenum.dll     $(_FLATRELEASEDIR)/busenum.dll              XIPKERNEL  SH
   pm.dll       $(_FLATRELEASEDIR)/pm.dll                       XIPKERNEL  SHM
   fatfsd.dll       $(_FLATRELEASEDIR)/fatfsd.dll                XIPKERNEL  SH
   diskcache.dll    $(_FLATRELEASEDIR)/diskcache.dll             XIPKERNEL  SH
   fatutil.dll     $(_FLATRELEASEDIR)/fatutil.dll              XIPKERNEL  SH
   fsdmgr.dll      $(_FLATRELEASEDIR)/fsdmgr.dll               XIPKERNEL  SH
   binfs.dll     $(_FLATRELEASEDIR)/binfs.dll                  XIPKERNEL  SH
   mspart.dll     $(_FLATRELEASEDIR)/mspart.dll                XIPKERNEL  SH
   ceddk.dll       $(_FLATRELEASEDIR)/ceddk.dll                XIPKERNEL  SH
   wince.nls       $(_FLATRELEASEDIR)/wince.nls                XIPKERNEL  SHU
   default.fdf     $(_FLATRELEASEDIR)/default.fdf              XIPKERNEL  SH
   boot.hv         $(_FLATRELEASEDIR)/boot.hv                  XIPKERNEL  SH


但是将这段设置放到common.bib下会报重复定义的错误(Warning: Found duplicate entry 'nk.exe')因为这些文件之前都定义在NK上,这样新的设置有可能被忽略掉了,因此我将这些文件的NK属性直接修改为XIPKERNEL(先备份好common.bib,位于/PUBLIC/COMMON/OAK/FILES/common.bib)
如:
IF IMGSIGN
IF IMGPROFILER
   nk.exe          $(_FLATRELEASEDIR)/kernkitlprof.exe         XIPKERNEL  SHXL
ENDIF IMGPROFILER
IF IMGPROFILER !
IF IMGNOKITL
   nk.exe          $(_FLATRELEASEDIR)/kern.exe                 XIPKERNEL  SHXL
ENDIF IMGNOKITL
IF IMGNOKITL !
   nk.exe          $(_FLATRELEASEDIR)/kernkitl.exe             XIPKERNEL  SHXL
ENDIF IMGNOKITL !
ENDIF IMGPROFILER !
ENDIF IMGSIGN

3.注册表设置
[HKEY_LOCAL_MACHINE/init/BootVars]
   "SystemHive"="Documents and Settings//system.hv"
   "ProfileDir"="Documents and Settings"
   "Flags"=dword:3 ;equals to "Start DevMgr"=dword:1
   "RegistryFlags"=dword:1 ;auto flush system.hv
; END HIVE BOOT SECTION
; @CESYSGEN ENDIF FILESYS_FSREGHIVE

; HIVE BOOT SECTION
; @CESYSGEN IF CE_MODULES_SDNPCID

 

; Default values for binfs.  These can be overridden per profile
[HKEY_LOCAL_MACHINE/System/StorageManager/BinFS]
    "FriendlyName"="BIN Filesystem"
    "Dll"="binfs.dll"
    "Paging"=dword:1
 "Folder"="BINFS" 

[HKEY_LOCAL_MACHINE/Drivers/BuiltIn/MSFlash]
        "Profile"="MSFlash"
        "IClass"=multi_sz:"{A4E7EDDA-E575-4252-9D6B-4195D48BB865}"
        "Order"=dword:0
        "FriendlyName"="MSFLASH Driver"
        "Dll"="smflash.dll"
        "Prefix"="DSK"
        "Ioctl"=dword:4     
  "Flags"=dword:1000  
  "BootPhase"=dword:0

[HKEY_LOCAL_MACHINE/System/StorageManager/AutoLoad/MSFlash]
    "DriverPath"="Drivers//BuiltIn//MSFlash"
    ; LoadFlags 0x01 == load synchronously
    "LoadFlags"=dword:1
    "Order"=dword:0
    "BootPhase"=dword:0

; @CESYSGEN ENDIF CE_MODULES_SDNPCID
; END HIVE BOOT SECTION

; HIVE BOOT SECTION
; @CESYSGEN IF CE_MODULES_SDNPCID
[HKEY_LOCAL_MACHINE/System/StorageManager/Profiles/MSFlash]
    "DefaultFileSystem"="BINFS"
    "PartitionDriver"="mspart.dll"
    "MountAsROM"=dword:1
    "MountHidden"=dword:1  ;hide BINFS folder
    "Folder"="Flash  Disk"
    "Name"="FLASH Disk Block Device"
 "AutoMount"=dword:1 
    "AutoPart"=dword:1  
    "BootPhase"=dword:0
    "Flags"=dword:1000 
    "AutoFormat"=dword:1

; Keep FATFS from trying to shadow /Windows
[HKEY_LOCAL_MACHINE/System/StorageManager/Profiles/MSFlash/FATFS]
    "MountAsROM"=dword:0
 "MountHidden"=dword:0  ;display Flash Dish folder
    "MountAsBootable"=dword:1
    "Flags"=dword:00000014    ;FATFS_FORCE_WRITETHROUGH | FATFS_DISABLE_AUTOSCAN
    "EnableWriteBack"=dword:1
    "CheckForFormat"=dword:1 

; @CESYSGEN ENDIF CE_MODULES_SDNPCID
; END HIVE BOOT SECTION

最终编译出来的xip.bin为9.55MB(没有中文支持),里面包含了XIPKERNEL.bin(1.34MB),NK.bin(8.2MB),chain.bin,通过PB将xip.bin烧写到BINFS分区中.设置eboot启动读BINFS分区镜像大小(2MB),这样启动速度明显加快,可以看到BINFS文件夹(MountHidden设为0).
至此,Multi-Bin已基本实现,还剩将两段地址不连续的内存都注册给CE使用,这样内存就能大大增加了.

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/435677.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C# 数据库连接字符串集合

c#数据库连接字符串集合(一)常用连接:1.使用SqlConnection对象: a. Sql 验证public void SqlConnectionOpen(){SqlConnection conn new SqlConnection();conn.ConnectionString "user idsa;password;initial catalognorthwind;datasourcelocalhost;connect Timeout20&quo…

【转】聊聊Linux操作系统中的显示管理器及如何更换

转自:聊聊Linux操作系统中的显示管理器及如何更换 - linux-123 - 博客园 聊聊Linux操作系统中的显示管理器及如何更换 | 《Linux就该这么学》 什么是 Linux 中的显示管理器? 简单来说,显示管理器display manager(DM&#xff09…

winCE改变字库方法(WINCE字库更新)

更新系统字库:例如要在WinCE5.0加入微软雅黑字体的支持。 第一步:增加如下注册表 [HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/FontPath] "FontPath""// Windows " ; 字库文件所在目录 [HKEY_LOCAL_MACHINE/SYSTEM/GDI] "Fon…

【转】[WSL2]WSL2迁移虚拟磁盘文件ext4.vhdx

转自&#xff1a;[WSL2]WSL2迁移虚拟磁盘文件ext4.vhdx_Ryan ZHENG的专栏-CSDN博客 WSL2本质上是一个虚拟机&#xff0c;因此必然存在磁盘镜像文件。 默认情况下&#xff0c;这个镜像文件会放在C盘&#xff08;参考官网举例&#xff1a;%LOCALAPPDATA%\Packages<PackageFa…

WINCE字体动态加载

1. 加载字体 if (NULL ! AddFontResource(SDBOOTDisk\\FZY3JW.ttf)) ::SendMessage( HWND_BROADCAST, WM_FONTCHANGE, 0, 0); else AfxMessageBox(L"加载方正准圆简体字体失败!"); 2.创建字体并设置控件字体 CFont hFontNew&#xff1b; LOGFONT lf; …

ckedit 3.0 配置(一)

个人喜欢使用config.js的方式来使用&#xff0c;下面以此为例&#xff0c;介绍其配置参数。&#xff08;所示为默认值&#xff09;//当提交包含有此编辑器的表单时&#xff0c;是否自动更新元素内的数据config.autoUpdateElement true //编辑器的z-index值 config.baseFloatZI…

【转】Ubuntu中SVN客户端安装+使用

转自&#xff1a;Ubuntu中SVN客户端安装使用_三少GG-CSDN博客 1、 安装 svn客户端&#xff1a; apt-get install subversion&#xff0c;然后根据提示一步一步&#xff0c;就完成了 svn的安装。当然&#xff0c;也可以源码安装 svn&#xff0c;下载 subversion 一个最新版本的源…

x210烧写流程(inand)

今天拿到了x210的开发板&#xff0c;按照手册里的流程无法烧写。后资讯了客服后&#xff0c;才知道我的x210板子是inand的。而手册上讲的是nandflash板子的烧写流程。 以防忘记&#xff0c;把板子的烧写流程记录在此。 1. 拨码开关(OM0 - OM5)调成101101(irom)方式。 2. 打开DN…

【转】Linux命令行下svn ignore忽略文件或文件夹用法

转自&#xff1a;Linux命令行下svn ignore忽略文件或文件夹用法 - 陌上归人的博客 - 博客园 一、忽略单个目录 1、忽略文件夹 假如目录oa.youxi.com是从svn checkout出来的&#xff0c;在服务器本地目录添加了material&#xff0c;但是不希望把material加入版本控制&#xf…

避免Eclipse经常出现Out Of Memory

修改eclipse.ini -showsplash org.eclipse.platform --launcher.XXMaxPermSize 512m -vmargs -Xms256m -Xmx512m -XX:PermSize128M -XX:MaxPermSize128M Eclipse jee galileo DownLoad转载于:https://www.cnblogs.com/sun-li/archive/2010/01/18/1650900.html

PB编译错误:Mismatched time stamp on .rel file for module nk.exe requesting kernel fixup. Valid .rel file

如题&#xff0c;PB编译完后make时出现如下错误&#xff1a; Mismatched time stamp on .rel file for module nk.exe requesting kernel fixup. Valid .rel file is required for kernel fixups. 先Copy一下&#xff0c;再Make即可。 总结&#xff1a;很多情况下&#xff0c;…

【转】CT图像重构方法详解——傅里叶逆变换法、直接反投影法、滤波反投影法

转自&#xff1a;​​​​​​CT图像重构方法详解——傅里叶逆变换法、直接反投影法、滤波反投影法_Absolute Zero-CSDN博客_反投影法 绪 在做CT图像处理的时候遇到很多问题&#xff0c;对于滤波反变换有许多细节存在疑问&#xff0c;经过多天查找资料和利用MATLAB程序一步步实…

JS 对象介绍

JavaScript is an Object Oriented Programming (OOP) language. JS是面向对象的编程语言&#xff08;面向对象&#xff09;。 An OOP language allows you to define your own objects and make your own variable types.OOP语言可以让你自定义对象和变量类型。 -------------…

DNW应用程序错误,DNW错误问题解决

三星的USB驱动一直不是很稳定&#xff0c;有时候调2450&#xff0c;6410的时候&#xff0c;经常会把桌面系统搞得蓝屏。严重的时候&#xff0c;DNW都无法打开&#xff0c;提示DNW应用程序错误。很多人被难在这里了&#xff0c;只能重装系统。其实并不用重装系统&#xff0c;只用…

【转】交织容积重建技术:基本原理与临床价值

转自&#xff1a;交织容积重建技术&#xff1a;基本原理与临床价值_湃客_澎湃新闻-The Paper 原创 赵喜同学 XI区 单击上方蓝色字体 XI 区 或长按识别下方二维码关注我 大家好&#xff0c;欢迎大家访问XI区&#xff01; 所有医学成像系统的目标是从测量数据中提取最大数量的诊…

Tahoma,Arial和宋体英文字体

几年前一直用简体中文版的Widnows XP&#xff0c;从来没有觉得字体怎么怎么样。偶然看见英文版Windows XP就发现菜单或者文件夹的字体很好看&#xff0c;没怎么研究就把我的中文版XP换成了英文版并沿用至今。后来很久才知道可以在Control Panel -> Display -> Appearance…

ASP.NET教程11

最普通与常用的记录删除。如何在Sql Server中写删除的存储过程&#xff0c;如何在asp.net调用删除的存储过程&#xff0c;以及在asp.net的删除事件处理。 文件格式&#xff1a;.wmv&#xff1b;大小&#xff1a;11,450KB&#xff1b;长度&#xff1a;00:14:49。 下载地址&#…

【转】CT解析重建**

转自&#xff1a;CT解析重建 - 知乎 1、傅里叶变换&#xff08;Fourier Transform&#xff09; 白光可以分解成彩色光&#xff0c;彩色光也可合成白光&#xff1b;同样的通过傅里叶变换可将时域下的信号转变成傅里叶域的信号&#xff0c;通过傅里叶逆变换可转换回来。此外&am…

SQL 取n到m条记录

BUG还得自己改啦。。。 1. select top (m-n) * from tablename where id not in (select top n id from tablename) 2. select top m * into 临时表(或表变量) from tablename order by columnname -- 将top m笔插…

WINCE REG文件相关资料

REG文件 注册表文件&#xff0c;这个和Windows操作系统中使用的注册表文件基本一样&#xff0c;在BSP中主要是Platform.reg&#xff0c;该注册表文件描述了和硬件平台相关的配置&#xff0c;大部分是用来描述驱动的相关信息。 注册标的格式如下&#xff1a; de>[KEY1]de&g…