simon5430
驱动牛犊
驱动牛犊
  • 注册日期2007-04-06
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分6分
  • 威望67点
  • 贡献值0点
  • 好评度29点
  • 原创分0分
  • 专家分0分
阅读:2162回复:2

哪位高人做过基于MDD+PDD架构的MLC驱动,支持多分区的?

楼主#
更多 发布于:2008-09-25 09:50
注册表要如何设置?我在EBOOT里面分了2个区,但是在OS里面不识别,被重新分区格式化了。

注意,是新的ce6.0 R2版本的MDD+PDD架构的驱动。分区程序变成了flashpart.dll,而不是FAL架构的mspart

多谢了。
simon5430
驱动牛犊
驱动牛犊
  • 注册日期2007-04-06
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分6分
  • 威望67点
  • 贡献值0点
  • 好评度29点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2008-09-26 17:30
用bootpart.lib在EBOOT里面进行分区,发现在OS里面是不能识别的。原来R2的分区程序已经变成了flashpart.dll,而以前的是mspart.dll,这条路走不通

后来发现在flashmdd.h里面有多个IO_CTRL,里面有对分区的支持。于是在应用程序里面对nand进行了分区。先将整个NAND用flashpart自动分区,只是预留了一部分空间来做新的分区之用。

应用程序是这样写的
     memset(&flashPart, 0, sizeof(flashPart));
    flashPart.RegionIndex = 1;
    strcpy((char*)(flashPart.PartitionName), "PART01");
    
    flashPart.PartitionFlags = FLASH_PARTITION_FLAG_RESERVED;
    flashPart.CreationTime.dwLowDateTime = 41323392;
    flashPart.CreationTime.dwHighDateTime = 29909073;
    flashPart.PartitionType = 0;    
              
    flashPart.LogicalBlockCount = dwFreeBlock;
    if (!DeviceIoControl(hStore, IOCTL_FLASH_CREATE_PARTITION, &flashPart, sizeof(FLASH_PARTITION_CREATE_INFO), &PartInfo, sizeof(FLASH_PARTITION_INFO), 0, NULL))
    {
         RETAILMSG( 1, (TEXT("\r\n IOCTL_FLASH_CREATE_PARTITION111 error = %d.\r\n"),GetLastError()));        
    }
    else
    {
        RETAILMSG (1,(_T( "\r\n IOCTL_FLASH_CREATE_PARTITION OK")));
    }

但是在运行的时候总是出现87号错误,非法参数。查看了很多帮助,实在没有找到啥原因
simon5430
驱动牛犊
驱动牛犊
  • 注册日期2007-04-06
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分6分
  • 威望67点
  • 贡献值0点
  • 好评度29点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2008-10-10 17:21
居然连一个回复的都没有,估计都没有人做过
游客

返回顶部