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(
    PIOREQ pIOReq
    )
{
    DWORD dwError;

    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) {

            
// supported ATAPI commands
            case IOCTL_CDROM_READ_SG:
            
case IOCTL_CDROM_TEST_UNIT_READY:
            
case IOCTL_CDROM_DISC_INFO:
            
case IOCTL_CDROM_EJECT_MEDIA:
            
case IOCTL_CDROM_LOAD_MEDIA:

            
// supported DVD commands
            case IOCTL_DVD_START_SESSION:
            
case IOCTL_DVD_READ_KEY:
            
case IOCTL_DVD_END_SESSION:
            
case IOCTL_DVD_SEND_KEY:
            
case IOCTL_DVD_GET_REGION:

#if 0
            
// supported audio commands
            case IOCTL_CDROM_READ_TOC:
            
case IOCTL_CDROM_GET_CONTROL:
            
case IOCTL_CDROM_PLAY_AUDIO_MSF:
            
case IOCTL_CDROM_SEEK_AUDIO_MSF:
            
case IOCTL_CDROM_STOP_AUDIO:
            
case IOCTL_CDROM_PAUSE_AUDIO:
            
case IOCTL_CDROM_RESUME_AUDIO:
            
case IOCTL_CDROM_GET_VOLUME:
            
case IOCTL_CDROM_SET_VOLUME:
            
case IOCTL_CDROM_READ_Q_CHANNEL:
            
case IOCTL_CDROM_GET_LAST_SESSION:
            
case IOCTL_CDROM_RAW_READ:
            
case IOCTL_CDROM_DISK_TYPE:
            
case IOCTL_CDROM_SCAN_AUDIO:
            
case IOCTL_CDROM_ISSUE_INQUIRY:
#endif

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

                
else {
                    dwError 
= ERROR_INVALID_OPERATION;
                }

                
break;

            
default:
                dwError 
= ERROR_NOT_SUPPORTED;
                
break;
        }

    }


    
return dwError;
}
当然我并不是建议你直接改public目录下的代码,只是告诉你应该改哪儿。
BSP(Board Support Package)是针对特定硬件平台的软件支持包,它提供了与硬件交互的驱动程序、引导加载程序、操作系统适配层等组件。以下是一个简单的 BSP 开发流程的示例: 1. 硬件了解和规划: - 确定目标硬件平台,包括处理器架构、主板和外设等。 - 了解硬件的功能和特性,包括处理器指令集、内存布局、外设接口等。 2. 引导加载程序(Bootloader)开发: - 选择合适的引导加载程序,如 U-Boot。 - 配置引导加载程序以支持目标硬件平台。 - 实现引导加载程序的启动流程,包括初始化硬件、加载内核和根文件系统等。 3. 内核适配和驱动开发: - 选择合适的操作系统内核,如 Linux。 - 配置内核以支持目标硬件平台。 - 编写或移植设备驱动程序,以支持硬件功能和外设。 4. 文件系统适配和配置: - 选择合适的文件系统,如 ext4、jffs2 等。 - 配置文件系统以适应硬件特性和存储需求。 - 添加必要的用户空间工具和库。 5. 系统调试和测试: - 在硬件上烧录和运行 BSP。 - 调试和验证引导加载程序、内核和驱动程序的功能和稳定性。 - 进行系统性能测试和功能测试。 6. BSP发布和维护: - 将 BSP 打包发布,包括引导加载程序、内核、驱动程序和文件系统等。 - 提供文档和示例代码,以帮助其他开发人员使用和定制 BSP。 - 定期更新和维护 BSP,以适应新的硬件需求和软件更新。 这只是一个简单的示例流程,实际的 BSP 开发流程可能会更加复杂和具体化,取决于目标硬件平台和项目需求。在整个流程中,需要密切与硬件厂商合作,并进行不断的测试和验证,以确保 BSP 的质量和稳定性。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值