WinCE Eboot中的OEM Flash函数
原文地址:http://blog.csdn.net/nanjianhui/archive/2008/11/12/3283072.aspx
作者:ARM-WinCE
在EBOOT中提供了操作Flash的功能,可以将下载的WinCE image烧到Flash当中,这需要实现一些Flash相关的OEM函数。
这些OEM函数会在BLCOMMON模块中被调用,也就是在blcommon.c文件的DownloadImage函数中被调用。在DownloadImage函数中,一般image文件的header会被先下载并进行解析。然后调用OEMIsFlashAddr判断image所在的区域,如果是在Flash的地址空间内,那么接下来会下载image文件并调用Flash相关的OEM函数将Flash擦除并写入。下面简单介绍一下这些函数:
1. BOOL OEMIsFlashAddr(DWORD dwAddr)
该函数用于判断下载的WinCE image文件是在Flash区域中还是在RAM区域中,dwAddr是image文件的地址,如果在Flash区域中返回TRUE,否则返回FALSE,给个微软的例子:
#define FLASH_START 0
#define FLASH_LENGTH 0x02000000
BOOL OEMIsFlashAddr(DWORD dwAddr)
{
//根据Flash的起始地址和长度判断该地址是否在Flash区域内
if ((dwAddr >= FLASH_START) && (dwAddr < (FLASH_START + FLASH_LENGTH)))
{
return(TRUE);
}
return(FALSE);
}
2. BOOL OEMStartEraseFlash(DWORD dwStartAddr, DWORD dwLength)
该函数用于初始化Flash的擦除,dwStartAddr表示要擦除的起始地址,dwLength为长度。通过这两个参数计算Flash中要被擦除的起始block和最后一个block,以及要擦除多少个block,给个微软的例子:
BOOL OEMStartEraseFlash (DWORD dwStartAddr, DWORD dwLength)
{
ULONG i = 0;
ULONG nNumBlocks = 0;
//判断起始地址和终止地址是否都在Flash区域内
if (!OEMIsFlashAddr(dwStartAddr) || !OEMIsFlashAddr(dwStartAddr + dwLength - 1))
{
return(FALSE);
相关文档:
假如你没有时间去体验Flash Builder 4的Bate版,也许你很想知道Flash Builder4有哪些新的特性。即使你体验过Bate2的版本,相对正式版本来说,还有一些新的特性。
我们的产品市场组在总结新的特性方面,已做了足够的工作。但是若你想了解每一个新特性(70多个)的详细信息,我把它们详细地列出来了,还有一些文档,你可以结合 ......
效果出来了,可就是太依赖uCenter了,不知道怎么独立出来
<object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=9,0,0,0" width="447" height="477" id="mycamera" align="middle">
<param n ......
一直都有先烈往这块领域投奔,为flash
产业做出辉煌的贡献,为此今天特撰此文以告后
人避免重蹈覆辙.
MMO APRG游戏
的最关键问题是网络延时,一旦网络延时过大,就会给
玩家造成很差的游戏体验,这点是很致命的,那么flash能不能胜任呢?
除去Adobe
的RTMFP(UDP协议)之外,目前我们在
flash上能用的通讯协议只有TCP ......
首先,配置RedBoot的IP及其tftp服务器IP,装好tftp服务器,需要下载的内核及内存镜象应放在服务器的/tftpboot目录下
配置RedBoot的指令是
> fconfig
注意:启动的延时不要设为0,否则以后就很难再更改系统了
然后要执行flash存储器的初始化工作:
> fis init
之后,将kernel与ramdisk.gz通过tftp下载至内存并写 ......