wince2秒快速启动TOC分析

为什么29M的wince内核nk.nb0文件在2秒钟就能快速启动,如果你用汇编设计一个从NAND单纯拷贝29M nk.nb0的快速程序,你会发现用200MFCLK的2410或者用400MFCLK的2440都至少需要十几秒,那为什么ce能够启动这么快呢,有什么加速算法吗?答案是肯定的,并不需要一次性将所有nk.nb0数据都加载到内存,应该按需加载,那就是ce的镜像文件image“按需加载”[“段式加载”]方式,TOC就是用来描述ce内核镜像文件image的xipkernel段核心结构体,我们只需加载核文件xipkernel就能正常启动进入wince界面。

------------------------------------------------------------

硬件环境QT2440A:

NAND[K9F1208U0C]-64M(启动)

Block0-加载Block2内容的loader程序

Block1-512字节的TOC结构体存储空间

Block2-加载umon或者结合TOC加载nk.nb0的loader程序

------------------------------------------------------------

 

typedef struct _TOC {

    //和CSW中的认证域类似,只用来验证接下去内容的合法

DWORD               dwSignature;

//包含image的索引(我的是1)、启动delay时间、ip地址、MAC地址和掩码等

BOOT_CFG            BootCfg;

//用来描述3个之多的ce内核image数组,我用的是id[1]

    IMAGE_DESCRIPTOR    id[MAX_TOC_DESCRIPTORS];

    CHAININFO           chainInfo;

} TOC, *PTOC;                                        // 512 字节

 

typedef struct _IMAGE_DESCRIPTOR {

    DWORD dwVersion;                                 //编译时的版本号

    DWORD dwSignature;                               //“EBOOT”或“CFSH”等

    UCHAR ucString[IMAGE_STRING_LEN];                //描述字符串:如"eboot.nb0"之类

 

    DWORD dwImageType;                               //image的类型nk.nb0为0x04

    DWORD dwTtlSectors;                              //image文件用到的NAND的扇区总数

 

    DWORD dwLoadAddress;                             //image加载时的虚拟地址

    DWORD dwJumpAddress;                             //image加载完成后的跳转地址

 

    SG_SECTOR sgList[MAX_SG_SECTORS];                //image的段描述,包括起始扇区号和所需扇区数目

       ULONG dwStoreOffset;

} IMAGE_DESCRIPTOR, *PIMAGE_DESCRIPTOR;

 

==========================

Loader的输出:

'U' for USBMON

******

Total Sectors:0x0000e800

Sector addr on NAND: 0x000002a0

TotalSector: 0x0000e800

Reading Kernel Image from NAND

 

    dwSector: 0x000002a0

    dwLength: 0x0000e800

dwRAM: 0x30200000

==========================

eboot.nb0的输出:

Microsoft Windows CE Ethernet Bootloader Common Library Version 1.0 Built Dec 20 2006 22:35:26

Copyright (c) 2000-2001  Microsoft Corporation

Microsoft Windows CE SMDK2440 Bootloader Version 1.2 Built Dec 20 2006 22:35:23

FMD::FMD_Init

 

FMD::FMD_Init Done

 

TOC_Read

TOC {

dwSignature: 0x434F544E

BootCfg {

  ConfigFlags: 0x3820

  BootDelay: 0xF

  ImageIndex: 1

  IP: 192.168.1.108

  MAC Address: 00:00:00:00:00:00

  Port: 0.0.0.0

  SubnetMask: 255.255.255.0

}

ID[0] {

  dwVersion: 0x10002

  dwSignature: 0x45424F54

  String: 'eboot.nb0'

  dwImageType: 0x2

  dwTtlSectors: 0x100

  dwLoadAddress: 0x8C038000

  dwJumpAddress: 0x8C038000

  dwStoreOffset: 0x0

  sgList[0].dwSector: 0x40

  sgList[0].dwLength: 0x100

}

ID[1] {

  dwVersion: 0x1

  dwSignature: 0x43465349

  String: ''

  dwImageType: 0x6

  dwTtlSectors: 0xE800

  dwLoadAddress: 0x8C200000

  dwJumpAddress: 0x8C201000

  dwStoreOffset: 0x0

  sgList[0].dwSector: 0x2A0

  sgList[0].dwLength: 0xE800

}

chainInfo.dwLoadAddress: 0X00000000

chainInfo.dwFlashAddress: 0X00000000

chainInfo.dwLength: 0X00000000

}

-TOC_Read

Press [ENTER] to download image now, or [SPACE] to enter boot monitor.

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

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

相关文章

插座上的Linux充电器.不..Marvell Plug Computer

一直以来,台式机都有变小的趋势,于是变成了一体机,主机也有变小的趋势,那样可以占用更小的空间,却提供一样的功 能,Marvell Plug Computer 3.0 同样是那种壁插式主机,身形小巧,能够直…

【转】tftp命令详解

转自:tftp命令详解 - 张大猛 - 博客园 介绍一个 FTP客户端-IIS7服务器管理工具 作为FTP客户端,它支持批量管理ftp站点。定时上传和定时下载,定时备份,且操作简洁。同时iis7服务器管理工具还是vnc客户端。并且支持批量管理管理…

对Multi-bin 技术的理解

[bin文件的格式]: Bin文件格式比较简单.结构如下: struct BinFile { BYTE signature[7]; //前面7个字节是标志, 固定的{‘B’,‘0’,‘0’,‘0’,‘F’,‘F’,‘\a’}. DWORD ImageStart; //Image Start表示image的开始地址 DWORD ImageLength; …

关于C#程序调用AMFPHP服务的问题!!

我想实现的功能是实现一个c# winform客户端(web也行),与php服务器以amf3格式通信,其实就是模拟flex与php通信的机制,这方面资料真的太少了,不知道该怎么实现,求帮助,谢谢&#xff01…

【转】总结_C++日志系统log4cxx使用

转自:总结_C日志系统log4cxx使用_OneByOne-CSDN博客_log4cxx C日志系统log4cxx使用总结 参考连接: log4CXX第二篇---配置文件(properties文件)详解_crazyhacking的专栏-CSDN博客 C日志系统log4cxx使用总结_邵明_新浪博客 一、log4cxx组件…

S3c2440A平台HIVE注册表+binfs的实现

我的例子是基于samsung S3C2440A+samsung ONENANDWinCE5.0的,开发平台是platform builder 5.0,首先我们基于RAM register的image已经可以正常跑起来了,Flash除了放置image外其他的空间为用户提供文件系统,这部分的驱动…

DHT

DHT 类似Tracker的根据种子特征码返回种子信息的网络.DHT全称叫分布式哈希表(Distributed Hash Table),是一种分布式存储方法。在不需要服务器的情况下,每个客户端负责一个小范围的路由,并负责存储一小部分数据,从而实现整个DHT网…

【转】日志记录库(log4cxx)使用指南

转自:日志记录库(log4cxx)使用指南_外环西路-CSDN博客 一、Log4j、log4cxx简介 Log4j、log4cxx有三个主要的组件: Loggers(记录器),Appenders (输出源)和Layouts(布局)。Loggers(记录器): 负责执行记录日…

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

之前我们都是把整个系统镜像复制到RAM中运行,这样启动时间较慢,也占用内存.使用Multi-Bin的模式,将需要复制到RAM的组件和可存放在存储设备(如Nand)中的组件分开,系统启动时只需要将CE核心组件复制到内存中运行,然后需要的组件从Nand中读取即可.之前我们已经在eboot中添加了操作…

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;…