This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

如何将gel文件中的内容转移到程序中,例如mapinit中的。

c5515_MapInit() {
GEL_MapOn();
GEL_MapReset();

/*Program Space*/

/* DARAM */
GEL_MapAdd(0x0000C0,0,0x001F40,1,1); /* DARAM0 */
GEL_MapAdd(0x002000,0,0x002000,1,1); /* DARAM1 */
GEL_MapAdd(0x004000,0,0x002000,1,1); /* DARAM2 */
GEL_MapAdd(0x006000,0,0x002000,1,1); /* DARAM3 */
GEL_MapAdd(0x008000,0,0x002000,1,1); /* DARAM4 */
GEL_MapAdd(0x00A000,0,0x002000,1,1); /* DARAM5 */
GEL_MapAdd(0x00C000,0,0x002000,1,1); /* DARAM6 */
GEL_MapAdd(0x00E000,0,0x002000,1,1); /* DARAM7 */

/* SARAM */
GEL_MapAdd(0x010000,0,0x002000,1,1); /* SARAM0 */
GEL_MapAdd(0x012000,0,0x002000,1,1); /* SARAM1 */
GEL_MapAdd(0x014000,0,0x002000,1,1); /* SARAM2 */
GEL_MapAdd(0x016000,0,0x002000,1,1); /* SARAM3 */
GEL_MapAdd(0x018000,0,0x002000,1,1); /* SARAM4 */
GEL_MapAdd(0x01A000,0,0x002000,1,1); /* SARAM5 */
GEL_MapAdd(0x01C000,0,0x002000,1,1); /* SARAM6 */
GEL_MapAdd(0x01E000,0,0x002000,1,1); /* SARAM7 */
GEL_MapAdd(0x020000,0,0x002000,1,1); /* SARAM8 */
GEL_MapAdd(0x022000,0,0x002000,1,1); /* SARAM9 */
GEL_MapAdd(0x024000,0,0x002000,1,1); /* SARAM10 */
GEL_MapAdd(0x026000,0,0x002000,1,1); /* SARAM11 */
GEL_MapAdd(0x028000,0,0x002000,1,1); /* SARAM12 */
GEL_MapAdd(0x02A000,0,0x002000,1,1); /* SARAM13 */
GEL_MapAdd(0x02C000,0,0x002000,1,1); /* SARAM14 */
GEL_MapAdd(0x02E000,0,0x002000,1,1); /* SARAM15 */
GEL_MapAdd(0x030000,0,0x002000,1,1); /* SARAM16 */
GEL_MapAdd(0x032000,0,0x002000,1,1); /* SARAM17 */
GEL_MapAdd(0x034000,0,0x002000,1,1); /* SARAM18 */
GEL_MapAdd(0x036000,0,0x002000,1,1); /* SARAM19 */
GEL_MapAdd(0x038000,0,0x002000,1,1); /* SARAM20 */
GEL_MapAdd(0x03A000,0,0x002000,1,1); /* SARAM21 */
GEL_MapAdd(0x03C000,0,0x002000,1,1); /* SARAM22 */
GEL_MapAdd(0x03E000,0,0x002000,1,1); /* SARAM23 */
GEL_MapAdd(0x040000,0,0x002000,1,1); /* SARAM24 */
GEL_MapAdd(0x042000,0,0x002000,1,1); /* SARAM25 */
GEL_MapAdd(0x044000,0,0x002000,1,1); /* SARAM26 */
GEL_MapAdd(0x046000,0,0x002000,1,1); /* SARAM27 */
GEL_MapAdd(0x048000,0,0x002000,1,1); /* SARAM28 */
GEL_MapAdd(0x04A000,0,0x002000,1,1); /* SARAM29 */
GEL_MapAdd(0x04C000,0,0x002000,1,1); /* SARAM30 */
GEL_MapAdd(0x04E000,0,0x002000,1,1); /* SARAM31 */

/* External-Memory */
GEL_MapAdd(0x050000,0,0x7B0000,1,1); /* External-SDRAM */
GEL_MapAdd(0x800000,0,0x400000,1,1); /* External-Async */
GEL_MapAdd(0xC00000,0,0x200000,1,1); /* External-Async */
GEL_MapAdd(0xE00000,0,0x100000,1,1); /* External-Async */
GEL_MapAdd(0xF00000,0,0x0E0000,1,1); /* External-Async */

/* ROM */
GEL_MapAdd(0xFE0000,0,0x008000,1,0); /* SAROM0 */
GEL_MapAdd(0xFE8000,0,0x008000,1,0); /* SAROM1 */
GEL_MapAdd(0xFF0000,0,0x008000,1,0); /* SAROM2 */
GEL_MapAdd(0xFF8000,0,0x008000,1,0); /* SAROM3 */

/* Data Space */

/* DARAM */
GEL_MapAdd(0x000000,1,0x000060,1,1); /* MMRs */
GEL_MapAdd(0x000060,1,0x000FA0,1,1); /* DARAM0 */
GEL_MapAdd(0x001000,1,0x001000,1,1); /* DARAM1 */
GEL_MapAdd(0x002000,1,0x001000,1,1); /* DARAM2 */
GEL_MapAdd(0x003000,1,0x001000,1,1); /* DARAM3 */
GEL_MapAdd(0x004000,1,0x001000,1,1); /* DARAM4 */
GEL_MapAdd(0x005000,1,0x001000,1,1); /* DARAM5 */
GEL_MapAdd(0x006000,1,0x001000,1,1); /* DARAM6 */
GEL_MapAdd(0x007000,1,0x001000,1,1); /* DARAM7 */

/* SARAM */
GEL_MapAdd(0x008000,1,0x001000,1,1); /* SARAM0 */
GEL_MapAdd(0x009000,1,0x001000,1,1); /* SARAM1 */
GEL_MapAdd(0x00A000,1,0x001000,1,1); /* SARAM2 */
GEL_MapAdd(0x00B000,1,0x001000,1,1); /* SARAM3 */
GEL_MapAdd(0x00C000,1,0x001000,1,1); /* SARAM4 */
GEL_MapAdd(0x00D000,1,0x001000,1,1); /* SARAM5 */
GEL_MapAdd(0x00E000,1,0x001000,1,1); /* SARAM6 */
GEL_MapAdd(0x00F000,1,0x001000,1,1); /* SARAM7 */
GEL_MapAdd(0x010000,1,0x001000,1,1); /* SARAM8 */
GEL_MapAdd(0x011000,1,0x001000,1,1); /* SARAM9 */
GEL_MapAdd(0x012000,1,0x001000,1,1); /* SARAM10 */
GEL_MapAdd(0x013000,1,0x001000,1,1); /* SARAM11 */
GEL_MapAdd(0x014000,1,0x001000,1,1); /* SARAM12 */
GEL_MapAdd(0x015000,1,0x001000,1,1); /* SARAM13 */
GEL_MapAdd(0x016000,1,0x001000,1,1); /* SARAM14 */
GEL_MapAdd(0x017000,1,0x001000,1,1); /* SARAM15 */
GEL_MapAdd(0x018000,1,0x001000,1,1); /* SARAM16 */
GEL_MapAdd(0x019000,1,0x001000,1,1); /* SARAM17 */
GEL_MapAdd(0x01A000,1,0x001000,1,1); /* SARAM18 */
GEL_MapAdd(0x01B000,1,0x001000,1,1); /* SARAM19 */
GEL_MapAdd(0x01C000,1,0x001000,1,1); /* SARAM20 */
GEL_MapAdd(0x01D000,1,0x001000,1,1); /* SARAM21 */
GEL_MapAdd(0x01E000,1,0x001000,1,1); /* SARAM22 */
GEL_MapAdd(0x01F000,1,0x001000,1,1); /* SARAM23 */
GEL_MapAdd(0x020000,1,0x001000,1,1); /* SARAM24 */
GEL_MapAdd(0x021000,1,0x001000,1,1); /* SARAM25 */
GEL_MapAdd(0x022000,1,0x001000,1,1); /* SARAM26 */
GEL_MapAdd(0x023000,1,0x001000,1,1); /* SARAM27 */
GEL_MapAdd(0x024000,1,0x001000,1,1); /* SARAM28 */
GEL_MapAdd(0x025000,1,0x001000,1,1); /* SARAM29 */
GEL_MapAdd(0x026000,1,0x001000,1,1); /* SARAM30 */
GEL_MapAdd(0x027000,1,0x001000,1,1); /* SARAM31 */

/* External-Memory */
GEL_MapAdd(0x028000,1,0x3D8000,1,1); /* External-SDRAM */
GEL_MapAdd(0x400000,1,0x200000,1,1); /* External-Async */
GEL_MapAdd(0x600000,1,0x100000,1,1); /* External-Async */
GEL_MapAdd(0x700000,1,0x080000,1,1); /* External-Async */
GEL_MapAdd(0x780000,1,0x070000,1,1); /* External-Async */

/* ROM */
GEL_MapAdd(0x7F0000,1,0x004000,1,0); /* SAROM0 */
GEL_MapAdd(0x7F4000,1,0x004000,1,0); /* SAROM1 */
GEL_MapAdd(0x7F8000,1,0x004000,1,0); /* SAROM2 */
GEL_MapAdd(0x7FC000,1,0x004000,1,0); /* SAROM3 */

/* IO Space */
GEL_MapAdd(0x0000,2,0xFFFF,1,1); /* XPORT */

  • 在工程里面有个CMD文件,里面定义的就是内存映射。

    GEL里的这部分程序应该是不需要在移到程序内的。

    我在移植的时候是没有用到。

  • zhihui xuan 说:

    在工程里面有个CMD文件,里面定义的就是内存映射。

    GEL里的这部分程序应该是不需要在移到程序内的。

    我在移植的时候是没有用到。

    我用CSL里面的MSC工程 就是U盘, 发现固化之后不好用,用的是XP CCS5.2 不知道你是否有经验?

  • 巧了,刚好我也在用这个例程来扩展呢。环境和你的一样,不知道你遇到的问题是什么现象?

  • CSL库中的MSC工程,有用到2个库:CSL库和atafs库,还有用到BIOS系统。

    在工程里面有个TCF文件,是关于BIOS的设置,在进入main函数前,BIOS的初始化程序会先被执行。

    在这个工程里面,是不需要GEL文件的。BIOS的初始化可以直接代替GEL的初始化

  • 对于程序的内存映射,我觉得不需要细化那么多的SARaM和DARam。

    一般设置为这样:

    PAGE 0: VECT: origin = 0x4fc00, len = 0x100
    PAGE 0: DARAM: origin = 0xc0, len = 0xfe40
    PAGE 0: SARAM: origin = 0x10000, len = 0x3fc00

  • 真的 很感谢你这么细心。我现在主要问题是我的工程在线debug 没有问题,但是,固化到flash之后,就不能正常工作了。我是怀疑中断向量表的问题,也看过一些资料,在tcf文件里面配置好后,只需要在主函数里面使能对应的中断即可。不知道你那边固化之后U盘功能能否正常使用?如果可以,方便的话想跟你细细讨教一下?已经弄了好久,发现一直是固化之后的问题。好多工程都这样。

  • 不知道你固化后遇到的问题都是什么问题?

    你可以再固化后,再用仿真来跟着跑一跑,看是在哪里出错的。

    我的程序在没使用MSC的时候,固化是可以的。但是现在修改后的代码,固化进去也是有一堆问题没解决呢。

  • 我在使用MSC工程的时候,发现在SD卡初始化那段有点问题,当SD为大容量卡 的时候,需要在SD进入IDLE之后加入小段延时(我是用的1000指令周期),不然的话会 很容易SD不能被发现。

  • 我没考虑到CSL里的工程在固化后会有很多问题,我 是直接debug一下,可以用就 直接拿来改的。

    我现在也遇到类似的问题:程序在仿真的时候找不到main函数入口(不使用GEL的情况下)。在这里也开了帖子,不过没人回应,不知道是不是我描述的不清楚。

  •  我们俩的情况一样。我也一直debug,以为固化之后没有问题的。结果不好用·····我用的另一个工程就是SD+FS创建文件的Poll mode DMA mode这些创建文件固化之后可以使用···。 我一直以为是gel文件里面的东西没有完全转移到自己程序代码中。

  • 嗯,是啊。确实很类似。SD+FATFS。因为要用到USB大容量存储,所以就开始在MSC工程上来改。TI自带的ATAFS代码很散,而且解释很少,效率也不高,感觉不好用。

    你有没有仿真你固化后的程序?CPUreset,来看是哪个环节出的问题。

    我目前是在SD初始化那里卡住掉了。但不知道具体原因的。。。。我有LCD屏,可以看到执行过程,但是LCD显示很费时钟,显示的过程也不够详细。

    最好是还用仿真跟踪。

    那个GEL文件在MSC里面可有可无。GEL仅包含:PLL初始化和内存分配。

  • 我固化用仿真器跟的方法不知道对不对。 我是固化后,程序就再跑了,然后我吧debug配置中

    这样设置成Load symbols only。

    然后debug,这样好像很快的,没有像load program 那样慢。

    然后按你们说的reset cup(我没有找到,一直点的是reset emulator) 但是显示一个没有symbol的地址,点击restart 按钮,能回到main 函数,之后一直是打开MSC失败。

    问题1、这样Boot算是成功的么?

    2、open msc 失败我认为是boot之后他打开失败了,所以我重新跑他也会打开失败,跟我在线debug的时候一样。失败一次后我一般是断电,重新load program 才能识别U盘

  • 1,BOOT是成功了

    2,按你2的所述,很有可能是程序的初始化部分问题,就是我之前讲的SD卡没有被发现,你 的MSC肯定是打开失败的。

    你load symbol也是一样的,restart是重新回到main的入口,会跳过入口前初始化的程序。reset emulator 应该也有reset CPU的作用,显示没有的symbol地址,你就需要看汇编程序了。

    你说在失败后断电,然后在load program 可以识别U盘。load program每次都能识别吗?

    我在仿真的时候有遇到SD平均没两次就有一次不识别。我的SD卡是32G的。

  • 你可以看到MSC open failed,那么应该也可以看到SD有没有成功识别,

    SD初始化会打印3句:

    Configuring DMA for MMCSD Successful
    SD Card Detected!
    SD Card is High Capacity Card!

    你可以逐段排查 为什么MSC会OPen failed。

    对了,我记得MSC在初始化那里也会出现一种情况:

    在上电后的第一次,初始化会成功,后面restart初始化会失败,原因是在CSL_UsbConfig里的一个参数好像在软复位的时候没有恢复默认值,会造成端点配置失败。

  • 现在是基本每次都识别,我用的64G,还有128G的SD。基本都可以的。  我这边SD config是通过的。 估计还是没有配置正确什么的吧。哎, 第一次用TI的DSP。真心有点伤···· 方便留个联系方式么 我的qq499707692 方便交流··

  • 我公司里不能上QQ,可以进邮箱,我QQ是583352420。

    MSC使用的ATAFS只支持到FAT32,FAT32不是只支持到32GB么。再大就要用exfat了吧,你是用多分区的?

    我是菜鸟,一个人在摸索DSP,快5个月了,感觉还没有入门。。。

  • 我看了一下,可以支持更大的,FAT32 理论上支持2TB,但是它高几位没有用。所以实际支持128G。32G主要是windows 内核限制他。超过了,就不让用FAT32了。用其它工具软件可以格式化的。但是也没有时间测试往里面写那么多数据会怎样。·

  • 嗯,又在网上查了下,是这样的,我手上也没有更高的SD来测试,现在就用32G的。

    先继续去找问题所在,希望TI工程师能来为我们指点。