4625|10

90

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

100分求助串口驱动问题 [复制链接]

小弟在看串口驱动的PDD层时,有以下问题不清楚,请高手帮助解决一下
先谢谢啦
1.LOOKUP_TBL  是否结构体,具体定义是什么
2.PHYSICAL_ADDRESS    是否结构体,具体定义是什么
3.HalTranslateBusAddress  
4.为什么ioPortBase=(PUCHAR)MmMapIoSpace(ioPhysicalBase,size,FALSE)
  后又在else中 ioPortBase=(PHCHAR)ioPhysicalBase.lowPart;
5.PS2410_UART_INFO
6.SETREG CLEARREG
7.RegQueryValueEx
8.对dwDatasize赋值的意义
  PC_REG_DEVINDEX_VAL_LEN
  PC_REG_IRQ_VAL_LEN
  PC_REG_IOBASE_VAL_LEN
  PC_REG_IOLEN_VAL_LEN
9.if(regError==ERROR_SUCCESS)有三个
  dwDataSize赋值3次
10.pHWHead是什么指针
   看LocalAlloc PSER_INFO PHWHead
11.ppBootArgs作用是什么?
   pHWHead为什么可以指到ppBootArgs:pHWHead->ppBootArgs
12.PHYSICAL_ADDRESS phySicalAddress.LowPart
13.为什么在ser2410_ser.c中调用了ser2410_hw.c的函数,但是ser2410_ser.c却没有包含ser2410_hw.c的头

最新回复

请问三楼在哪找到LOOKUP_TBL结构体的定义的??   详情 回复 发表于 2008-8-20 14:28
点赞 关注

回复
举报

60

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
楼上的会用souce insight吗
 
 

回复

94

帖子

0

TA的资源

一粒金砂(初级)

板凳
 
souce insight 能找到定义处的我用在这问吗??
 
 
 

回复

69

帖子

0

TA的资源

一粒金砂(初级)

4
 
不知道楼主看的是wince5还是wince6还是什么代码。但这么多分,我还是很感兴趣的。
1.LOOKUP_TBL  是否结构体,具体定义是什么
是结构体,定义如下:
    typedef struct __LOOKUP_TBL {
        ULONG   Size;
        PPAIRS  Table;
    } LOOKUP_TBL, *PLOOKUP_TBL;

2.PHYSICAL_ADDRESS    是否结构体,具体定义是什么

typedef union _LARGE_INTEGER {
    struct {
        DWORD LowPart;
        LONG HighPart;
    };
    struct {
        DWORD LowPart;
        LONG HighPart;
    } u;

typedef LARGE_INTEGER PHYSICAL_ADDRESS, *PPHYSICAL_ADDRESS;

3.HalTranslateBusAddress
干什么?

4.为什么ioPortBase=(PUCHAR)MmMapIoSpace(ioPhysicalBase,size,FALSE)
  后又在else中 ioPortBase=(PHCHAR)ioPhysicalBase.lowPart;
什么地方的代码?能提供路径嘛?

5.PS2410_UART_INFO
6.SETREG CLEARREG
7.RegQueryValueEx

8.对dwDatasize赋值的意义
  PC_REG_DEVINDEX_VAL_LEN
  PC_REG_IRQ_VAL_LEN
  PC_REG_IOBASE_VAL_LEN
  PC_REG_IOLEN_VAL_LEN
在PB里面肯定可以找到定义的
9.if(regError==ERROR_SUCCESS)有三个
  dwDataSize赋值3次
10.pHWHead是什么指针
  看LocalAlloc PSER_INFO PHWHead
11.ppBootArgs作用是什么?
  pHWHead为什么可以指到ppBootArgs:pHWHead->ppBootArgs
12.PHYSICAL_ADDRESS phySicalAddress.LowPart
13.为什么在ser2410_ser.c中调用了ser2410_hw.c的函数,但是ser2410_ser.c却没有包含ser2410_hw.c的头
只要包含.h就可以了吧,为什么非要包含.c的头?
 
 
 

回复

70

帖子

0

TA的资源

一粒金砂(初级)

5
 
1.LOOKUP_TBL  是否结构体,具体定义是什么
-----------------我没有去找LOOKUP_TBL 所在的位置,但是从下表可以看出BaudPairs[BAUD_TABLE_SIZE]是结构体数组,所以LOOKUP_TBL 一定是个结构体变量或者结构体指针(把源文件的头文件一个个打开,一定可以找到LOOKUP_TBL 这个东西)
PAIRS   BaudPairs[BAUD_TABLE_SIZE] =    {-------------结构体数组

        {50,        2307},
        {75,        1538},
        {110,       1049},
        {135,       858},
        {150,       769},
        {300,       384},
        {600,       192},
        {1200,      96},
        {1800,      64},
        {2000,      58},
        {2400,      48},
        {3600,      32},
        {4800,      24},
        {7200,      16},
        {9600,      12},
        {12800,     9},
        {14400,     8},
        {19200,     6},
        {23040,     5},
        {28800,     4},
        {38400,     3},
        {57600,     2},
        {115200,    1}
};
2.PHYSICAL_ADDRESS    是否结构体,具体定义是什么
-----------------C:\WINCE500\PUBLIC\COMMON\DDK\INC\ceddk.h有如下定义
------------------typedef LARGE_INTEGER PHYSICAL_ADDRESS, *PPHYSICAL_ADDRESS;

3.HalTranslateBusAddress
--------------同上一个ceddk.h有如下定义
  NTHALAPI
BOOLEAN
HalTranslateBusAddress(
    IN INTERFACE_TYPE  InterfaceType,
    IN ULONG BusNumber,
    IN PHYSICAL_ADDRESS BusAddress,
    IN OUT PULONG AddressSpace,
    OUT PPHYSICAL_ADDRESS TranslatedAddress
    );

4.为什么ioPortBase=(PUCHAR)MmMapIoSpace(ioPhysicalBase,size,FALSE)
  后又在else中 ioPortBase=(PHCHAR)ioPhysicalBase.lowPart;
--------------不同的条件,自然有不同的内存分配方法
5.PS2410_UART_INFO
--------------------------在该文件所包含的一个头文件中,是个结构体指针,具体在哪里楼主一个一个找找。
6.SETREG CLEARREG
------------------在s2410.h中
#define SETREG(pInfo, reg, value) (pInfo->s2410SerReg->reg |= value)
#define CLEARREG(pInfo, reg, value) (pInfo->s2410SerReg->reg &= ~value)
7.RegQueryValueEx
-----------------------看看mSDN
8.对dwDatasize赋值的意义
  PC_REG_DEVINDEX_VAL_LEN
  PC_REG_IRQ_VAL_LEN
  PC_REG_IOBASE_VAL_LEN
  PC_REG_IOLEN_VAL_LEN
-----------------------------------ser2410.h
// Here are the names of the values stored in the registry
    #define PC_REG_IRQ_VAL_NAME TEXT("IRQ")
    #define PC_REG_IRQ_VAL_LEN  sizeof( DWORD )

    #define PC_REG_IOBASE_VAL_NAME TEXT("IoBase")
    #define PC_REG_IOBASE_VAL_LEN  sizeof( DWORD )
    #define PC_REG_IOLEN_VAL_NAME TEXT("IoLen")
    #define PC_REG_IOLEN_VAL_LEN  sizeof( DWORD )

    #define PC_REG_CONFIGBASE_VAL_NAME TEXT("ConfigBase")
    #define PC_REG_CONFIGBASE_VAL_LEN  sizeof( DWORD )
    #define PC_REG_CONFIGLEN_VAL_NAME TEXT("ConfigLen")
    #define PC_REG_CONFIGLEN_VAL_LEN  sizeof( DWORD )

    #define PC_REG_DMA_VAL_NAME TEXT("DMA")
    #define PC_REG_DMA_VAL_LEN  sizeof( DWORD )

    #define PC_REG_DEVINDEX_VAL_NAME TEXT("DeviceArrayIndex")
    #define PC_REG_DEVINDEX_VAL_LEN  sizeof( DWORD )
9.if(regError==ERROR_SUCCESS)有三个
  dwDataSize赋值3次
-------------------------------------------------------------
每一次赋值之后都出现如下函数,这就是原因。
regError = RegQueryValueEx(
                                        hKey,
                                        PC_REG_DEVINDEX_VAL_NAME,
                                        NULL,
                                        NULL,
                                        (LPBYTE)(&pHWHead->dwDevIndex),
                                        &dwDataSize);
10.pHWHead是什么指针
  看LocalAlloc PSER_INFO PHWHead
----------------------------------希望楼主看看包含的头文件,不再赘述
11.ppBootArgs作用是什么?
  pHWHead为什么可以指到ppBootArgs:pHWHead->ppBootArgs
-----------------------------
// Now map the bootargs structure itself
        PhysicalAddress.LowPart = (DWORD) *ppBootArgs;
12.PHYSICAL_ADDRESS phySicalAddress.LowPart
---------------------------结构体成员!
13.为什么在ser2410_ser.c中调用了ser2410_hw.c的函数,但是ser2410_ser.c却没有包含ser2410_hw.c的头
----------------------------起初我也对这个问题纳闷。
昨晚我重新看了代码,发现这几个文件都包含了#include ;这个就是巧妙所在,这个头文件把各个文件的某些函数联系起来。

------------------楼主,昨晚回去玩游戏了。网速又慢,不知道怎么回事,eeworld登陆超慢。我上不了就和同事玩CS到凌晨了。
哈哈
 
 
 

回复

76

帖子

0

TA的资源

一粒金砂(初级)

6
 
这个问题还是比较有价值的。
串口驱动可以告一段落了。
老大昨天又叫我做CAmera。

从这个月学习WINCE的曲折过程我体会到,要学好WINCE,
C语言,数据结构以及ARM的体系结构一定要非常了解。
-------------------------------------------------哈哈我以前大学留下来的后遗症。
出来工作一个月最大感受:基础有多扎实,就决定了能走多远!
 
 
 

回复

73

帖子

0

TA的资源

一粒金砂(初级)

7
 
散分,
这是我看串口的一部分问题,有些没自己查就贴上来了,sorry,最近忙于一个项目
看的时间实在太少
我先慢慢消化一下上面的答案,再接着看完串口
感谢各位高手解答
请各位高手关注:100分求助串口驱动问题2
 
 
 

回复

61

帖子

0

TA的资源

一粒金砂(初级)

8
 
还有 在MDD层中有个链表,一直看不清它在MDD中的作用,是怎么实现的
恶补了一下链表的知识,但是跟这个总联系不上
 
 
 

回复

63

帖子

0

TA的资源

一粒金砂(初级)

9
 
引用 7 楼 wangxin_801115 的回复:
还有 在MDD层中有个链表,一直看不清它在MDD中的作用,是怎么实现的
恶补了一下链表的知识,但是跟这个总联系不上


------------------------哪个链表?贴出来看看。
 
 
 

回复

80

帖子

0

TA的资源

一粒金砂(中级)

10
 
    EnterCriticalSection(&(pSerialHead->OpenCS));
    InsertHeadList(&pSerialHead->OpenList,
                   &pOpenHead->llist);
 
 
 

回复

77

帖子

0

TA的资源

一粒金砂(初级)

11
 
请问三楼在哪找到LOOKUP_TBL结构体的定义的??
 
 
 

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

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

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

 
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
快速回复 返回顶部 返回列表