10407|22

75

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

wince5.0 bsp自制驱动中无法使用retailmsg打印调试信息 [复制链接]

【我的环境】:
友善的mini2440,用厂商提供的5.0 BSP,XP SP3 + PB5 + Wince5,自己做了一个i2c的驱动。
1.release版本下编译通过,确定不是ship版本;
2.oal下debug.c中串口相关的函数厂商也实现了:OEMInitDebugSerial()/ OEMWriteDebugLED()/ OEMWriteDebugString()/ OEMWriteDebugByte()/ OEMReadDebugByte()/ OEMClearDebugCommError(),而且指定的输出端口也是正确的:UART0
3.

想在DllEntry()函数下面case DLL_PROCESS_ATTACH分支里用retailmsg打印一些信息,来测试驱动有没有没成功加载。


【我的代码】:

...
switch(dwReason)
{
case DLL_PROCESS_ATTACH:
        DEBUGREGISTER((HINSTANCE)hinstDLL);
        //add by sy 初始化就点亮所有LED
        IIC_IOControl(0, IO_CTL_LED_ALL_ON, NULL, 0, NULL, 0, NULL);
        RETAILMSG(1,(TEXT("========I2C module loaded!========\r\n")));
        return TRUE;
...
...

在打印串口信息之前,还点亮了所有的4个LED来验证。后来发现,LED全部亮了,表示这一段分支肯定执行到了。
但是串口没有打印我想要的信息出来(确定没有其他任何模块会做同样的全点亮动作),但是超级终端中就是没有出现我想要的信息来,只有其他模块的一些调试信息。


【实际的串口输出】:

Windows CE Firmware Init
INFO: Initializing system interrupts...
INFO: Initializing system clock(s)...
INFO: Initializing driver globals area...
SDMMC config set rGPGCON: 82a982
OEMInit Done...
Sp=ffffc7cc
NandFlash FMD_Init
NandFlash FMD_Init Done
+++PWR: Process Attach+++
>PWR_Init(602ED68)
HW_Init : GetProcAddress
HW_Init : ERROR_INVALID_PARAMETER
HW_Init : InitializeCriticalSection
HW_Init : VirtualAlloc
HW_Init : pPWR->State
HW_Init : HW_InitRegisters
HW_Init : CreateEvent
HW_Init : InterruptInitialize
HW_Init : CreateThread
HW_Init : CeSetThreadPriority
HW_Init OOCS: 0x00
HW_Init INT1: 0x00
HW_Init INT2: 0x00
HW_Init INT3: 0x00
HW_Init : Donw
>PWR_Open(0x37c80, 0x0, 0x3)
>PWR_IOControl(0x321000, 0x0, 0, 0x60379c8)
>PWR_Open(0x37c80, 0x0, 0x3)
PWR_Close(0x37c80)

到这里系统就启动成功了。但是没有我驱动里面想打印的东西。

我在代码中找到打印“+++PWR: Process Attach+++”的地方:bsp下的一个pwr.c文件,代码如下:

BOOL
DllEntry(
    HINSTANCE   hinstDll,             /*@parm Instance pointer. */
    DWORD   dwReason,                 /*@parm Reason routine is called. */
    LPVOID  lpReserved                /*@parm system parameter. */
    )
{
    if ( dwReason == DLL_PROCESS_ATTACH ) {
        DEBUGREGISTER(hinstDll);
        RETAILMSG (1, (TEXT("+++PWR: Process Attach+++\r\n")));
    }

    if ( dwReason == DLL_PROCESS_DETACH ) {
        RETAILMSG (1, (TEXT("PWR: Process Detach\r\n")));
    }

    return(TRUE);
}

我把加号换成了星号*** ***,重新编译nk.bin并下载执行,然后观察串口输出,发现加号确实被替换了星号。
为什么这里也用的是retailmsg而且可以打印出消息,我的i2c驱动里面就不行呢?跪求各位大侠指点!

最新回复

这个也遇到过,谢谢有这么多热心人。  详情 回复 发表于 2009-6-29 08:43
点赞 关注

回复
举报

62

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
会不会是你的sources文件缺少了一些库
 
 

回复

66

帖子

0

TA的资源

一粒金砂(初级)

板凳
 
我跟可以打印串口的pwrbtn_pcf模块比较过,库都是一样的。而且缺少库的话链接的时候就过不了
 
 
 

回复

67

帖子

0

TA的资源

一粒金砂(初级)

4
 
你的驱动被加载了吗??

或者调试一把就知道了
 
 
 

回复

66

帖子

0

TA的资源

一粒金砂(初级)

5
 
莫非sources放了 SHIP_BUILD=1 ?
 
 
 

回复

72

帖子

0

TA的资源

一粒金砂(初级)

6
 
我之前做驱动的时候,也碰到过打不出log的情况,一直困扰我很久,后来解决了,总得说来就是一些细节问题,到最后你会发现这些细节很愚蠢。我总结了一些可能的原因,希望对你有帮助:

1 驱动没有被正确加载
    请仔细检查相关注册表配置,如果要编进内核,还要检查BIB设置;
    在DllEntry的入口处加上RETAILMSG,而不是在分支中
2 Ship Build没有关闭
3 确认RETAILMSG在当前Dll可用
4 确认LOG输出的地方
    如果KITL关闭,则所有log信息在串口终端显示;
    如果KITL打开,则有些信息在串口终端显示,有些则在VS output中显示

从你的描述来看,我建议你再检查下1、3、4点
 
 
 

回复

64

帖子

0

TA的资源

一粒金砂(初级)

7
 
查看本帖全部讨论,请登录或者注册
 
 
 

回复

77

帖子

0

TA的资源

一粒金砂(初级)

8
 
查看本帖全部讨论,请登录或者注册
 
 
 

回复

68

帖子

0

TA的资源

一粒金砂(初级)

9
 
查看本帖全部讨论,请登录或者注册
 
 
 

回复

67

帖子

0

TA的资源

一粒金砂(初级)

10
 
查看本帖全部讨论,请登录或者注册
 
 
 

回复

71

帖子

0

TA的资源

一粒金砂(初级)

11
 
查看本帖全部讨论,请登录或者注册
 
 
 

回复

82

帖子

0

TA的资源

一粒金砂(初级)

12
 
查看本帖全部讨论,请登录或者注册
 
 
 

回复

57

帖子

0

TA的资源

一粒金砂(初级)

13
 
查看本帖全部讨论,请登录或者注册
 
 
 

回复

82

帖子

0

TA的资源

一粒金砂(初级)

14
 
查看本帖全部讨论,请登录或者注册
 
 
 

回复

84

帖子

0

TA的资源

一粒金砂(初级)

15
 
查看本帖全部讨论,请登录或者注册
 
 
 

回复

72

帖子

0

TA的资源

一粒金砂(初级)

16
 
查看本帖全部讨论,请登录或者注册
 
 
 

回复

78

帖子

0

TA的资源

一粒金砂(初级)

17
 
查看本帖全部讨论,请登录或者注册
 
 
 

回复

85

帖子

0

TA的资源

一粒金砂(初级)

18
 
查看本帖全部讨论,请登录或者注册
 
 
 

回复

83

帖子

0

TA的资源

一粒金砂(初级)

19
 
查看本帖全部讨论,请登录或者注册
 
 
 

回复

81

帖子

0

TA的资源

一粒金砂(初级)

20
 
查看本帖全部讨论,请登录或者注册
 
 
 

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

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条
【干货上新】电源解决方案和技术第二趴 | DigiKey 应用探索站
当月好物、电源技术资源、特色活动、DigiKey在线实用工具,干货多多~

查看 »

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

 
机器人开发圈

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

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

北京市海淀区中关村大街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
快速回复 返回顶部 返回列表