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.

[参考译文] TMS320C6657:如何修改双核引导的该源?

Guru**** 2417590 points


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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1531843/tms320c6657-how-can-i-modify-this-source-for-dual-core-booting

部件号:TMS320C6657

工具/软件:

我正在使用 cache_wbL1d 和 cache_invL1d 在没有 BIOS 的情况下使用双核。 如何修改此引导代码?

我可以使用这个源 https://github.com/rk4526/EMIF16-flash-DualCore.git 来写入闪存吗?

#include
#include
#include

包含“ti/csl/csl_chip.h"</s>“
#include “ti/csl/cacheAux.h"</s>“

define SHARED_MEM_BASE 0x0C000000
2700
#define SHARED_MEM_ADDR (SHARED_MEM_BASE + SHARED_MEM_OFFSET)
#define BUFFER_SIZE 4096

// IPC 寄存器宏
#define IPCGR1 (*(volatile uint32_t *) 0x02620244U)
#define IPCAR1 (*(volatile uint32_t *) 0x02620284U)

typedef 结构{
易失性 uint32_t 标志;
易失性 uint32_t 大小;
volatile char buffer[BUFFER_SIZE];
} SharedPacket;

Volatile SharedPacket* Shared =(SharedPacket*)SHARED_MEM_ADDR;

//简单的起搏
void short_delay (){
Volatile int i;
对于 (I = 0;I < 100000;I++){}
}

void sendFromCore0 (uint32_t id){
shared->size = snprintf((char*) shared->buffer、buffer_size、“Hello from CORE0: MSG %u“、id);
shared->flag = 0xA5A50000 | id;
cache_wbL1d (void *) shared、sizeof (SharedPacket)、cache_wait);
IPCGR1 = 1;//触发 CORE1
printf(“[C66xx_0] sent msg %u:\“%s\"\n",“,id“id,、,shared->buffer、shared->buffer );
}

void waitReplyCore0(){
while (1){
CACHE_INVL1d (void *) shared、sizeof (SharedPacket)、cache_wait);
if (shared->flag =0) break;
short_delay ();
}
printf(“[C66xx_0]获得回复:\“%s\"\n",“,共享“共享->、->缓冲区);
}

Void handleCore1(){
CACHE_INVL1d (void *) shared、sizeof (SharedPacket)、cache_wait);
如果 (shared->flag !=0){
uint32_t msgid = shared->flag 和 0xFFFF;
printf(“[C66xx_1]获得 msg %u:\“%s\"\n",“,msgid“msgid,、,共享、共享->缓冲区);
snprintf((char*) shared->buffer、buffer_size、“Core1 ACK: msg %u“、msgid);
shared->size = strlen ((char*) shared->buffer);
shared->flag = 0;
cache_wbL1d (void *) shared、sizeof (SharedPacket)、cache_wait);
}
}
void main(){
uint32_t coreNum = CSL_chipReadReg (CSL_CHIP_DNUM);
uint32_t count = 0;
if (coreNum == 0){
printf(“[C66xx_0] CORE0 starting……\n“);
while (1){
sendFromCore0 (count);
waitReplyCore0();
count++;
//short_delay ();
}

}其他{
printf(“[C66xx_1] Core1 ready……\n“);
while (1){
//如果 (IPCGR1 和 1){
// IPCAR1 = 1;//确认
handleCore1();
//}
}
}

while (1);//从不退出
}




内存{
MSMCSRAM (RWX):origin = 0x0C000000、length = 0x00080000 /* 512KB Shared */
L2SRAM (RWX):origin = 0x00800000、length = 0x00080000 /* 512KB 本地*/
L2SRAM2 (RWX):origin = 0x00880000、length = 0x00080000 /* 512KB Local */
}

Sections{
.text > L2SRAM
.stack > L2SRAM
.bss > L2SRAM
.const > L2SRAM
.cinit > L2SRAM
.pinit > L2SRAM
.data > L2SRAM
.fardata > L2SRAM
.sysmem > L2SRAM

.sharedPacket > MSMCSRAM
.boot_load:load > MSMCSRAM、align (0x100)
}

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

    您好、

    我会在一天内检查并回复您。

    此致、

    Betsy Varughese.

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

    谢谢您、Betsy Varughese。 我将等待您的反馈。

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

    您好、Eric、

    我是否可以使用此源 https://github.com/rk4526/EMIF16-flash-DualCore.git 在闪存上进行写入?

    是的、它似乎与 KeyStone 1 器件兼容。

    我会查看您的其他问题 、并在此主题中进行跟进。 同时、我建议浏览 常见问题解答 和之前的 E2E 论坛帖子 、了解更多背景信息。

    此致、

    Betsy Varughese.

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

    您好 Betsy。

    再次感谢您的支持。

    此致、
    Eric

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

    您好、Eric、

    如果您需要任何进一步的支持、请尝试结束并告诉我。

    此致、

    Betsy Varughese.

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

    您好 Betsy、
    我尝试使用此源代码写入 NOR 闪存。 它在通过 CCS 运行(调试)时工作正常、但确实如此 从闪存引导时不起作用
    您能否检查源或闪存引导配置是否有任何问题?
    https://github.com/rk4526/dualExampleC6657.git

    此致、

    Eric

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

    BOOT_C6657.out
    map boot_C6657.map
    -A
    -image

    -订单 L
    -memwidth 8
    -romwidth 16
    -boot
    -bootorg 0x70000900
    -bootsection .boot_load 0x70000000

    ROM

    闪存:org = 0x70000000、len = 0x20000、romwidth = 16、files ={boot_C6657.hex}
    }



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

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我正在尝试使用此源代码写入 NOR 闪存。 通过 CCS 运行 (debug)
    时工作正常

    很高兴知道这个。

    但确实如此 从闪存引导时不起作用
    您能否检查源或闪存引导配置是否有任何问题?

    没问题。 让我检查一下、并在一天内回复您。

    我想知道是否已经为此创建了单独的线程? “ e2e.ti.com/.../tms320c6657-do-you-have-an-example-project-for-tms320c6657-dual-core-operation-flash-boot-without-bios-sys-using-ccs-v9-3“

    此致、

    Betsy Varughese.

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

    您好、Eric、

    您是否尝试使用具有相同配置的预构建映像? 这样可以吗?

    此致、

    Betsy Varughese.

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

    我没有预编译的映像文件。 我可以从哪里获得它? 是单核还是多核? 如果您询问单核、 从闪存引导是很好的。

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

    您好 Betsy、
    您是否有 CCS v9.3 上有关双核闪存引导的一些示例?
    此致、
    Eric

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

    您好、Eric、

    我无法在 SDK 中找到任何双核的示例文件。 我想检查您是否有机会查看 E2E 论坛帖子  、这是对我们之前的主题的引用。

    此致、

    Betsy Varughese.