2019-08-05 15:55发布
zhangmangui 发表于 2014-4-9 21:42 这个就不好说了 在确认一下连到哪个区了 在CCS中读写是应该是字地址 而不是字节地址 你再试试吧 ...
最多设置5个标签!
谢谢你的提醒. 重新修改了GEL文件. 用的开发板的GEL是CCS3.3里面的GEL, 后来从网上找到SEED的, 参照修改了一下, 现在可以在仿真环境访问0X200000的空间了.
新问题, 程序放到NAND FLASH, 直接boot后做0X200000的读写测试, 却又不行了, 已经把gel的寄存器配置都改到程序里了.还不行??
- /*******************************************************************************/
- //
- // Filename: GEL file for SEED_DEC5502
- //
- //******************************************************************************/
- /*************************************************/
- /* EMIF REGISTERS */
- /*************************************************/
- #define EMIF_GCTL1 0x800
- #define EMIF_GCTL2 0x801
- #define EMIF_CE11 0x802
- #define EMIF_CE12 0x803
- #define EMIF_CE01 0x804
- #define EMIF_CE02 0x805
- #define EMIF_CE21 0x808
- #define EMIF_CE22 0x809
- #define EMIF_CE31 0x80A
- #define EMIF_CE32 0x80B
- #define EMIF_SDCNT1 0x80C
- #define EMIF_SDCNT2 0x80D
- #define EMIF_SDREF1 0x80E
- #define EMIF_SDREF2 0x80F
- #define EMIF_SDEXT1 0x810
- #define EMIF_SDEXT2 0x811
- #define EMIF_CE1SECCTL1 0x822
- #define EMIF_CE1SECCTL2 0x823
- #define EMIF_CE0SECCTL1 0x824
- #define EMIF_CE0SECCTL2 0x825
- #define EMIF_CE2SECCTL1 0x828
- #define EMIF_CE2SECCTL2 0x829
- #define EMIF_CE3SECCTL1 0x82A
- #define EMIF_CE3SECCTL2 0x82B
- #define EMIF_CECTL1 0x840
- #define EMIF_CECTL2 0x841
- /*************************************************/
- /* PLL REGISTERS */
- /*************************************************/
- #define PLLCSR 0x1C80
- #define CK3SEL 0x1C82
- #define PLLM 0x1C88
- #define PLLDIV0 0x1C8A
- #define PLLDIV1 0x1C8C
- #define PLLDIV2 0x1C8E
- #define PLLDIV3 0x1C90
- #define OSCDIV1 0x1C92
- #define WAKEUP 0x1C98
- /*************************************************/
- /* The Startup() function is executed when the GEL file is loaded. */
- StartUp()
- {
- C5502_Init(); /* 初始化板卡 */
-
- Init_CE23_SDRAM(); /* 初始化CE2,CE3空间的SDRAM */
- GEL_TextOut("Gel StartUp Complete.
");
- }
- OnReset()
- {
-
- Init_CE23_SDRAM(); /* 初始化CE2,CE3空间的SDRAM */
- }
- menuitem "C5502_Configuration";
- hotmenu CPU_Reset()
- {
- GEL_Reset(); /* 复位目标系统并重装监视器 */
- GEL_TextOut("CPU Reset Complete.
");
- }
- /* Memory map based on MP/MC value=0 (BOOTM[2:0]!=0). */
- hotmenu C5502_Init()
- {
- GEL_Reset(); /* 复位目标系统并重装监视器 */
-
- Init_PLL_byF(); /* 将板卡主频设置为300Mhz */
-
- GEL_MapOn(); /* 使能存储器映射 */
- GEL_MapReset(); /* 复位存储器映射,禁止读写所有空间 */
-
- /*------------------------- Program Space------------------------------------ */
- GEL_MapAdd(0x0000C0u,0,0x00FF40u,1,1); /* DARAM */
- GEL_MapAdd(0x010000u,0,0x7F0000u,1,1); /* External CE0 */
- //GEL_MapAdd(0x400000u,0,0x400000u,1,1); /* External CE1 */
- GEL_MapAdd(0x800000u,0,0x400000u,1,1); /* External CE2 */
- /* For MP/MC=0 (BOOTM[2:0] != 0) */
- GEL_MapAdd(0xC00000u,0,0x3F8000u,1,1); /* External CE3 */
- GEL_MapAdd(0xFF8000u,0,0x008000u,1,0); /* PDROM */
- /*------------------------- Data Space--------------------------------------- */
-
- GEL_MapAdd(0x000000u,1,0x00005Fu,1,1); /* MMRs */
- GEL_MapAdd(0x000060u,1,0x007FA0u,1,1); /* DARAM */
-
- GEL_MapAdd(0x08000u,1,0x3F8000u,1,1); /* External CE0 */
- //GEL_MapAdd(0x200000u,1,0x200000u,1,1); /* External CE1 */
- GEL_MapAdd(0x400000u,1,0x200000u,1,1); /* External CE2 */
-
- /* For MP/MC=0 (BOOTM[2:0] != 0)*/
- GEL_MapAdd(0x600000u,1,0x1FC000u,1,1); /* External CE3 */
- GEL_MapAdd(0x7FC000u,1,0x004000u,1,0); /* PDROM */
-
- /*------------------------- IO Space------------------------------------------- */
- GEL_MapAdd(0x0800u,2,0x0042u,1,1); /* EMIF 1KW */
- GEL_MapAdd(0x0C00u,2,0x00B0u,1,1); /* DMA 1KW */
- GEL_MapAdd(0x1000u,2,0x0020u,1,1); /* TIMER#0 1KW */
- GEL_MapAdd(0x1C80u,2,0x0019u,1,1); /* PLL Control */
- GEL_MapAdd(0x2400u,2,0x0014u,1,1); /* TIMER#1 1KW */
- GEL_MapAdd(0x1400u,2,0x0004u,1,1); /* ICACHE 1KW */
- GEL_MapAdd(0x1C00u,2,0x0400u,1,1); /* CLKGEN 1KW */
- GEL_MapAdd(0x2000u,2,0x0055u,1,1); /* TRACE FIFO 1KW */
- GEL_MapAdd(0x3400u,2,0x0002u,1,1); /* GPIO 1KW */
- GEL_MapAdd(0x3800u,2,0x0008u,1,1); /* ID 1KW */
- GEL_MapAdd(0x3C00u,2,0x000Fu,1,1); /* I2C 1KW */
- GEL_MapAdd(0x4000u,2,0x0014u,1,1); /* TIMER#2 1KW */
- GEL_MapAdd(0x4400u,2,0x0009u,1,1); /* PGPIO 1KW */
- GEL_MapAdd(0x6C00u,2,0x0002u,1,1); /* XBSR 1KW */
- GEL_MapAdd(0x7800u,2,0x0010u,1,1); /* BIOS Timer 1KW */
- GEL_MapAdd(0x8000u,2,0x0002u,1,1); /* Timer Signal Selector 1KW */
- GEL_MapAdd(0x8400u,2,0x0002u,1,1); /* CLKOUT selector 1KW */
- GEL_MapAdd(0x8800u,2,0x0400u,1,1); /* IOMACRO 1KW */
- GEL_MapAdd(0x8c00u,2,0x0002u,1,1); /* CLKMOD0 1KW */
- GEL_MapAdd(0x9000u,2,0x0400u,1,1); /* Peri data Mux 1KW */
- GEL_MapAdd(0x9C00u,2,0x000Du,1,1); /* UART 1KW */
- GEL_MapAdd(0xA000u,2,0x0028u,1,1); /* UHPI 1KW */
- EMIF_Init();
- GEL_TextOut("C5502_Init Complete.
");
- }
- EMIF_Init()
- {
- /* 配置EMIF寄存器 */
- GEL_MemoryFill(0x6c00 ,2,1,0x0001); /* Enable EMIF bus. */
- GEL_MemoryFill(EMIF_GCTL1 ,2,1,0x0764); /* EK1HZ=1, EK1EN=1 */
- GEL_MemoryFill(EMIF_GCTL2 ,2,1,0x0003); /* ECLKOUT2=ECLKOUT1,ECLKOUT2 enabled */
- }
- hotmenu Init_CE23_SDRAM()
- {
- /* 首先配置EMIF */
- EMIF_Init();
-
- /* 然后配置SDRAM空间 */
- GEL_MemoryFill(EMIF_CE01 ,2,1,0xFF93); /* 32-bit SDRAM in CE2 space. */
- GEL_MemoryFill(EMIF_CE11 ,2,1,0xFF93); /* 32-bit SDRAM in CE3 space. */
- GEL_MemoryFill(EMIF_SDCNT1 ,2,1,0x6000);/* TRC=5, disable self-refresh mode */
- GEL_MemoryFill(EMIF_SDCNT2 ,2,1,0x5715);/* 4 banks,11 row address, 8 column address, Refresh enabled */
- GEL_MemoryFill(EMIF_SDREF1 ,2,1,0x061B);
- GEL_MemoryFill(EMIF_SDREF2 ,2,1,0x0300);
- GEL_MemoryFill(EMIF_SDEXT1 ,2,1,0xB488);
- GEL_MemoryFill(EMIF_SDEXT2 ,2,1,0x0005);
- GEL_MemoryFill(EMIF_CECTL1 ,2,1,0x0001);
- GEL_MapAdd(0x008000u,1,0x3F8000u,1,1); // External CE2 -- data space
- GEL_MapAdd(0x010000u,0,0x7f0000u,1,1); // External CE2 -- program space
- //GEL_MapAdd(0x200000u,1,0x200000u,1,1); // External CE3 -- data space
- //GEL_MapAdd(0x400000u,0,0x400000u,1,1); // External CE3 -- program space
-
- }
- hotmenu Init_PLL_byF()
- {
- GEL_MemoryFill(PLLCSR, 2, 1,0x0001); /* PLL enabled */
- GEL_MemoryFill(PLLM, 2, 1,0x000F); /* PLL X15 */
- }
- hotmenu Init_PLL_byA()
- {
- GEL_MemoryFill(PLLCSR, 2, 1,0x0001); /* PLL enabled */
- GEL_MemoryFill(PLLM, 2, 1,0x0008); /* PLL X10 */
- }
- /*------------------------------------------------------------------------------------*/
- // No more
- /*-------------------------------------------------------------------------------------*/
复制代码一周热门 更多>