毕业论文开发语言企业开发JAVA技术.NET技术WEB开发Linux/Unix数据库技术Windows平台移动平台嵌入式论文范文英语论文
您现在的位置: 毕业论文 >> 开发语言 >> 正文

为什么IMAGE_TYPE_RAWBIN 要FILE_CACHE_START

更新时间:2013-2-13:  来源:毕业论文
if (g_ImageType & IMAGE_TYPE_RAWBIN)
  {
  OALMSG(TRUE, (TEXT("OEMMapMemAddr 0x%x 0x%x\r\n"),dwAddr,(FILE_CACHE_START + dwAddr)));
dwAddr = FILE_CACHE_START + dwAddr;
return (LPBYTE)dwAddr;
}
---》我觉得这时候应该是判断IMAGE_TYPE_RAMIMAGE才对,而bootloader中应该不支持IMAGE_TYPE_RAWBIN类型的映像了,根据OEMVerifyMemory函数可以做出这个判读,不知这样理解是否正确

在TQ2440中使用Nand Flash存储OS,执行是在SDRam中,则下载到SDRam的地址就是直接执行的,
但为什么IMAGE_TYPE_RAWBIN 和IMAGE_TYPE_RAMIMAGE的映射不同,为什么IMAGE_TYPE_RAWBIN 要FILE_CACHE_START 第2页?
---》如果目标系统的需求是要能支持把操作系统的镜像文件下载到FLASH中去,就必须调用OEMMapMemAddr函数。由于FLASH操作速度比RAM慢,在片擦除的时候甚至会使读写操作停滞,这样在每次下载操作系统镜像文件时,由于FLASH的擦写都会使下载停滞。而OEMMapMemAddr使用了RAM缓冲操作系统镜像文件的方式,使得用户在下载操作系统镜像文件时感觉不到停滞,这个函数将FLASH地址映射到RAM地址,这样向FLASH写的数据实际上先被缓冲到RAM中,然后再写到FLASH中

TQ2440开发板的FILE_CACHE_START定义如下:

#define FILE_CACHE_START (0x80200000 | CACHED_TO_UNCACHED_OFFSET)
                                //= 0xA020_0000 , out of range of RAM

其中#define CACHED_TO_UNCACHED_OFFSET 0x20000000
这样FILE_CACHE_START = 0xA020_0000

这个地址并不在SDRAM的地址范围,

上一页  [1] [2] 

设为首页 | 联系站长 | 友情链接 | 网站地图 |

copyright©youerw.com 优尔论文网 严禁转载
如果本毕业论文网损害了您的利益或者侵犯了您的权利,请及时联系,我们一定会及时改正。