2019-08-05 15:55发布
zhangmangui 发表于 2014-4-9 21:42 这个就不好说了 在确认一下连到哪个区了 在CCS中读写是应该是字地址 而不是字节地址 你再试试吧 ...
sxmilovebb 发表于 2014-4-10 16:37 谢谢你的提醒. 重新修改了GEL文件. 用的开发板的GEL是CCS3.3里面的GEL, 后来从网上找到SEED的, 参照修改 ...
zhangmangui 发表于 2014-4-10 21:40 其实GEL就是配合CCS在仿真的时候可以读写而已 你是怎么测试的?擦出烧写成功了么 完了之后同样用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
- /*-------------------------------------------------------------------------------------*/
复制代码其实GEL就是配合CCS在仿真的时候可以读写而已
你是怎么测试的?擦出烧写成功了么 完了之后同样用CCS读取看看
还有如果是启动不了 就确认一下GPIO的选择是否正确
1,
GEL仅仅配合ccs使用, 我测试了, 明明8Mbytes的sdram, 修改gel变成使用所有CE空间, 访问0X700000的地址, 已经远远超出8M了吧? 竟然都成功了.
然后把gel文件里对寄存器配置的拷贝到程序里. 结果, 还是不对.
总结一下, GEL和ccs就是骗子团伙....
2,
应该擦出成功了.
写后读, 然后数据比较, 出错则闪led, 正常则灭led.
BOOT1.BIN 是0X200000以内的数据(1000个), 结果, 灯灭.
BOOT2.BIN 是0x200000以后的数据(1000个), 结果, 闪灯.
3,
一周热门 更多>