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.

[参考译文] TMS320F28375D:以并行模式启动 CPU-2 - IPCBootCPU2 (C1C2_Brom_BOOTMODE_BOOT_FROM 并行)

Guru**** 2553450 points


请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1035177/tms320f28375d-boot-up-cpu-2-in-parallel-mode--ipcbootcpu2-c1c2_brom_bootmode_boot_from_parallel

器件型号:TMS320F28375D

您好!

我们正在为 CPU-2编写算法程序闪存。  

目前、我们遇到 CPU -1在并行模式下引导 CPU-2的问题(IPCBootCPU2 (C1C2_Brom_BOOTMODE_BOOT_FROM _PARALLEL)

完成启动后、启动 CPU-1

//发布将 GPIO 重新分配到 CPU2 (GPIO69、70、63-58、64、65)
uint16_t 引脚;
对于(引脚=58;引脚<=65;引脚++)

 GPIO_SetupPinOptions (Pin、GPIO_input、GPIO_Async);
 GPIO_SetupPinMux (引脚、GPIO_MUX_CPU2、0);

GPIO_SetupPinOptions (69、GPIO_OUTPUT、GPIO_异 步);
GPIO_SetupPinMux (69、GPIO_MUX_CPU2、0);
GPIO_SetupPinOptions (70、GPIO_INPUT、GPIO_异 步);
GPIO_SetupPinMux (70、GPIO_MUX_CPU2、0);
//CPU-1在并行模式下引导 CPU-2
IPCBootCPU2 (C1C2_Brom_BOOTMODE_BOOT_FROM 并行);

启动 CPU2后、不会从并行端口发出信号。

感谢你的帮助。

启动 CPU2后没有从并行输出信号。

此致、

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    大家好、Trung、  

    您能不能通过方框图和规格详细说明一下您的设计。

    谢谢、

    Krishna

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    大家好、Trung、  

    您能不能通过方框图和规格详细说明一下您的设计。

    谢谢、

    Krishna

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    大家好、Trung、  

    除了提供有关设计的更多详细信息、请注意 IPCBootCPU2函数已将 GPIO 引脚重新分配到 CPU2、您无需自行重新分配这些引脚。  

    谢谢、  

    Anu

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    你好  Anu

    感谢您的回复。

    我们希望 在启动 CPU-2之前将 GPIO 引脚释放到 CPU 2。  

     

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    大家好、Trung、  

    您能帮助回答以下问题吗?  让我们首先确定目前正在开展的工作。  

    1. CPU1是否按预期正常引导和执行应用程序。  

    2. CPU 1在有无调试器的情况下是否工作(独立)。

    3.在不进行任何其他修改的情况下(未改动 GPIO),请回答与 CPU 2相同的问题

    谢谢、

    Krishna

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、 Krishna、

    1. CPU1是否按预期正常引导和执行应用程序。  

       是的、CPU 1 正常执行应用:与我们的设备和编程闪存握手。  

    2. CPU 1在有无调试器的情况下是否工作(独立)。

        我不理解 是否使用  调试器。

       基本上、从外部:器件上电后、将器件复位为并行模式、加载引导代码 CPU 1并  执行应用。

    3.在不进行任何其他修改的情况下(未改动 GPIO),请回答与 CPU 2相同的问题。

        我尝试了两种方法,都没有 修改 GPIO:相同的问题 CPU 2没有按预期引导。

    感谢你的帮助。

    此致、

    Trung Dao  

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Krishna、

    要求给予特别关注、以便我们可以解决 BPM 的这个问题。

    这是最新的代码、仍然不能使 CPU2从并行引导。 有什么想法吗?

    IPCBootCPU2(C1C2_BROM_BOOTMODE_BOOT_FROM_PARALLEL);
    
    ///Added after boot up
    EALLOW;
    DevCfgRegs.CPU2RESCTL.all = 0xA5A50001;
    __asm("  RPT #5 || NOP");
    DevCfgRegs.CPU2RESCTL.all = 0xA5A50000;
    //
    // Loop until CPU02 control system IPC flags 1 and 32 are available
     //
    while(IPCLtoRFlagBusy(IPC_FLAG0) | IPCLtoRFlagBusy(IPC_FLAG31)){}
    IpcRegs.IPCSET.all = 0x80000001; //(CPU1 to CPU2 IPC flag register)
    EDIS;
    
        EALLOW;
        //
        //Hand control of thet GSxRAM over to CPU2
        //
        assignSharedRAMstoCPU2();
    
        for(x = 0; x < 32767/2; x++)
        {
                asm(" NOP");
                asm(" NOP");
        }
    
        IpcRegs.IPCSET.bit.IPC15 = 1; //setting the flag to allow CPU2 to run
        for(x = 0; x < 32767/2; x++)
        {
            asm(" NOP");
            asm(" NOP");
        }
    
        while(IpcRegs.IPCFLG.bit.IPC15 == 0){}//Hanging in this loop 
    
    

    我们是否需要添加例程来将中断矢量复制到 CPU2的 RAM 中? 可能缺少其他哪些命令?

    谢谢!

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    大家好、Trung、

    很抱歉我没有收到您的回复。  

    在项目2上、如何将引导代码上载到 CPU1?  

    对于第3项、让我们在不对 GPIO 进行任何修改的情况下调试这个问题。

    您具体采取了哪些措施来确定 CPU2未按预期引导?   

    例如、您是否通过 CCS 连接到目标、并发现目标丢失? 或在 while 环路中旋转? 或者您看到什么(或看不到)。  

    谢谢、

    Krishna

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Krishna、

    在项目2上、如何将引导代码上载到 CPU1?  

     ***** 我们将从外部并行模式上载启动代码:

        gpio72=Vil;gpio84=Vil; trst=VIH; XRS=VIH;

       BOOTDATA  K16 L17 N17 M16 M17 L16 J17 J16/GPIO65、GPIO64、GPIO58-GPIO63

       引导代码上载到 RAM 后握手、内部固件会处理此问题。

       host_ctrl gpio70
      DSP_Ctrl gpio69

    我们不会像上述序列那样上传和运行 CPU-1。

    对于第3项、让我们在不对 GPIO 进行任何修改的情况下调试这个问题。
    您具体采取了哪些措施来确定 CPU2未按预期引导?

    ***** 执行此命令后:

    IPCBootCPU2 (C1C2_Brom_BOOTMODE_BOOT_FROM 并行);

    我们期待着握手  

    host_ctrl gpio70
     DSP_Ctrl gpio69

    特殊引脚 DSP_Ctrl,此引脚切换为低电平,并且永远不会使其像预期的那样升高,

    从引导数据接收到0xAA 后    

    还有一点让我们知道 CPU-2未就绪

    BOOTStatus = IPCGetBootStatus()& 0x0000000F;

    BOOTStatus 为0x00000000,因此未准备就绪。

    我们期望 C2_BootROM_BOOTSTS_SYSTEM_READY (0x00000002)

    我们不通过 CCS 连接目标。

    已删除所有 GPIO、但仍无法引导 CPU-2。  

    我们正在寻找解决方案调试 CPU-2,什么是内部寄存器让我们了解 CPU-2的状态:示例等待模式、串行模式或并行模式

    我们是否必须在启动前为 CPU-2定义引导矢量地址?

    此致

    Trung Dao