TI中文支持网
TI专业的中文技术问题搜集分享网站

【C6472多核引导】请教大神一下关于C6472多核引导的问题 – – – 折腾了俩周末没搞定

想自己验证一下6472多核引导的过程,谁知道一直没有成功,下面把思路和操作描述一下,请大神们帮忙看看哪个环节有问题

平台:EVMC6472

引导方式:boot mode配的0b'0010,即下图红色框中的引导方式

              

 我是用“evm6472\bootloader_package\EEPROM_flash_image_gen”里边的工具把使用EMULATOR在0核上调试OK的.out转成IIC EEPROM

烧写文件之后,使用I2C_EEPROM_writer工程将文件烧写到IIC ROM中去执行的,烧写是成功的,开发板上电之后,0核执行也是没问题的。

我的疑问是:我在0核上通过软件将0核L2 SRAM中的程序copy到其他5个核的L2 SRAM上去,代码如下:

        /* 为1、2、3、4、5核复制代码 */
          for(uiIndex = 1; uiIndex < 5; uiIndex++)
          {
             memcpy((void *)(CORE0_L2SRAM_IN_OTHER_CORES + uiIndex * 0x1000000), (void *)CORE0_L2SRAM, 608 * 1024);
          }

然后将其他5个核对应的引导地址寄存器DSP_BOOT_ADDRx配置为“main”,代码如下: 

  *DSP1_BOOT_ADDR = (UINT32)main;
  *DSP2_BOOT_ADDR = (UINT32)main;
  *DSP3_BOOT_ADDR = (UINT32)main;
  *DSP4_BOOT_ADDR = (UINT32)main;
  *DSP5_BOOT_ADDR = (UINT32)main;

这些配置完之后,通过0核将其他5个核的BOOT_COMPLETE_STAT对应位域置位,使其他5个核开始引导启动。

这样,应该6个核都能跑起来的吧,但是我在程序里边加了点LED的代码,发现只有0核点了0核对应的LED,其他5个核没有点亮LED

结论:这个过程中其他5个核的引导过程存在问题,导致其他5个核没有正常跑到main函数里边去,所以没有点亮其他5个核对应的LED

问题:这个过程中,除了0核外,其他5个核的引导过程,应该是这样的:0核置位其他5个核的BOOT_COMPLETE_STAT对应位域后,

其他5个核就开始从各自DSP_BOOT_ADDRx寄存器中配置的地址开始执行!关于这点,是我理解的有问题么?如果没问题,那其他5个核应该直接就从main开始运行了,但是通过点LED观察,发现,其他5个核没有运行main里边的函数

 

请大神赐教啊,多谢先

Woo Alex:

另外请教一个问题:

放在0x100000处的boot rom中的程序,在哪儿可以找到源代码啊?很想知道这个代码里边到底是干了些啥

King Wang1:

有两点意见你可以参考:

1)引导的地址不应该是main,而是_c_int00函数,main函数是无法直接启动的;

2)确定你所有的有效代码是在L2中,而且都是0x008*****的地址空间;

如果这样还不行,那么就加JTAG看看其余Core的PC指针在什么位置,如果不在ROM空间,那么肯定就是启动成功了,只是代码有些问题;如果还在ROM的地址空间,那么就去查各个核的BOOT_ADDR地址是否写入了有效值,并且确定从核的引导方式是否正确。

Woo Alex:

回复 King Wang1:

多谢King Wang1 及时回复。

有几个疑问:

问题1、emulator连接上后显示的那个boot.c(上图中红圈内的)源码在什么地方能看到?

问题2、_c_int00函数是否是做了一些硬件(比如栈指针寄存器的配置)和软件(C库初始化)上必要的配置,然后再跳到main里边来?

问题3、6472的bootloader文档里边有看到一个地方说BOOT_ADDR需要22比特对齐,没太理解

                 

但是在datasheet里边又讲那个开始执行地址是占低22bit,而且是基于L2 RAM偏移的,如下图:

请教一下大神,这个boot_addr寄存器到底怎么使用的哦?

问题4、JTAG仿真器连接上之后,不会影响DSP的运行模式、运行状态吧?

Woo Alex:

回复 Woo Alex:

关于上面第四个问题,刚才连仿真器验证了一下,断掉emulator的连接,复位CPU,核0会执行烧写在IIC ROM里边的代码,此时在连接上JTAG

发现连上JTAG之后,核0的PC变成指向main了,这说明先让CPU运行,再连JTAG,此时CPU状态就不是连JTAG之前的状态了

赞(0)
未经允许不得转载:TI中文支持网 » 【C6472多核引导】请教大神一下关于C6472多核引导的问题 – – – 折腾了俩周末没搞定
分享到: 更多 (0)