ITPub博客

首页 > Linux操作系统 > Linux操作系统 > 基于S3C2440的外扩数据线的操作方式

基于S3C2440的外扩数据线的操作方式

原创 Linux操作系统 作者:cifra_guokun 时间:2009-02-15 20:51:29 0 删除 编辑

 

基于S3C2440的外扩数据线的操作方式

DM9000为基础进行设计。

       基于CAN SJA1000 的芯片读写方式可参考这个

内存实际地址与映像地址的映射关系表。

//-----------------------------------------------------------------------------------------

//#define PD6710_MEM_BASE_ADDRESS     (0xA4000000)       //(0x10000000) // nGCS2 (A24 == 0)

//#define PD6710_IO_BASE_ADDRESS      (0xA5000000)   //(0x11000000) //       (A24 == 1)

 

//以下宏定义是对片选地址的空间进行映像,在应用程序中可以通过此地址进行直接访问

//2009-01-12 gk

#define NGCS0_ADDRESS_BASE                     0xA0000000   // 0x00000000

#define NGCS1_ADDRESS_BASE                     0xA0800000   // 0x08000000

#define NGCS2_ADDRESS_BASE                     0xA4000000   // 0x10000000

#define NGCS3_ADDRESS_BASE                     0xA4800000   // 0x18000000

#define NGCS4_ADDRESS_BASE                     0xA8000000   // 0x20000000

#define NGCS5_ADDRESS_BASE                     0xA8800000   // 0x28000000

#define NGCS6_ADDRESS_BASE                     0xAC000000   // 0x30000000

#define NGCS7_ADDRESS_BASE                     0xAC800000   // 0x38000000

 

//#define DMA_BUFFER_BASE                  0xAC000000

//#define DMA_PHYSICAL_BASE                     0x30000000  // S3C2440X01

//-----------------------------------------------------------------------------------------

 

驱动程序在操作系统的调度下进行内存操作时,需要严格按照传统的方式进行开辟,

       v_CNTmemory = (volatile char*)VirtualAlloc(0, sizeof(1024), MEM_RESERVE, PAGE_NOACCESS);

       if (v_CNTmemory == NULL)

       {

              RETAILMSG (1,(TEXT("v_CNTmemory is not allocated\n\r")));

              return TRUE;

       }

       if (!VirtualCopy((PVOID)v_CNTmemory, (PVOID)NGCS2_ADDRESS_BASE, sizeof(1024), PAGE_READWRITE|PAGE_NOCACHE))

       {

              RETAILMSG (1,(TEXT("v_CNTmemory is not mapped\n\r")));

              return TRUE;

       }

 

虽然可以使用

       v_CNTmemory = (volatile char *)NGCS2_ADDRESS_BASE;

进行操作,但时会引起如下异常。

 

Data Abort: Thread=8f8c8400 Proc=8d7d6160 'device.exe'

AKY=00000005 PC=01db1664(cnt.dll+0x00001664) RA=01db1660(cnt.dll+0x00001660) BVA=a4000000 FSR=0000000d

 

 

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/13771794/viewspace-553368/,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2008-04-07

  • 博文量
    92
  • 访问量
    305401