2413|5

68

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

大家帮我看看这个异常是怎么产生的? [复制链接]

是SPI初始化代码,也不是每次都会有异常,偶尔重新烧写NK的时候才出现。奇怪这如果错误了,怎么不是每次都出现!

定义:
typedef struct __SPIRX_BUFFER_INFO {
        ULONG        Read;                               
        ULONG        Write;                               
        UINT        Length;                               
        BOOL        DataAvail;       
        HANDLE        hReadEvent;       
        PUCHAR        SPIRxCharBuffer;       
        CRITICAL_SECTION        CS;       
        } SPIRX_BUFFER_INFO, *PSPIRX_BUFFER_INFO;

typedef struct __SPIHW_OPEN_INFO {
    SPIRX_BUFFER_INFO  SPIRxBufferInfo;    // @field Pointer back to our HW_INDEP_INFO
        } SPIHW_OPEN_INFO, *PSPIHW_OPEN_INFO;

PSPIHW_OPEN_INFO pSpiOpenHead;

代码:
InitializeAddresses();
InitSPI();
pSpiOpenHead=(PSPIHW_OPEN_INFO)LocalAlloc(LPTR, sizeof(PSPIHW_OPEN_INFO));
    RETAILMSG(1,(TEXT("LocalAlloc PSPIHW_OPEN_INFO \r\n")));

       
//给SPI接收开辟一块缓存区,长度2048字节。
pSpiOpenHead->SPIRxBufferInfo.Length =2048;
pSpiOpenHead->SPIRxBufferInfo.SPIRxCharBuffer =
    (PUCHAR)LocalAlloc(LPTR, pSpiOpenHead->SPIRxBufferInfo.Length);
        RETAILMSG(1,(TEXT("LocalAlloc SPIRxCharBuffer \r\n")));

(有异常时的)调试信息:
SPI_InitializeAddresses - Success
LocalAlloc PSPIHW_OPEN_INFO
Data Abort: Thread=8ffa5a5c Proc=8e84bd60 'device.exe'
AKY=00000005 PC=03f92484(coredll.dll+0x00022484) RA=06049fb8(device.exe+0x00039fb8) BVA=0604a7b8 FSR=00000007
RaiseException: Thread=8ffa5a5c Proc=8e84bd60 'device.exe'
AKY=00000005 PC=03f8dfec(coredll.dll+0x0001dfec) RA=8c2c08d0(NK.EXE+0x000c08d0) BVA=00000001 FSR=00000001
Data Abort: Thread=8ffa5a5c Proc=8e84bd60 'device.exe'
AKY=00000005 PC=03f92484(coredll.dll+0x00022484) RA=06049fb8(device.exe+0x00039fb8) BVA=0604a7b8 FSR=00000007
RaiseException: Thread=8ffa5a5c Proc=8e84bd60 'device.exe'
AKY=00000005 PC=03f8dfec(coredll.dll+0x0001dfec) RA=8c2c08d0(NK.EXE+0x000c08d0) BVA=00000001 FSR=00000001

异常出现在红色标注之后,也就是说
pSpiOpenHead->SPIRxBufferInfo.SPIRxCharBuffer =
    (PUCHAR)LocalAlloc(LPTR, pSpiOpenHead->SPIRxBufferInfo.Length);
出了问题,以前没怎么接触异常,没出有什么不对,请大家帮忙,分析分析!

最新回复

搞定了 错在,pSpiOpenHead=(PSPIHW_OPEN_INFO)LocalAlloc(LPTR, sizeof(PSPIHW_OPEN_INFO)); 给指针申请了空间,而不是结构体,晕。   详情 回复 发表于 2009-4-1 17:04
点赞 关注

回复
举报

88

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
出了问题,以前没怎么接触异常,没发现有什么不对,请大家帮忙,分析分析!
 
 

回复

85

帖子

0

TA的资源

一粒金砂(初级)

板凳
 


看我的博客,你搜索关键字异常应该可以找到。

或者搜索wince板块的帖子。就可以定位了。
 
 
 

回复

77

帖子

0

TA的资源

一粒金砂(初级)

4
 
引用 2 楼 gooogleman 的回复:


看我的博客,你搜索关键字异常应该可以找到。

或者搜索wince板块的帖子。就可以定位了。


这里了。http://www.cnblogs.com/wogoyixikexie/archive/2009/02/18/1393330.html
你应该很快找到出事的地点了。
 
 
 

回复

60

帖子

0

TA的资源

一粒金砂(初级)

5
 
PC=03f92484(coredll.dll+0x00022484)
 
 
 

回复

65

帖子

0

TA的资源

一粒金砂(初级)

6
 
搞定了
错在,pSpiOpenHead=(PSPIHW_OPEN_INFO)LocalAlloc(LPTR, sizeof(PSPIHW_OPEN_INFO));
给指针申请了空间,而不是结构体,晕。
 
 
 

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

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

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

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

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

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

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

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