4736|14

81

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

再次发帖请教应用程序调用KernelIoControl函数的问题 [复制链接]

应用程序通过KernelIoControl函数实现对flash的读写,接口函数为:OALIoCtlHalGetUUID和OALIoCtlHalSetUUID,当着两个函数不做操作的时候,调用没有任何问题,一旦我在这两个函数中添加falsh操作的时候,就出现异常,串口信息如下:
Exception 'Data Abort' (4): Thread-Id=050c002a(pth=881686fc), Proc-Id=00400002(pprc=8427f308) 'NK.EXE', VM-active=05020046(pprc=881685dc) 'TestNandFlash.exe'
PC=8400c064(NK.EXE+0x0000b064) RA=8401ef3c(NK.EXE+0x0001df3c) SP=d881ed7c, BVA=00000000
Exception 'Raised Exception' (-1): Thread-Id=050c002a(pth=881686fc), Proc-Id=00400002(pprc=8427f308) 'NK.EXE', VM-active=05020046(pprc=881685dc) 'TestNandFlash.exe'
PC=c003b738(k.coredll.dll+0x0001b738) RA=840284c8(kernel.dll+0x000064c8) SP=d881f3b8, BVA=ffffffff

另外操作flash的函数FMD_Init、FMD_GetInfo、FMD_GetBlockStatus都可以正确运行的,就是调用FMD_ReadSector和FMD_WriteSector就抛出异常,请大家指点下~~

最新回复

顶起来~~~  详情 回复 发表于 2010-1-7 16:04
点赞 关注

回复
举报

68

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
在ARMCE论坛中也有人发类似的贴,链接地址:
http://www.armce.com/bbs/viewthread.php?tid=503
 
 

回复

66

帖子

0

TA的资源

一粒金砂(初级)

板凳
 
是否FMD_ReadSector和FMD_WriteSector带入的缓冲区地址及一些指针等有问题?
 
 
 

回复

77

帖子

0

TA的资源

一粒金砂(初级)

4
 
引用 2 楼 veabol 的回复:
是否FMD_ReadSector和FMD_WriteSector带入的缓冲区地址及一些指针等有问题?


  1. UINT8 buffer[2048];
  2. SectorInfo sectorInfo;
  3. 。。。。。。
  4. 。。。。。。
  5. // Read sector to buffer
  6. if (!FMD_ReadSector(sector, buffer, §orInfo, 1))
  7. {
  8.      OALMSG(1, (L"FMD_ReadSector\r\n"));
  9.      goto cleanUp;
  10. }
复制代码
 
 
 

回复

79

帖子

0

TA的资源

一粒金砂(初级)

5
 
指针应该没有问题
 
 
 

回复

56

帖子

0

TA的资源

一粒金砂(初级)

6
 
应用程序不能直接调用FMD_ReadSector和FMD_WriteSector 它的吧
  在IOControl中实现 这两个函数的调用
  case 0x1010:
        FMD_ReadSector();
        break;
  case 0x0101:
        FMD_WriteSector();
       break;
 
 
 

回复

73

帖子

0

TA的资源

一粒金砂(初级)

7
 
引用 5 楼 nx427 的回复:
应用程序不能直接调用FMD_ReadSector和FMD_WriteSector 它的吧
? 在IOControl中实现 这两个函数的调用
? case 0x1010:
? ? ? ? FMD_ReadSector();
? ? ? ? break;
? case 0x0101:
? ? ? ? FMD_WriteSector();
? ? ? break;

我是通过KernelIoControl来调用的,不是应用程序直接调用
 
 
 

回复

59

帖子

0

TA的资源

一粒金砂(初级)

8
 
内核的空间和用户空间不是一个地址
要在 他们之间进行指针传送 需要进行转换的 也就是说应用传的指针 驱动是不能识别的
MapPtrToProcess 你可以看看这个函数
 
 
 

回复

59

帖子

0

TA的资源

一粒金砂(初级)

9
 
你的wince版本是?6.0和以前版本的处理上有一些不同。
 
 
 

回复

76

帖子

0

TA的资源

一粒金砂(初级)

10
 
引用 8 楼 yashi 的回复:
你的wince版本是?6.0和以前版本的处理上有一些不同。

wince6.0的,请问前辈有什么不同?
 
 
 

回复

56

帖子

0

TA的资源

一粒金砂(初级)

11
 
引用 7 楼 nx427 的回复:
内核的空间和用户空间不是一个地址
要在 他们之间进行指针传送 需要进行转换的 也就是说应用传的指针 驱动是不能识别的
MapPtrToProcess 你可以看看这个函数

我查看了msdn上面提示:Note   This function is no longer supported as of CE 6.0.
是不是在6.0中用不了了?
 
 
 

回复

75

帖子

0

TA的资源

一粒金砂(初级)

12
 
引用 10 楼 hao507 的回复:
引用 7 楼 nx427 的回复:
内核的空间和用户空间不是一个地址
要在 他们之间进行指针传送 需要进行转换的 也就是说应用传的指针 驱动是不能识别的
MapPtrToProcess 你可以看看这个函数

我查看了msdn上面提示:Note? This function is no longer supported as of CE 6.0.
是不是在6.0中用不了了?


可以用其他的函数来替代
 
 
 

回复

59

帖子

0

TA的资源

一粒金砂(初级)

13
 
引用 11 楼 guopeixin 的回复:

可以用其他的函数来替代

一直没有找到合适的函数。。。。
 
 
 

回复

76

帖子

0

TA的资源

一粒金砂(初级)

14
 
顶起来~~寻求帮助~
 
 
 

回复

76

帖子

0

TA的资源

一粒金砂(初级)

15
 
顶起来~~~
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表