Quantcast
Channel: 数字信号处理器 (DSP) & ARM® 微处理器
Viewing all articles
Browse latest Browse all 21822

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

$
0
0

路径:\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 > DDR   platform_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函数创建的?

非常期待得到您的帮助!


Viewing all articles
Browse latest Browse all 21822

Trending Articles