导航:首页 > 文件管理 > wince配置文件

wince配置文件

发布时间:2023-09-30 09:57:19

Ⅰ Win10下开发WinCE的配置

Ⅱ WinCE 6.0系统启动流程详解

Windows CE6.0启动过程分析
在Windows CE 6.0中,内核(Kenerl)和OEM代码被分成oal.exe、kernel.dll和kitl.dll三个部分,其中启动代码(startup)和 OAL层的实现部分不再与内核链接生成NK.exe,取而代之的是启动代码(startup)和硬件相关且独立于内核的OAL层的实现部分编译成 oal.exe,而与内核相关且独立于硬件的OAL层代码包含在kernel.dll中;内核无关传输层(KITL)的支持代码从OAL层分离出来编译成 kitl.dll。
从表面上看,好像只是代码重新组合了一下,从帮助 文档中BSP的移植过程看好像也是这么一回事,实际上,整个Windows CE 6.0内核布局发生了很大的改变。Windows CE 6.0的启动过程也是如此,如果你想按照Windows CE 5.0的启动顺序去分析Windows CE 6.0的启动顺序,可能会走到一个死胡同。主要是因为Windows CE 6.0在启动过程中调用了kernel.dll和kitl.dll两个动态链接库的原因,而且Windows CE6.0不再编译生成KernKitlProf.exe内核文件。
从Windows CE 6.0的帮助文档可以看出,WinCE6.0的启动只与oal.exe和kernel.dll有关,至于kitl.dll,只有将操作系统编译成具有 KITL功能时才用到。分析Windows CE 6.0的启动过程实际上找到编译oal.exe和kernel.dll的源码位置。
首先看一下将WinCE6.0编译成诸如 WinCE5.0所说的基本内核情况,即kern.exe。对于oal.exe源码位置比较容易找到,因为oal.exe是启动代码与硬件相关的OAL层 实现文件编译而成,所以只需在BSP的OAL目录中便能找到。而对于kernel.dll,在BSP目录结构中,基本上无法找到kernel.dll的编 译文件,所以必须从其他方面着手。
下面为WinCE 6.0的编译日志输出文件:makeimg.out在文件复制过程的一部分:
Copying E:\WINCE600\OSDesigns\xsbase270\xsbase270\RelDir\XSBase270_ARMV4I_Release\oal.exe to E:\WINCE600\OSDesigns\xsbase270\xsbase270\RelDir\XSBase270_ARMV4I_Release\nk.exe for debugger Copying E:\WINCE600\OSDesigns\xsbase270\xsbase270\RelDir\XSBase270_ARMV4I_Release\kern.dll to E:\WINCE600\OSDesigns\xsbase270\xsbase270\RelDir\XSBase270_ARMV4I_Release\kernel.dll for debugger
从日志输出文件可以看出,在文件复制过程 中,WinCE6.0编译器将oal.exe更名为nk.exe,而将kern.dll文件更名为kernel.dll,也就是说,kern.dll文件 的实现部分就是kernel.dll的实现体。根据前面的分析,oal.exe是与硬件相关独立于内核的OAL层的实现部分,而kernel.dll为内 核相关独立于硬件的OAL层的实现部分。同样可以从最后整合后的二进制配置文件ce.bib文件中看出端倪。
; @CESYSGEN IF CE_MODULES_NK
nk.exe E:\WINCE600\OSDesigns\xsbase270\xsbase270\RelDir\XSBase270_ARMV4I_Release\oal.exe NK SHZ
kitl.dll E:\WINCE600\OSDesigns\xsbase270\xsbase270\RelDir\XSBase270_ARMV4I_Release\kitl.dll NK SHZ
kernel.dll E:\WINCE600\OSDesigns\xsbase270\xsbase270\RelDir\XSBase270_ARMV4I_Release\kern.dll NK SHZ
; @CESYSGEN ENDIF
而kern.dll动态库在整个Windows CE6.0中没有显式编译过程,即没有一个sources文件有kern.dll的编译过程,所以只能从操作系统的编译文件Makefile中寻找其编译 过程。下面看一下$(_PUBLICROOT)\common\CESYSGEN\makefile中的部分内容:
nk::$(NK_COMPONENTS) $(NK_REPLACE_COMPONENTS)
@ $(SG_INPUT_LIB)\oemstub.pdb $(SG_OUTPUT_OAKLIB)
@ $(SG_INPUT_LIB)\oemstub.lib $(SG_OUTPUT_OAKLIB)
set TARGETTYPE=DYNLINK
set TARGETNAME=kern
set RELEASETYPE=OAK
set DLLENTRY=NKStartup
set DEFFILE=NO_DEF_FILE
set TARGETLIBS=
set SOURCELIBS=%%NKLIBS%% $(SG_INPUT_LIB)\nkmain.lib $(SG_INPUT_LIB)\fulllibc.lib
$(MAKECMD) /NOLOGO NOLIBC=1 kern.dll
从上述代码中可以发现,原来kern.dll动态库是从oemstub.lib编译而来,而且与nkmain.lib有关。
在理顺了上述文件的相互之间的关系之后,再来分析Windows CE 6.0的启动过程可能就比较容易啦。
在理清了上述文件的关系之后,便可以分析任意一款基于ARM微处理器的Windows CE 6.0的启动过程,现在以深圳亿道电子技术有限公司开发的基于PXA270 ARM开发平台为例,分析Windows CE 6.0操作系统启动过程。
1、Startup函数:
从Windows CE 6.0的帮助文档可以看出,WinCE6.0的启动只与oal.exe和kernel.dll有关,至于kitl.dll,只有将操作系统编译成具有 KITL功能时才用到。分析Windows CE 6.0的启动过程实际上找到编译oal.exe和kernel.dll的源码位置。
oal.exe的通过Startup函数完成硬件 的初始化。Startup.s代码与该硬件平台的Bootloader启动代码共用,其中PreInit函数主要完成将ARM处理器工作模式切换到管理员 模式、同时关闭MMU,并检测系统启动原因,如果是热启动、即在该函数调用之前已经启动了Bootloader程序,相当基本硬件初始化已经完成,则直接 跳转到OALStartUp函数中;否则需要进行硬件中断屏蔽、内存、系统时钟频率、电源管理等硬件的基本初始化过程。(具体过程见代码的分析)
$(_PLATFORMROOT)\xsbase270\src\common\Startup\Startup.s
LEAF_ENTRY StartUp
bl PreInit
tst r10, #RCSR_HARD_RESET
beq OALStartUp
tst r10, #RCSR_GPIO_RESET
bne Continue_StartUp
bl xlli_mem_init ;初始化内存控制器
ldr r0, =xlli_PMRCREGS_PHYSICAL_BASE;
ldr r0, [r0, #xlli_PSPR_offset];
mov r1, r10;
bl XllpPmValidateResumeFromSleep;
cmp r0, #0;
bne Failed_Sleep_Resume;
Sleep_Reset
ldr r0, =xlli_PMRCREGS_PHYSICAL_BASE;
ldr r0, [r0, #xlli_PSPR_offset];
mov r1, r10;
b XllpPmGoToContextRestoration;
Failed_Sleep_Resume
ldr r1, =xlli_RCSR_SMR
bic r10, r10, r1
Continue_StartUp
bl xlli_intr_init; ;初始化中断控制器
bl EnableClks; ;使能内核时钟(内存/OS定时器/FFART时钟之需)
bl OALXScaleSetFrequencies ;设置系统频率
bl xlli_mem_Topt
bl xlli_mem_restart ;复位内存,使其处于工作模式
bl xlli_ost_init ;初始化操作系统定时器
bl xlli_pwrmgr_init ;初始化电源管理
bl xlli_IMpwr_init ;初始化内部存储器
b
ENTRY_END
2、OALStartUp函数:
在系统硬件初始化完毕之后,Startup调用 OALStartUp函数,OALStartUp函数主要完成将OEMAddressTable表传递给内核;然后调用KernelStart函数跳转到 内核OEMAddressTable表的主要作用表的每一个入口都定义了一个内存中的物理位置、内存的大小以及映射这物理地址的静态虚拟地址;
◆静态虚拟内存地址被定义在缓冲存储器的范围之内;
◆内核可以创建非缓冲的内存地址指向到相同的物理地址;
◆对于同一物理地址,既有一个缓冲的虚拟内存地址,也有一个非缓冲的虚拟内存地址;
◆OEMAddressTable最后必须以0结尾;
◆对于MIPS和SHx类型的CPU,物理地址与虚拟地址的映射由CPU完成,无需创建OEMAddressTable
$(_PLATFORMROOT)\xsbase270\src\Inc\ Oemaddrtab_cfg.inc):
$(_PLATFORMROOT)\xsbase270\src\oal\OalLib\Startup.s

3、KernelStart函数主要作用:
◆完成OEMAddressTable表中的物理地址到虚拟地址和虚拟地址到物理地址之间的映射;
◆对存储器页表和内核参数区存储空间(RAM或DRAM)进行清零处理。
◆读出CPU的ID号,内核需要根据该ID决定ARM的MMU处理,因为ARMV6和ARMV6之前的ARM处理器的MMU处理过程有所区别;
◆设置并开启MMU和Cache,因为在Startup函数关闭MMU和Cache;
◆设置ARM处理器工作模式的SP指针,ARM处理器共用7种不同的工作模式 (USER、FIQ、IRQ、Supervisor、Abort、Undefined、System),除用户模式(USER)和系统模式 (System)之外,其他5种工作模式都有具有特定的SP指针寄存器(ARM处理器称其为影子寄存器);
◆读取内核启动所需要的KDataStruct结构体;
◆调用ARMInit函数重新定位Windows CE内核参数pTOC和初始化OEMInitGlobals全局变量;
◆利用mov pc, r12指令跳转到kernel.dll的入口位置,即NKStartup函数中。
$(_PRIVATEROOT)WINCEOS\COREOS\NK\LDR\ARM\armstart.s

4、ARMInit函数:
在ARMInit之前,系统仍无法使用全局变量, 因为系统的全局还在ROM区域,对于操作系统而言,出于安全考虑,只有XIP程序才有读取ROM区域数据的权利,对于大部分Windows CE 操作系统,只有将数据拷贝到RAM区域后才能进行读写,ARMInit函数中通过调用KernelRelocate函数对pTOC全局变量重新定位,定位 之后,对内核启动所需要的KDataStruct结构体进行初始化,其中OEMInitGlobals便是交换oal.exe和kernel.dll之间 的全局指针,ARMInit函数返回kernel.dll的入口位置。并在KernelStart函数最后利用mov pc, r12指令跳转到kernel.dll的入口位置,即NKStartup函数中。
$(_PRIVATEROOT)WINCEOS\COREOS\NK\LDR\ARM\arminit.c

5、NKStartup函数:
硬件平台初始化完成后,oal.exe的启动任务基本完成,余下的启动工作由内核相关且独立于内核的OAL层实现体kernel.dll接管。kernel.dll主要作用:
◆从结构体参数KDataStruct * pKData提取内核启动时所必须的全局变量,同时初始化内核全局变量;
◆定位对Windows CE 6.0特有的OEMGLOBAL结构体的初始化函数OEMInitGlobals地址,该结构体构建了内核和OAL层之间进行通信的桥梁。在 OEMGLOBAL结构体定义了OAL层所必须的函数,该结构体在oemglobal.c文件中被初始化,并被编译在OEMMain.lib和 OEMMain_StaticKITL.lib两个库中,如果OAL链接这两个库,则必须要有该结构体中函数实现体;
◆通过调用ARMSetup设置物理地址和非缓冲的虚拟内存地址的映射、ARM中断向量以及内核模式所需要的堆栈。
◆调用OEMInitDebugSerial函数初始化调试串口;
◆调用OEMInit进行平台初始化;
需要注意的时,NKStartup函数调用OEMInitDebugSerial和 OEMInit函数的过程与Windows CE 6.0之前的版本完全不同,这是因为在Windows CE 6.0以前的版本中,由于内核(kernel)、OAL和KITL编译在一个可执行的文件中,它们之间的共享变量只需简单利用extern关键字申明便可 相互之间进行访问,而在Windows CE 6.0中,由于内核(kernel)、OAL和KITL被编译成不同的可执行文件,变量之间的相互访问无法使用extern关键字实现共享,即内核无法使 用extern DWORD varX方法访问OAL层的变量varX,当然OAL层的实现体同样无法通过同样的方式访问内核变量。为实现内核和OAL访问共享信息,Windows CE 6.0定义了OEMGLOBAL和GLOBAL两个结构体。
在 Windows CE 6.0的内核启动时,OS找到OAL的入口位置,然后调用入口函数与全局块进行指针交换,这样内核才能使用OAL层中的信息,同样OAL层才能访问内核(kernel)导出的函数。
所以上述两个函数的调用实际上通过OEMGLOBAL结构体实现的。实际调用位置为$(_PRIVATEROOT)\winceos\coreos \nk\oemstub\oemstub.c中的OEMInitDebugSerial和OEMInit,这两个函数中通过OEMGLOBAL结构体指针 访问OAL层中的OEMInitDebugSerial和OEMInit。
首先看一下将WinCE6.0编译成诸如WinCE5.0所说的基本内核情况,即kern.exe。对于oal.exe源码位置比较容易找到,因为 oal.exe是启动代码与硬件相关的OAL层实现文件编译而成,所以只需在BSP的OAL目录中便能找到。而对于kernel.dll,在BSP目录结 构中,基本上无法找到kernel.dll的编译文件,所以必须从其他方面着手。
调用KernelFindMemory()函数分割RAM区域,在Windows CE操作系统中,RAM空间主要分为存储内存和程序内存,存储内存主要为文件的存储空间,包括内核文件和复制到系统中所有目标文件,程序内存为运行程序时所需要的存储空间。

◆KernelStart ()启动内核。
$(_PRIVATEROOT)\WINCEOS\COREOS\NK\KERNEL\ARM\mdarm.c
void NKStartup (struct KDataStruct * pKData)
{
。。。。
}
6、KernelSstart函数:
这里的KernelStart函数与前面的KernelStart函数的属于两个完全不 同的函数,NKStartup函数中调用的KernelStart函数为$(_PRIVATEROOT)\WINCEOS\COREOS\NK \KERNEL\ARM\armtrap.s文件中的KernelStart函数,主要完成调用内核初始化函数KernelInit,并跳转到操作系统的 第一个启动的任务。
LEAF_ENTRY KernelStart
ldr r4, =KData ; (r4) = ptr to KDataStruct
ldr r0, =APIRet
str r0, [r4, #pAPIReturn] ; set API return address
mov r1, #SVC_MODE
msr cpsr_c, r1 ; switch to Supervisor Mode w/IRQs enabled
CALL KernelInit ; initialize scheler, etc.
mov r0, #0 ; no current thread
mov r1, #ID_RESCHEDULE
b FirstSchele
ENTRY_END
7、KernelInit函数:
Windows CE 6.0的内核初始化函数同其他版本的内核初始化函数基本相近,主要完成在启动第一个线程前对内核进行初始化,主要包括API函数集初始化、堆的初始化、初始化内存池、进程初始化、线程初始化和文件映射初始化等操作。
void KernelInit (void)
。。。{
}
8、FirstSchele:
FirstSchele函数为Windows CE操作系统启动过程中最后无条件跳转的一个函数,windows CE进行第一个调度,实际为一个空闲线程,因为windows CE系统还没有完成启动,只有当windows CE完全启动并进入稳定状态,然后启动文件系统filesys.dll,设备管理device.dll,窗体图像子系统gews.dll和shell程序 explore.exe。

Ⅲ 如何将文本文档改为ini格式

直接把扩展名txt改成ini,ini文件也可以用文本文档直接打开。
其实INI文件就是简单的text文件,只不过这种txt文件要遵循一定的INI文件格式。现在的WINCE系统上也常常用INI文件作为配置文件。“.INI ”就是英文 “initialization”的头三个字母的缩写;当然INI file的后缀名也不一定是".ini"也可以是".cfg",".conf ”或者是".txt"。
ini经典格式:

INI文件的格式很简单,最基本的三个要素是:parameters,sections和comments。

什么是parameters?

INI所包含的最基本的“元素”就是parameter;每一个parameter都有一个name和一个value,name和value是由等号“=”隔开。name在等号的左边。

如:

name = value

什么是sections ?

所有的parameters都是以sections为单位结合在一起的。所有的section名称都是独占一行,并且sections名字都被方括号包围着([ and ])。在section声明后的所有parameters都是属于该section。对于一个section没有明显的结束标志符,一个section的开始就是上一个section的结束,或者是end of the file。Sections一般情况下不能被nested,当然特殊情况下也可以实现sections的嵌套。

section如下所示:

[section]

什么是comments ?

在INI文件中注释语句是以分号“;”开始的。所有的所有的注释语句不管多长都是独占一行直到结束的。在分号和行结束符之间的所有内容都是被忽略的。

注释实例如下:

;comments text

当然,上面讲的都是最经典的INI文件格式,随着使用的需求INI文件的格式也出现了很多变种;

INI实例:

; last modified 1 April 2001 by John Doe
[owner]
name=John Doe
organization=Acme Procts

[database]
server=192.0.1.42 ; use IP address in case network name resolution is not working
port=142
file = "acme payroll.dat"

Ⅳ BSP(Board Support Packet)是什么

BSP就是买开发板,开发板的生产商提供的一个资料和资源包

通常包括:

一 硬件相关:
1 开发板原理图
2 开发板元件列表
3 接口定义
4 地址分布

二 软件相关:
1 某些操作系统的bootloader及源代码
2 某些操作系统裁剪好的映像文件(如linux系列可能有源码,如WinCE可能有CEC文件)

三 服务相关
1 售后的技术支持(根据价格,差异很大)

但以上并非一定都有,根据生产商和芯片的不同,会有一定增减,建议按照自己的要求多比较

PS:这个问题其实不值那么多悬赏,呵呵,你也不富裕

呵呵,消消火气,这年头都是不懂的面试懂的,习惯了就好,下回主动唬他们,问他们知道DD不(device driver)
^-^

Ⅳ 怎样才能进入导航wince系统

步骤如下:
第一步:要先下载地图软件;

第二步:用电脑查找SD卡上原地图文件中含端口与波特率的文件(一般为ini,txt后缀的文件),看一下是多少(例如:端口(COM):1,波特率(BAUDRATE):4800)。这个文件在不同的机器里是不一样的文件名称。你要仔细找,然后记下。

第三步:把下载好的地图软件通过电脑复制到SD卡上,替换原地图。

第四步:打开新地图文件中找到含端口与波特率的文件(一般为ini,txt后缀的文件),改成刚才记下的数据(例如:端口(COM):1,波特率(BAUDRATE):4800)。

第五步:在GPS中设置一下地图的默认路径,不同品牌型号的GPS默认路径设置都是大同小异的。一种(如中恒MV770)在操作系统中依次进入“系统设置”---“文件管理”---“SDMMC”---,最后找到“*.EXE”的运行文件,将这个文件设置为GPS的默认路径就可以了。另一种就是要找到系统的配置文件(一般为cfg,txt后缀的文件),把其中的路径名改为你新地图的路径名保存(我用的是恒太gps,改MobileNavigator目录下ConFig.txt文件,即把ConFig.txt里的路径改为新的路径即可)。

剩下的就是把SD卡插入机器,就完成了。

Ⅵ U盘的格式化系统FAT32和exFAT有什么区别

U盘FAT32和exFAT的区别如下:

一、U盘文件系统类型的区别

1、FAT32 文件系统 FAT32使用4个字节(也就是32位)的空间来表示每个扇区(Sector)配置文件的情形,故称之为FAT32,其分区容量下限是 512MB,不同操作系统的上限不同,例如Win2000最大支持32GB FAT32分区,而WinXP最大可达2TB FAT32分区。

2、exFAT 文件系统 是Microsoft在Windows Embeded 5.0以上(包括Windows CE 5.0、6.0、 Windows Mobile5、6、6.1)中引入的一种适合于闪存的文件系统,为了解决FAT32等不支持4G及其更大的文件而推出。

二、可用4GB文件的区别

1、大多数优盘在租缺格式化时选用FAT32为默认文件系统,它最大优点就是在一个不超过8GB的分区中,FAT32分区格式的每个簇容量都固定为4KB,与前代相比可以大大地减少磁盘的浪费,提高磁盘利用率。

2、虽然对于最大分区容量的支持上面,FAT32 2TB最大分区的州型圆容量时至今日仍不过时,但FAT32无法传输并存放超过4GB容量的光盘ISO镜像、高清视频、各种图形作品文件等等,这是其致命的弊端。

(6)wince配置文件扩展阅读

exFAT的作用

exFAT的U盘不是很在意U盘的存取效能,那么现在市面上4G、8G的MLC U盘可以说一点都不贵,这种容量对FAT32支持的单一分割最大容量(32GB)并不成问题,不过超过4GB的文件就有点麻烦。

虽然说很少有单一文件超过4GB的机会,但不代表完全没有:如BD影片的Remux文件、BD/HD影片的原始文件、无损音乐爱好者的未压缩音频文件、DVD光碟的ISO文件、从DV上撷取下来的AVI文件等等,想要完整备份就得选择NTFS或exFAT做为储存格式。

exFAT原本设计的目的是在FAT32与NTFS之间取得一个折中,有FAT32的轻便、不需要耗损太多的效能及记忆体来处理文件运作,又有类似NTFS的CAL存取控制机制,以及类似HPFS系统可快速整理可用丛集空间的Free Space Bitmap,来将档案破碎的情况尽量减少。

要真正比较出使用FAT32、NTFS及exFAT时册塌的档案破碎情况很难做到客观的评比,剩下所能测试的就是存取效能了,尤其是exFAT最大的簇大小达到了惊人的32MB,连NTFS都只有64KB。

exFAT是适用于随身碟或随身型携带装置(如PDA)的新格式,最早出现在2006年的WinCE 6.0,为了增进与桌面操作系统的相容性还有便于随身装置的同步需求,到了Vista SP1正式被纳入桌面操作系统所支持的档案系统,但跟一般玩家息息相关的,还是在于U盘上的应用。

参考资料来源:网络-exFAT

Ⅶ 新科鲁兹原装导航怎么改成凯立德

将原厂导航更改为凯立德导航
已实现的效果:在副驾储物箱插上U盘或SD卡,点击导航图标进入凯立德导航;拔出U盘或SD卡,点击导航图标进入原厂高德导航。不影响车机其它功能的使用
步骤
1、进入wince界面(原理不说了)
准备一张容量8G以上的SD卡或U盘,将Shincoupdate.exe文件拷贝至SD卡或U盘根目录,重新上电,自动进入wince界面
2、拷贝地图文件
在网上下载最新版的凯立德导航地图,
点击进入NaviOne文件夹,再进入NaviResFile文件夹,双击KLD_CfgDiy工具修改NaviConfig.dll文件,将音量更改为40-50之间,点击右键保存,切记!不然会有惊喜(也可下载我改好的文件,直接覆盖)音量在进入导航后可调整。
3、更改远峰引导程序配置文件
在wince界面点击My Device进入,点击ResidentFlash2进入,发现YFAPP文件夹,点击进入,发现index.ini配置文件,这个文件需要拷贝到电脑上更改。
若用的是SD卡将Path2更改为Path2=USB_SDNaviOneNaviOne.exe
若用的U盘将Path2更改为Path2=USB DiskNaviOneNaviOne.exe
因为Path9为原厂导航路径,此处改Path1到Path8任何一个均可。
先把 ResidentFlash2YFAPP文件夹里面index.ini文件删除,将在电脑上改好的文件或者下载的改好的文件拷贝到这个文件夹里面。
4、删掉SD卡或U盘中的Shincoupdate.exe文件,重启车机,点击导航图标,正常进入凯立德导航界面
点击右上角音量小图标,可以通过右下角的切换进入原车机主界面,正常进行播放音乐或收音机的操作。拔出U盘或SD卡,点击车机主界面导航图标,可进入原厂高德导航,不影响双屏互动和实时路况的使用!

阅读全文

与wince配置文件相关的资料

热点内容
微信视频不能转发朋友圈 浏览:596
影视后期的app有哪些 浏览:956
电子保单数据出错什么意思 浏览:368
如何以文件下载音乐 浏览:438
计算机网络章节练习 浏览:999
单片机的外部中断程序 浏览:48
表格批量更名找不到指定文件 浏览:869
js的elseif 浏览:584
3dmaxvray视频教程 浏览:905
imgtool工具中文版 浏览:539
java帮助文件在哪里 浏览:965
win10切换输入语言 浏览:696
haier电视网络用不了怎么办 浏览:361
苹果6手机id怎么更改 浏览:179
米家扫地机器人下载什么app 浏览:82
如何在编程猫代码岛20种树 浏览:915
手机基础信息存储在哪个文件 浏览:726
如何查找手机备份文件 浏览:792
内存清理工具formac 浏览:323
iphone过滤骚扰电话 浏览:981

友情链接