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.

关于F28377D的双CPU的FLASH烧写问题

Other Parts Discussed in Thread: CONTROLSUITE

rt

  • CPU2有没有设置引导啊?

    IPCBootCPU2(C1C2_BROM_BOOTMODE_BOOT_FROM_FLASH);

    或者说先去跑一下TI发布的历程先

    C:\ti\controlSUITE\device_support\F2837xD\v190\F2837xD_examples_Dual\blinky_dc

    ERIC

  • 你好,问题1:程序中#ifdef _FLASH   ,那么我在哪里define呢?好像程序中并没define啊, 是不是我需要在main()之前先    define _STANDALONE然后   define _FLASH 1 呢??    因为  好像不define  程序都是带阴影无效的。

      问题2:  

    #ifdef _STANDALONE
    #ifdef _FLASH
    // Send boot command to allow the CPU2 application to begin execution
    IPCBootCPU2(C1C2_BROM_BOOTMODE_BOOT_FROM_FLASH);
    #else
    // Send boot command to allow the CPU2 application to begin execution
    IPCBootCPU2(C1C2_BROM_BOOTMODE_BOOT_FROM_RAM);
    #endif
    #endif

    我直接在cpu1中把上面这一坨  改成IPCBootCPU2(C1C2_BROM_BOOTMODE_BOOT_FROM_FLASH); 这一句就好了吧

    问题3

    _STANDALONE 和 _FLASH  有何区别?? 

  • 1. 可以在主文件前面define啊,或是右键工程>属性》CCS BUILD > c2000 compiler >advanced options > predefined sysbol中设置。

    注意一下,你右键工程》build configuration 》 set active 不同的编译选项后,其实已经会有不同的predefine帮你设好了。

    2. 也可以啊。只不过例程是为了配合不同的编译设置,做了一些预编译而已。一般单机跑的情况,就一定要加这句IPC指令,否则CPU2跑不起来。

    3. STANDALONE表示单机跑情况,即不带仿真器。FLASH即可以带仿真器,也可以不带仿真器。

    Eric

  • 大哥,你好,我在你的指示下将blinky双核的程序做了化简,只在cpu1中写了IPCBootCPU2(C1C2_BROM_BOOTMODE_BOOT_FROM_FLASH);  

    将cpu2中的

    extern Uint16 RamfuncsLoadStart;
    extern Uint16 RamfuncsLoadSize;
    extern Uint16 RamfuncsRunStart;

    memcpy(&RamfuncsRunStart, &RamfuncsLoadStart, (size_t)&RamfuncsLoadSize);

    都删除了 ,load 完之后   掉电 再 上电   发现两个小灯确实按程序的设定进行亮灭了,但是还是发现了一个问题 

    就是 如果我在load 完之后   直接对cpu1 和cpu2 点resume   而不是掉电和上电, 两个小灯就时钟亮着 而不是亮灭,  暂停后掉电再上电 才会亮灭 这是为什么呢?? 

  • 你带仿真器的时候,为了方便,不要使能IPC。

    说起来就长了:

    芯片上电的时候,都会进入一个ROM的引导程序,在正确的配置后,最终才会引导到你的main函数那儿。但是带仿真器模式,CCS会自动把这个过程屏蔽了,直接跳转到main函数入口。所以这个情况下,就不需要IPC指令了,因为这个时候CPU2已经跑起来了,你CPU1再发IPC,没人回应它,它估计就等在那里了。

    而当脱机跑的时候,CPU2是一直在ROM里面的引导代码等待CPU1的IPC指令的,所以当CPU1初始化完,运行IPC指令后,CPU2也能跑起来了。

    ERIC