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.

CSL_USB_MSC_fullSpeedExample_Out例程在线调试功能正常,将bin文件下载到EVM5515开发板上运行不正常,电脑无法识别!

如题。什么原因,该怎么解决?

  • 请看一下下面的wiki网站,bootloader会把port idle,在代码里需要打开。
    http://processors.wiki.ti.com/index.php/C5515_Boot-Image_Programmer#Ports_idled_by_bootloader

  • 只需要增加这两句吗?
    *(volatile ioport Uint16 *)0x0001 = 0x020E;
    asm(" idle");

    GEL文件中的操作在源代码中是否也需要实现?
  • 我把例程中的ccxml中的gel文件链接置为空后,即不使用gel文件,例程调试功能就不正常了,电脑无法识别USB设备。

    这说明在gel文件中的操作是必要的。

    那么,我该怎么在C源码中实现gel文件的功能呢?

    我发现,有的是操作寄存器,这个比较容易用C实现。但是有的函数就不知道怎么实现了,比如c5515_MapInit()中的GEL_MapAdd()。

    能否帮忙验证一下,如何才能确保下载bin文件到开发板后,能正常实现CSL_USB_MSC_fullSpeedExample_Out例程的功能?

    TI官方提供的EVM5515相关例程,很多都使用了GEL文件,这在调试阶段当然是没问题的,但是生成bin文件后,这部分功能并没有编译进去。

    这就给用户造成很大困惑,为什么不在C中直接实现呢??

  • GEL文件是在仿真器调试时用的,比如在ccs中要把代码load到片外SDRAM,就需要在GEL文件中的先对SDRAM进行初始化。
    如果脱机运行,比如PLL主频的配置,外设的初始化如EMIF的配置就需要放到应用代码中,也可以用-reg_config在生成boot table里事先配置PLL, EMIF等,c5515_MapInit这个不用移植。
  • 能否帮忙验证一下,怎么修改CSL_USB_MSC_fullSpeedExample_Out例程,才能确保下载bin文件到开发板后,能正常实现USB MSC功能?

    我已经移植了OnTargetConnect()函数的功能,并在main函数的第一行调用。

    void OnTargetConnect()
    {
    OnRestart();

    // enable the MPORT and disable HWA
    *(volatile ioport Uint16 *)0x0001 = 0x020E;
    asm(" idle");

    // GEL_Reset();
    Peripheral_Reset();
    ProgramPLL_100MHz();
    SDRAM_INIT();
    //GEL_TextOut("Target Connection Complete.\n");
    }

    用该方法,在CSL_USB_HidExample_Out例程中应用,生成bin文件下载到开发板,能正常实现鼠标功能。

    但在CSL_USB_MSC_fullSpeedExample_Out中没有实现USB MSC功能。

    在CSL_USB_MSC_fullSpeedExample_Out中的GEL文件,只有StartUp()函数即c5515_MapInit()没有移植,因为不知道怎么移植。

    GEL文件中,StartUp()如下

    StartUp()
    {
    c5515_MapInit();
    }

  • 【最终解决方法】:程序原来使用.tcf对中断函数mmcsd0_isr()、USBisr()等进行配置绑定,改为使用IRQ_enable()、IRQ_plug()等函数进行配置。