none
wince下访问物理地址0x10000000,如何实现 RRS feed

  • 问题

  • RT,wince6开发环境。我使用流驱动方式,从0x10000000固定地址读取数据。
    #define  READADDRESS  0x10000000

    DataAddr
    = (volatile BYTE *) VirtualAlloc(0,sizeof(BYTE),MEM_RESERVE, PAGE_NOACCESS);
       
    if(DataAddr == NULL)
             {
            RETAILMSG(
    1,(TEXT("DataReader::For s2440IOP: VirtualAlloc failed!\r\n")));
        }
       
    else {
           
    if(!VirtualCopy((PVOID)DataAddr,(PVOID)(READADDRESS),sizeof(BYTE),PAGE_READWRITE | PAGE_NOCACHE )) {
                RETAILMSG(
    1,(TEXT("DataReader::For s2440IOP: VirtualCopy failed!\r\n")));
               }
        }

    s2440MEM
    ->rBWSCON = (s2440MEM->rBWSCON & ~(DWORD)(0xF<<8));// 8-bits ,no wait ,no UB/LB

    DWORD RED_Read(DWORD hOpenContext, LPVOID pBuffer, DWORD Count)
    {
        UINT i;
        RETAILMSG(
    1,(TEXT("CODER: RED_Read\r\n")));
       
    for(i=0;i<32768;i++)
        {
        ((BYTE
    *)pBuffer)[i] = * DataAddr;
        }
       
    return TRUE;
    }
    出现如下错误
    CODER: RED_Read
    Exception 'Data Abort' (4): Thread-Id=074a0002(pth=82784138), Proc-Id=00400002(pprc=82008308) 'NK.EXE', VM-active=07490002(pprc=82717e1c) 'readtest.exe'
    PC=c0881618(datareader.dll+0x00001618) RA=c088160c(datareader.dll+0x0000160c) SP=d35cfbe8, BVA=d2730000
    Exception 'Raised Exception' (-1): Thread-Id=074a0002(pth=82784138), Proc-Id=00400002(pprc=82008308) 'NK.EXE', VM-active=07490002(pprc=82717e1c) 'readtest.exe'
    PC=c003b7b0(k.coredll.dll+0x0001b7b0) RA=802384c8(kernel.dll+0x000064c8) SP=d35cf484, BVA=ffffffff
    那位老师给解释一下,为什么啊。
    2010年2月2日 6:46

答案

  • 首先,你要确定这个地址是可以访问的,不会造成系统出错。
    然后在你得BSP里面找一个.inc文件,这个文件定义了一个实地址--虚地质映射表。
    把你的0x10000000加进去,然后找一个合适的虚地址(0x80000000-0x9FFFFFFF),建立对应关系。

    表格的格式是
    VA1              PA1          Size1
    VA2              PA2          Size2
    .....

    2010年2月3日 7:01
    版主

全部回复

  • 谢谢啊,怎么没人啦,这快过年的,问个问题也没人回答了
    2010年2月3日 0:05
  • 首先,你要确定这个地址是可以访问的,不会造成系统出错。
    然后在你得BSP里面找一个.inc文件,这个文件定义了一个实地址--虚地质映射表。
    把你的0x10000000加进去,然后找一个合适的虚地址(0x80000000-0x9FFFFFFF),建立对应关系。

    表格的格式是
    VA1              PA1          Size1
    VA2              PA2          Size2
    .....

    2010年2月3日 7:01
    版主