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

EVM6678 pcie 多核boot 多核共用一个工程、cmd文件如何生成bootCode?

路径:\ti\mcsdk_2_01_02_06\tools\boot_loader\examples\pcie\pcieboot_helloworld\evmc6678l下的pcie 多核boot例子相关疑问:

1. Linux下驱动程序pciedemo.c中往DSP写bootCode的程序如下:

		/* Load "Hello World" demo into DSP */
		pushData(bootCode, 9, &bootEntryAddr);

		/* Write boot entry address into MAGIC_ADDR */
		writeDSPMemory(0, MAGIC_ADDR, &bootEntryAddr, 4);

是将bootCode代码写入了DDR中,而在pushData函数中调用的writeDSPMemory写入DDR的代码如下:

		case 9:  /* this is for DDR */
			if (DSPMemAddr < DDR_START) {
				return 0;
			} else {  
				offset = DSPMemAddr - DDR_START;
				ptr = (uint32_t *)ddrVirt + offset/4;
			}
			break; 

那么实际中在bootCode表中有些段是分配到了L2SRAM中:

-c
-heap  0x2000
-stack 0x2000

/* Memory Map 1 - the default */
MEMORY
{DDR (RWX) : org = 0x80000000, len = 0x20000000
	LL2 (RWX) : org = 0x00800000, len = 0x00010000
}

SECTIONS
{.text > DDRplatform_lib > DDR.const > DDR.neardata > LL2.fardata > DDR.switch > DDR.cinit > DDR.stack > LL2.sysmem > LL2.bss > LL2.far > LL2.cio > LL2
}

bootCode一部分的数据:

uint8_t bootCode[] = {
0x80, 0x00, 0xD0, 0x60, 0x00, 0x00, 0xD8, 0x80, 0x80, 0x00, 0x00, 0x00, 0x02, 0x04, 0x03, 0xE2, 0x92, 0x46, 0x0C, 0x6E, 0x00, 0x8C, 0xA3, 0x62, 
0x02, 0x28, 0x03, 0xE2, 0x92, 0x46, 0x0C, 0x6E, 0x00, 0x8C, 0xA3, 0x62, 0x02, 0x44, 0x03, 0xE2, 0xE2, 0x40, 0x00, 0x00, 0x92, 0x46, 0x0C, 0x6E, 
0x00, 0x8C, 0xA3, 0x62, 0xDC, 0x45, 0x8C, 0xF7, 0xBC, 0x4D, 0xAC, 0x45, 0x02, 0x81, 0xC0, 0x2A, 0x02, 0x81, 0x04, 0xEA, 0x00, 0x00, 0x20, 0x00, 
0xE1, 0xA0, 0x00, 0x00, 0x02, 0x14, 0x9E, 0x42, 0x6C, 0x6E, 0x10, 0x4D, 0xCC, 0x3D, 0xFC, 0x45, 0x00, 0x00, 0x60, 0x00, 0x02, 0x0C, 0x02, 0x56,
......
}

那么bootCode中究竟有没有cmd文件中分配的 .stack > LL2, .sysmem > LL2, .bss > LL2, .far > LL2, .cio > LL2等段?如果有的话,岂不是writeDSPMemory直接return了,并没有写入到core0 的 LL2?

2. bootCode中具体有数据需要写入到DSP内部的是哪些段?而哪些段是不会放入到boot table中的?

3. _c_int00函数在boot过程中做了哪些工作?比如是_c_int00函数会创建.stack段?所以上面那些分配在LL2中的段都不需要通过bootCode写入每个DSP core的LL2中,而是在调用_c_int00函数之后由_c_int00函数创建的?

非常期待得到您的帮助!

Allen35065:

你提到的第 3 点理解是正确的,这些段是动态创建,所以在cint00之前是不需要有固定值的。

赞(0)
未经允许不得转载:TI中文支持网 » EVM6678 pcie 多核boot 多核共用一个工程、cmd文件如何生成bootCode?
分享到: 更多 (0)