完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
扫一扫,分享给好友
我想知道怎么让dsp启动的时候多核启动,debug的时候可以选择下载到那个核,然后运行,选择的核就会开始运行。
如果我把程序写到eeprom那么boot起来后就只有core0,运行,怎么让所有的核都运行呢?通过代码控制还是哪里配置呢? 我想让每个core都动起来,让他们自己读写自己的内存就可以了。我只想让他们都运行起来。 |
|
相关推荐
7个回答
|
|
1. 关于DSP启动,请参考“KeyStone Architecture Bootloader User Guide”;
2. eeprom中烧写的是IBL二级启动程序,应用程序.out一般烧写在NAND flash、NOR flash,或者使用其他方式来加载; 3.关于多核启动的实现原理,我的理解如下:core0执行RBL(一级启动)、IBL(二级启动),其中IBL的最后一步是加载应用程序到内存(各个段加载的地址由CMD文件决定),然后跳转执行应用程序;此时的core1~7一直处于IDEL状态,等待被唤醒(从RBL到IBL等过程均是由core0执行的,core1~7一直处于休眠状态)。多核启动只需在应用程序中做些内容:具体是core0将程序入口跳转地址写入core1~7的magic_addr(0x87fffc),然后触发core1~7的IPC中断唤醒,使其跳转至指定地址执行应用程序。 总的来说,如果你要运行一个多核启动的程序,你需要做两件事: 1是编写一个用DNUM区分的程序,通过判断DNUM值做分支,运行每个core的执行函数(里面可以加入printf打印信息,用来判断执行成功)。最重要的是,当DNUM==0(即core0)时,它需要做以下工作:将程序入口地址(_c_int00)写入到其他core的MAGIC_ADDR(C6678上是LL2的最后32bit,局部地址为0x0087fffc)上,然后向该core发送IPC唤醒; 2是编写一个CMD文件,注意必须将text段、cinit段、switch段和const段放入SL2中。其他段可放入LL2。 这个程序写好后,你可以在CCS下,将程序下载到core0中。如果你的程序执行成功,应该可以看到所有core都执行了各自的函数。然后你可以将这个程序烧写到NAND flash中。 |
|
|
|
panbyron 发表于 2018-6-21 14:47 你好 非常感谢你的回答,我现在才接触6678不久,项目很急时间很紧。 》》》将程序入口地址(_c_int00)写入到其他core的MAGIC_ADDR(C6678上是LL2的最后32bit,局部地址为0x0087fffc)上,然后向该core发送IPC唤醒; 》》》2是编写一个CMD文件,注意必须将text段、cinit段、switch段和const段放入SL2中。其他段可放入LL2。 这两个功能能否提供一个简单的sample。我对的DSP不熟悉,项目时间紧迫,拜托了! |
|
|
|
panbyron 发表于 2018-6-21 14:47 -c -heap 0x4000 -stack 0x4000 MEMORY [ SHRAM: o = 0x0C000000 l = 0x00400000 /* 4MB Multicore shared Memmory */ CORE0_L2_SRAM: o = 0x10800000 l = 0x00080000 /* 512kB CORE0 L2/SRAM */ CORE0_L1P_SRAM: o = 0x10E00000 l = 0x00008000 /* 32kB CORE0 L1P/SRAM */ CORE0_L1D_SRAM: o = 0x10F00000 l = 0x00008000 /* 32kB CORE0 L1D/SRAM */ ] SECTIONS [ .text > SHRAM .stack > SHRAM .bss > SHRAM .cio > SHRAM .const > SHRAM .data > SHRAM .switch > SHRAM .sysmem > SHRAM .far > SHRAM .args > SHRAM .ppinfo > SHRAM .ppdata > SHRAM /* COFF sections */ .pinit > SHRAM .cinit > SHRAM /* EABI sections */ .binit > CORE0_L2_SRAM .init_array > CORE0_L2_SRAM .neardata > CORE0_L2_SRAM .fardata > CORE0_L2_SRAM .rodata > CORE0_L2_SRAM .c6xabi.exidx > CORE0_L2_SRAM .c6xabi.extab > CORE0_L2_SRAM ] 我写的cmd文件,能帮我检查一下吗?看看有什么问题吗 |
|
|
|
1.除了上述建议的4个段外,不建议将其他段放入SL2中。SL2的资源是珍贵而有限的。所以应慎用。 2.你上述的CMD文件编译后,所有的core程序 的“EABI sections”都会被放入到core0的L2中。这是你想要的结果吗? 这是我写的比较通用的CMD文件,仅供参考: -stack 0x2000 -heap 0x8000 MEMORY [ LOCAL_L2_SRAM: origin = 0x00800000 length = 0x00080000 /* 512kB LOCAL L2/SRAM */ LOCAL_L1P_SRAM: origin = 0x00E00000 length = 0x00008000 /* 32kB LOCAL L1P/SRAM */ LOCAL_L1D_SRAM: origin = 0x00F00000 length = 0x00008000 /* 32kB LOCAL L1D/SRAM */ SHRAM: origin = 0x0C000000 length = 0x00400000 /* 4MB Multicore shared Memmory */ EMIF16_CS2: origin = 0x70000000 length = 0x04000000 /* 64MB EMIF16 CS2 Data Memory */ EMIF16_CS3: origin = 0x74000000 length = 0x04000000 /* 64MB EMIF16 CS3 Data Memory */ EMIF16_CS4: origin = 0x78000000 length = 0x04000000 /* 64MB EMIF16 CS4 Data Memory */ EMIF16_CS5: origin = 0x7C000000 length = 0x04000000 /* 64MB EMIF16 CS5 Data Memory */ DDR3: origin = 0x80000000 length = 0x20000000 /* 512MB DDR3 SDRAM */ ] SECTIONS [ .text > SHRAM .const > SHRAM .switch > SHRAM .cinit > SHRAM .stack > LOCAL_L2_SRAM .bss > LOCAL_L2_SRAM .data > LOCAL_L2_SRAM .neardata > LOCAL_L2_SRAM .fardata > LOCAL_L2_SRAM .rodata > LOCAL_L2_SRAM .far > LOCAL_L2_SRAM .cio > LOCAL_L2_SRAM .sysmem > LOCAL_L2_SRAM ] 另外,CCS安装完后,你可以在目录中搜索一些自带的CMD文件。一般都是比较标准和通用的。 |
|
|
|
panbyron 发表于 2018-6-21 15:33 我这样写,总是报错 -c -heap 0x2000 -stack 0x8000 MEMORY [ LOCAL_L2_SRAM: o = 0x00800000 l = 0x00080000 /* 512kB CORE0 L2/SRAM */ LOCAL_L1P_SRAM: o = 0x00E00000 l = 0x00008000 /* 32kB CORE0 L1P/SRAM */ LOCAL_L1D_SRAM: o = 0x00F00000 l = 0x00008000 /* 32kB CORE0 L1D/SRAM */ SHRAM: o = 0x0C000000 l = 0x00400000 /* 4MB Multicore shared Memmory */ EMIF16_CS2: o = 0x70000000 l = 0x04000000 /* 64MB EMIF16 CS2 Data Memory */ EMIF16_CS3: o = 0x74000000 l = 0x04000000 /* 64MB EMIF16 CS3 Data Memory */ EMIF16_CS4: o = 0x78000000 l = 0x04000000 /* 64MB EMIF16 CS4 Data Memory */ EMIF16_CS5: o = 0x7C000000 l = 0x04000000 /* 64MB EMIF16 CS5 Data Memory */ DDR3: o = 0x80000000 l = 0x10000000 /* 512MB DDR3 SDRAM */ ] SECTIONS [ .text > SHRAM .stack > LOCAL_L2_SRAM .bss > LOCAL_L2_SRAM .cio > LOCAL_L2_SRAM .const > SHRAM .data > LOCAL_L2_SRAM .switch > SHRAM .sysmem > LOCAL_L2_SRAM .far > LOCAL_L2_SRAM .args > LOCAL_L2_SRAM .ppinfo > LOCAL_L2_SRAM .ppdata > LOCAL_L2_SRAM /* COFF sections */ .pinit > LOCAL_L2_SRAM .cinit > SHRAM /* EABI sections */ .binit > LOCAL_L2_SRAM .init_array > LOCAL_L2_SRAM .neardata > LOCAL_L2_SRAM .fardata > LOCAL_L2_SRAM .rodata > LOCAL_L2_SRAM .c6xabi.exidx > LOCAL_L2_SRAM .c6xabi.extab > LOCAL_L2_SRAM ] 错误信息: "../MyC6678.cmd", line 25: error #10264: LOCAL_L2_SRAM memory range overlaps existing memory range L2SRAM "../MyC6678.cmd", line 28: error #10264: SHRAM memory range overlaps existing memory range MSMCSRAM "../MyC6678.cmd", line 31: error #10263: DDR3 memory range has already been "../MyC6678.cmd", line 31: error #10264: DDR3 memory range overlaps existing memory range DDR3 |
|
|
|
panbyron 发表于 2018-6-21 15:33 “CCS安装完后,你可以在目录中搜索一些自带的CMD文件。” 您好,请问如何在ccs里搜索自带的CMD文件啊? 新手,求详细步骤! |
|
|
|
多核心仿真时,要先启动ARM,再加载DSP程序
|
|
|
|
只有小组成员才能发言,加入小组>>
336 浏览 1 评论
529 浏览 2 评论
NA555DR VCC最低电压需要在5V供电,为什么用3.3V供电搭了个单稳态触发器也使用正常?
774 浏览 3 评论
MSP430F249TPMR出现高温存储后失效了的情况,怎么解决?
651 浏览 1 评论
对于多级放大电路板,在PCB布局中,电源摆放的位置应该注意什么?
1130 浏览 1 评论
AT32F407在USART2 DMA发送数据时,接包接到了要发送的数据,程序还是处于等待传输完成的标识判断中,为什么?
56浏览 29评论
134浏览 23评论
请问下tpa3220实际测试引脚功能和官方资料不符,哪位大佬可以帮忙解答下
252浏览 20评论
请教下关于TAS5825PEVM评估模块原理图中不太明白的地方,寻求答疑
201浏览 14评论
两个TMP117传感器一个可以正常读取温度值,一个读取的值一直是0,为什么?
57浏览 13评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-23 04:14 , Processed in 1.007001 second(s), Total 87, Slave 71 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号