⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 dual-ram.txt

📁 实现双口RAM映射到DSP地址单元空间中
💻 TXT
字号:
F2812中的文件结构
(1).在DSP的cmd文件中,主要分为MEMORY和SECTION两部分,其中MEMORY用来将寄存器和外设存储器同地址空间相映射;而SECTION部分则将数据段分配到MEMORY中映射好的空间。MEMORY和SECTION中用户都可以自己定义在user ram 和user data部分。例如,在MEMORY中将DUALRAM映射到地址空间0x002000到0x002800,在SECTION中将DaulRamFile数据段对应到DUALRAM空间去。
MEMORY
{
PAGE 0:    /* Program Memory */
   ZONE0       : origin = 0x002000, length = 0x002000     /* XINTF zone 0 */
   ZONE1       : origin = 0x004000, length = 0x002000     /* XINTF zone 1 */
   L0SARAM     : origin = 0x008000, length = 0x001000     /* 4Kw L0 SARAM */
   ZONE2       : origin = 0x080000, length = 0x080000     /* XINTF zone 2 */
   ZONE6       : origin = 0x100000, length = 0x080000     /* XINTF zone 6 */
   OTP         : origin = 0x3D7800, length = 0x000400     /* on-chip OTP */
   FLASH_IJ    : origin = 0x3D8000, length = 0x004000     /* on-chip FLASH */
   FLASH_GH    : origin = 0x3DC000, length = 0x008000     /* on-chip FLASH */
   FLASH_EF    : origin = 0x3E4000, length = 0x008000     /* on-chip FLASH */
   FLASH_CD    : origin = 0x3EC000, length = 0x008000     /* on-chip FLASH */
   FLASH_AB    : origin = 0x3F4000, length = 0x003F80     /* on-chip FLASH */
   CSM_RSVD    : origin = 0x3F7F80, length = 0x000076     /* Part of FLASHA.  Reserved when CSM is in use. */
   BEGIN_FLASH : origin = 0x3F7FF6, length = 0x000002     /* Part of FLASHA.  Used for "boot to flash" bootloader mode. */
   PASSWORDS   : origin = 0x3F7FF8, length = 0x000008     /* Part of FLASHA.  CSM password locations. */
   BEGIN_H0    : origin = 0x3F8000, length = 0x000002     /* Part of H0SARAM.  Used for "boot to H0" bootloader mode. */
   H0SARAM     : origin = 0x3F8002, length = 0x001FFE     /* 8Kw H0 SARAM */
/*   ZONE7       : origin = 0x3FC000, length = 0x003FC0     /* XINTF zone 7 available if MP/MCn=1 */ 
   BOOTROM     : origin = 0x3FF000, length = 0x000FC0     /* boot ROM available if MP/MCn=0 */
   RESET       : origin = 0x3FFFC0, length = 0x000002     /* part of boot ROM (MP/MCn=0) or XINTF zone 7 (MP/MCn=1) */
   VECTORS     : origin = 0x3FFFC2, length = 0x00003E     /* part of boot ROM (MP/MCn=0) or XINTF zone 7 (MP/MCn=1) */

PAGE 1 :   /* Data Memory */
   M0SARAM     : origin = 0x000000, length = 0x000400     /* 1Kw M0 SARAM */
   M1SARAM     : origin = 0x000400, length = 0x000400     /* 1Kw M1 SARAM */
   L1SARAM     : origin = 0x009000, length = 0x001000     /* 4Kw L1 SARAM */

           /* Peripheral Frame 0:       */
           DEV_EMU            : origin = 0x000880, length = 0x000180
           FLASH_REGS         : origin = 0x000A80, length = 0x000060
          CSM                : origin = 0x000AE0, length = 0x000010
           XINTF              : origin = 0x000B20, length = 0x000020
    ……
           /* Peripheral Frame 1:   */
           ECAN_A             : origin = 0x006000, length = 0x000100
           ECAN_AMBOX         : origin = 0x006100, length = 0x000100
    ……
           /* Peripheral Frame 2:   */
           SYSTEM             : origin = 0x007010, length = 0x000020
           SPI_A              : origin = 0x007040, length = 0x000010
           SCI_A              : origin = 0x007050, length = 0x000010
    ……
           /*user Ram : 6416*/
           XRAM1                : origin = 0x080000, length = 0x001000
           XRAM2                : origin = 0x081000, length = 0x00F000
           /*daul ram addr 7132*/
           DAULRAM                : origin = 0x002000, length = 0x000800
           /* CSM Password Locations */
           CSM_PWL            : origin = 0x3F7FF8, length = 0x000008
}

SECTIONS
{
           /*** Compiler Required Sections ***/
  /* Program memory (PAGE 0) sections */
   .text             : > FLASH_GH,        PAGE = 0
   .cinit            : > FLASH_CD,        PAGE = 0
   .const            : > FLASH_CD,        PAGE = 0
   .econst           : > FLASH_CD,        PAGE = 0      
   .pinit            : > FLASH_CD,        PAGE = 0
   .reset            : > RESET,          PAGE = 0, TYPE = DSECT   
   .switch           : > FLASH_CD,        PAGE = 0

  /* Data Memory (PAGE 1) sections */
   .bss              : > L1SARAM,        PAGE = 1
   .ebss             : > L1SARAM,        PAGE = 1
   .cio              : > M0SARAM,        PAGE = 1
   .stack            : > M1SARAM,        PAGE = 1
   .sysmem           : > L1SARAM,        PAGE = 1
   .esysmem          : > L1SARAM,        PAGE = 1

/*** User Defined Sections ***/
   codestart         : > BEGIN_FLASH,       PAGE = 0                /* Used by file CodeStartBranch.asm */
   csm_rsvd          : > CSM_RSVD,       PAGE = 0, TYPE = DSECT  /* Not used in RAM example */
   passwords         : > PASSWORDS,      PAGE = 0, TYPE = DSECT  /* Not used in RAM example */
   /* Used by InitFlash() in SysCtrl.c */ 
   secureRamFuncs                                    :   LOAD = FLASH_AB, PAGE = 0                 
                                                         RUN = H0SARAM,  PAGE = 0
                                                         LOAD_START(_secureRamFuncs_loadstart),
                                                         LOAD_END(_secureRamFuncs_loadend),
                                                         RUN_START(_secureRamFuncs_runstart)

           /* Allocate Peripheral Frame 0 Register Structures:   */
           DevEmuRegsFile    : > DEV_EMU,    PAGE = 1
           FlashRegsFile     : > FLASH_REGS, PAGE = 1
           CsmRegsFile       : > CSM,        PAGE = 1
           XintfRegsFile     : > XINTF,      PAGE = 1
……
           /* Allocate Peripheral Frame 2 Register Structures:   */
           ECanaRegsFile     : > ECAN_A,      PAGE = 1   
           ECanaMboxesFile   : > ECAN_AMBOX   PAGE = 1
        ……
           /* Allocate Peripheral Frame 1 Register Structures:   */
           SysCtrlRegsFile   : > SYSTEM,     PAGE = 1
           SpiaRegsFile      : > SPI_A,      PAGE = 1
           SciaRegsFile      : > SCI_A,      PAGE = 1
        ……
           //user data
           DaulRamFile                   : >DAULRAM,          PAGE = 1
           OriginCodeDataFile : >XRAM1  ,    PAGE = 1
           EditedCodeDataFile : >XRAM2  ,    PAGE = 1

           /* CSM Password Locations */
           CsmPwlFile      : > CSM_PWL,     PAGE = 1
        /*==========================================================*/
        /* Tables for IQ math functions:                            */
        IQmathTables         : load = BOOTROM, type = NOLOAD,PAGE = 0
        IQmath                         : load = FLASH_EF, PAGE = 0
        /*==========================================================*/
}
(2).将寄存器或用户自定义的文件结构分配到空间中:首先,在头文件(.h)中定义好自己的结构体或其他变量,例如在某头文件中定义如下结构体:
typedef struct _DAULRAM_DATA
{
        unsigned char  X_DspData1;               //dsp给单片机的命令
        unsigned char  X_DspData2;               //dsp给单片机的命令
        unsigned char  X_McuActionEn;                //0x0001
        ……                         //0x07E0
        unsigned char  X_CurrentPart;                                //0x07E1
        unsigned char  X_CodeReadFlag;                        //0x07E2
}DAULRAM_DATA;    //DaulRam
然后在相应的.c文件中使用如下语句,即定义结构体DAULRAM_DATA类型的数据变量DaulRam,并用#pragma语句将其分配到“DaulRamFile”数据段中。
#ifdef __cplusplus 
#pragma DATA_SECTION("DaulRamFile") 
#else 
#pragma DATA_SECTION(DaulRam ,"DaulRamFile");
#endif 
volatile DAULRAM_DATA DaulRam;
然后定义指针,就可以使用DaulRam来使用相应空间的数据或程序了。如下所示:
volatile unsigned  char * nf0x;
nf0x= ( unsigned  char *)(DaulRam.X_Tine);

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -