VMCEPC BSP的一些更新说明

有人嘲笑说我又把博客写成了年记。真是惭愧,离上一次更新已经大半年过去了,2007年可能是我有史以来最忙碌的一年,项目的压力和生活的琐事让我根本没有心思来关心博客。现在总算可以说松了一口气,我想,我的博客也该更新了。

有不少朋友写信给我询问VMWare BSP的一些问题,这里做一些回答:
1,我提供的BSP是根据哪个BSP改的?
是根据CEPC改的。要不然怎么叫VMCEPC。

2, MS-DOS.vmdk这些文件怎么做?
我想,玩过VMWare的都应该知道怎么做-我以为是常识。

3,网卡驱动。
我很奇怪为什么很多人写信跟我要网卡驱动。BSP已经提供了所有的东西。不过默认状态下如果你用我提供的BSP来build kernel,会惊讶的发现网卡不能工作,呵呵。这是因为kernel里集成的网卡driver是用 'VMCEPC\src\drivers\netcard\pcnet'目录下的源代码build出来的,而实际能工作的driver其实是'VMCEPC\FILES'下的二进制版本pcntn4m.dll。在很早很早以前,我本来是想根据这份源代码改出一个能在VMWare下用的版本,后来因为各种原因,没做-_-!,结果就有了这么个问题。改正过来很简单,编辑platform.bib文件,找出这一行:
pcntn4m.dll $(_FLATRELEASEDIR)\pcntn4m.dll NK SH
改为:
pcntn4m.dll $(_TARGETPLATROOT)\files\pcntn4m.dll NK SH
就搞定了。

4,提供的下载链接失效了。
这倒是个麻烦问题。googlepages似乎是被GFW封掉了,我也暂时没想好还有哪儿可以放。

5,CD-ROM支持。这其实是我一直以来想支持但没能支持的一个功能。现在问题终于搞清楚了,是VMWare的CD-ROM模拟和Windows CE的CD-ROM driver之间有一些兼容性问题。具体的说,问题出在对audio command的支持上。要改正这个问题也不难,只要在$(WINCEROOT)\PUBLIC\COMMON\OAK\DRIVERS\BLOCK\ATAPI\atapipcicd.cpp中把audio command相关的IOCTL code注释掉就可以了:
DWORD
CPCIDiskAndCD::MainIoctl(
PIOREQpIOReq
)
... {
DWORDdwError;

DEBUGMSG(ZONE_IOCTL,(_T(
"Atapi!CPCIDiskAndCD::MainIoctl>IOCTL(0x%x),device(%d) "
),pIOReq
->dwCode,m_dwDeviceId));

dwError
=CPCIDisk::MainIoctl(pIOReq);

if(dwError==ERROR_NOT_SUPPORTED)...{

switch(pIOReq->dwCode)...{

//supportedATAPIcommands
caseIOCTL_CDROM_READ_SG:
caseIOCTL_CDROM_TEST_UNIT_READY:
caseIOCTL_CDROM_DISC_INFO:
caseIOCTL_CDROM_EJECT_MEDIA:
caseIOCTL_CDROM_LOAD_MEDIA:

//supportedDVDcommands
caseIOCTL_DVD_START_SESSION:
caseIOCTL_DVD_READ_KEY:
caseIOCTL_DVD_END_SESSION:
caseIOCTL_DVD_SEND_KEY:
caseIOCTL_DVD_GET_REGION:

#if0
//supportedaudiocommands
caseIOCTL_CDROM_READ_TOC:
caseIOCTL_CDROM_GET_CONTROL:
caseIOCTL_CDROM_PLAY_AUDIO_MSF:
caseIOCTL_CDROM_SEEK_AUDIO_MSF:
caseIOCTL_CDROM_STOP_AUDIO:
caseIOCTL_CDROM_PAUSE_AUDIO:
caseIOCTL_CDROM_RESUME_AUDIO:
caseIOCTL_CDROM_GET_VOLUME:
caseIOCTL_CDROM_SET_VOLUME:
caseIOCTL_CDROM_READ_Q_CHANNEL:
caseIOCTL_CDROM_GET_LAST_SESSION:
caseIOCTL_CDROM_RAW_READ:
caseIOCTL_CDROM_DISK_TYPE:
caseIOCTL_CDROM_SCAN_AUDIO:
caseIOCTL_CDROM_ISSUE_INQUIRY:
#endif

if(IsAtapiDevice())...{
dwError
=AtapiIoctl(pIOReq);
}

else...{
dwError
=ERROR_INVALID_OPERATION;
}

break;

default:
dwError
=ERROR_NOT_SUPPORTED;
break;
}

}


returndwError;
}
当然我并不是建议你直接改public目录下的代码,只是告诉你应该改哪儿。

你可能感兴趣的:(vmware,windows,工作,生活,dos)