ImageVerifierCode 换一换
格式:PPTX , 页数:41 ,大小:3.35MB ,
资源ID:166717      下载积分:12 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bingdoc.com/d-166717.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(TMS320C6678多核烧写研究v10-PPT精选文档PPT格式课件下载.pptx)为本站会员(聆听****声音)主动上传,冰点文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰点文库(发送邮件至service@bingdoc.com或直接QQ联系客服),我们立即给予删除!

TMS320C6678多核烧写研究v10-PPT精选文档PPT格式课件下载.pptx

1、有时为提高程序的执行效率,程序员可以直接编写汇编程序文件(例如Demo程序中的 sum.asm)。,1.可执行文件生成过程,汇编阶段:汇编器将输入的汇编文本(.asm)逐条翻译成二进制机器语言指令,并把这些指令打包成可重定位的目标程序(relocatable object program),保存到各自的目标文件(.obj)中。该目标文件是二进制文件,它的字节编码是机器语言指令而不是字符,如果用文本编辑器打开.obj文件,将看到一堆乱码.,1.可执行文件生成过程,链接阶段:通常,整个程序由多个.c文件组成,经过前面的处理生成各自对应的可重定位目标文件(.obj),程序调用了若干库函数(例如pri

2、ntf()也保存在经过单独编译汇编过的目标文件库(.lib)里。链接器在.cmd文件的指导下将这些文件合成一个可在系统上运行的可执行文件。,1.可执行文件生成过程,链接阶段:编译器和汇编器生成从地址0开始的代码和数据节。链接器通过把每一个符号定义(在可重定位文件中,对程序外部文件的变量或函数的引用通过一个符号定义来表示)与存储位置联系起来(.cmd),然后修改这些符号的引用,使得他们指向这个存储器的位置(引用符号由引用变量或函数的具体存储器地址代替),从而实现重定义这些细节。最后链接器将经过重定位的各代码和数据节组成一个完整的可执行目标文件,加载到处理器中即可运行。(链接器的实现细节参看文献1

3、的第7章 链接),2.多核烧写文件生成原理,2.多核烧写文件生成原理,对于多核编程,各核源文件分别经CCS编译、汇编、链接为各自对应的.out文件,但该文件 不能被直接烧写到外部Flash中,必须经过工具链处理为满足Bootloader的格式即如右图所示的镜像文件(.dat)。该文件经CCSv5自带的 Flash烧写工程(my_SPI_modify)烧写到外部 Flash,之后上电系统完成自举,程序正常运行。,2.多核烧写文件生成原理,镜像文件就是用户要烧写到外部Flash上的全部数据文件,它是由Boot参数表(在文件前 部)和应用程序的根表数据(文件后部)的合成数据文件。单核和多核的Boot

4、参数表格式 都一样,区别就是后部的根表数据。,2.多核烧写文件生成原理,Boot 参数表占用8个字(32Bytes),位于镜像文件的开头。不同的字段具有不同的意义,用于指导启动过程。下表列出了SPI启动模式下参数表的配置寄存器。由于 SPI boot 是寄存器的直接读写,因此配 置过程中不会涉及到EDMA 寄存器的配置(因此前12个字段被忽略)。这些参数部分可以通过读取管脚配置来填充(参看参考文献7,p.27-33),也可以被用户自定义修改。,注意:无论是管脚配置还是参数表的书写都是为了生成boot 参数表。在我们的系统中是通过DSP外部13个配置 管脚配置Boot参数的,所以.dat文件 中

5、的Boot参数表被忽略。,2.多核烧写文件生成原理,单核根表:根表是应用程序的所有代码和数据以在片上占用地址来分段存储的数据包,包的第一个4B是core0程序中main()函数的入口地址_C_int00,后面由若干数据段组成,每个段前4 B为该段数据的字节长度,接着4 B为该段在片上的存储地址,后面是具体代码和数据。所有数据段结束后是4个字节的0作为根表的结束标记。多核根表:把各辅核的代码数据段及入口地址值按照上述单核根表的格式续写在core0根表后,其中入口地址值的地址为各核的 BOOT_MAGIC_ADDRESS地址。最后同样以 4个字节的0作为根表的结束标志。,2.多核烧写文件生成原理,

6、BOOT ROM中的代码完成bootloader初始化(PLL、CPU时钟、启动方式等)后会继续初始化core的L2 RAM缓存的最后0 xd23f个字长的代码,此段代码用于保存 Boot配置信息并指导后续boot过程。,2.多核烧写文件生成原理,BOOT_MAGIC_ADDRESS地址是每个core各自一块固定的内存。由上表所示,BOOT_MAGIC_ADDRESS地址是 ROM搬移到RAM信息的最后一个字。该字存放着各个core 初始化之后需要跳转到的c程序入口地址 _c_int00()。根据c66x内存的规划设计,不同core的BOOT_MAGIC_ADDRESS位于在该core 本地L

7、2 RAM的最后一个word里。由于多核DSP采用全局地址来区别不同核的RAM地址,因此每个核的Boot Magic地址是0 x1x87fffc(x为核号)。,2.多核烧写文件生成原理,工具链:将CCS生成的.out文件转化为Bootloader 可以“理解”的格式是c66x 启动至关重要的一步。与以前的DSP 启动相比,c66x 系列的工具链更加复杂和多样化。文件转换格式也呈现多态化。以.dat 文件格式为例,生成所需的镜像文件需要以下工具链做支持:hex6x 文件需要和.rmd 文件配合使用,后者描述了boot 参数表模式,ROM 宽度,大小端模式等信息。由此得到8 个核的.btbl 文件

8、,该文件包含了大部分的内容信息,再经过两个小工具的转化可以得到有效数据信息。此时的.ccs 文件只包含各个段的内容,不包含 Boot 参数的内容,因此需要将一定格式的参数配置信息进行解析,作为boot 参数表头加在.ccs 文件上成为一个含有参数配置头的.ccs 文件。最后由于ROM bootloader 只识别大端(Big End)模式数据,所有需要进行 一次大小端的转化。至此一个完整的可以被ROM Bootloader 识别的多核镜像文件就成功生成。,3.多核Boot原理,3.多核Boot原理,C66x芯片对典型C6000系列芯片做了改进,不需要由用户在外部Flash起始的1K空间编写二级

9、Bootloader。C66x DSP内部有一个固化的ROM存放着boot代码(ROM Bootloader)。每当DSP启动时,会自动从这里读取代码并执行。此代码是固化的不可更改的,其作用就是根据管脚配置方式对核进行初始化(比如PLL等)和完成不同模式的Boot处理(搬运程序和代码到指定的内部RAM中)。,3.多核Boot原理,CPU 执行Boot ROM 中的代码将外部flash中的程序和数据搬移到内部RAM中。之后 core0启动初始化外设,此时其他core都会执行相关的代码映射IPC中断,并配置相应的寄存器,然后进入IDLE状态,等待core0的发 起IPC(Inter-Process

10、-Communication)中断。当core0完成初始化后向其他core发送IPC中断。其他core在接收到中断后启动执行代码,即其他核是在core0的命令下执行第一句代码。,3.多核Boot原理,core0 在 SPI 启动中起到至关重要的作用。作为主核,核0 负责着搬移镜像,写 BOOT_MAGIC_ADDRESS地址值,以及发IPC 中断触发其他核启动等多项工作。其中搬移多核镜像的工作由DSP ROM Bootloader 完成,而剩下两项工作需要用户自定义操作。,本文附带的工具链不具有将各核入口地址写入对应BOOT_MAGIC_ADDRESS中的功能,因此前述镜像文件格式中标为红色的

11、部分没有被添加进去,这么做的主要 原因是程序的入口地址无法确知。解决这一问题有两种方法:1,在生成.out文件 之后参看.map文件获得各辅核程序的入口地址,并在主核的main()函数中分别将 该地址写入到各辅核对应的BOOT_MAGIC_ADDRESS中(如上图所示);2,获得辅核入口地址后,修改工具链将其以数据段的形式写入到镜像文件中(如前述镜像文件)。,3.多核Boot原理,如果多核DSP 是由同一套工程分别编译,那么每个核内存分配完全相同。core0在读取自己核的BOOT_MAGIC_ADDRESS地址(0 x1087fffc)下的值后,就可以得到其他核的BOOT_MAGIC_ADDR

12、ESS地址。但是如果各核独立编译各自工程,各变量内存映射关系不再相同,那么就无法从 core0 的 BOOT_MAGIC_ADDRESS地址值去推算其他核相应地址。这个时候只能事先记录下各核的BOOT_MAGIC_ADDRESS地址值,然后写到核0 的用户初始化代码上。,3.多核Boot原理,在完成所有上述操作后,core0 需要对每个核的IPCGRx 寄存器写中断以唤醒其他核的正常运行状态。IPCGRx 寄存器的31-4 比特位是IPC 中断源索引,可支持多达28 个中断源,可以设置为全0;比特3-1 是保留位,可以任意赋值。因此只要对最低比特赋 1 就可以完成对其他核IPC 中断的触发。(

13、参看文献7.p.80-82),3.多核Boot原理,到此为止基于SPI 多核启动的过程全部结束,多核 DSP 正常运转起来。注意每个核的IPC 中断生成寄存器有固定的内存映射地址。,4.多核烧写文件生成过程,4.多核烧写文件生成过程,在core0的main函数中要增加写各辅核入口地址到相应的BOOT_MAGIC_ADDRESS及触发IPC中断的逻辑,如图所示,否则多核不可能正常boot。,void MulticoreBoot()int*pBootMagicAddCore0;int*IpcGr0;int i;int coreId=0;coreId=platform_get_coreid();if

14、(coreId=0)pBootMagicAddCore0=(int*)0 x1087FFFC;/*core0 的magic address*/*pBootMagicAddCore0=0 x10843994;/*core0 的_c_int00 函数入口地址*/*此处写入各辅核的入口地址*,在此core1 的_c_int00函数入口地址/*(pBootMagicAddCore0+0 x01000000/4)=0 x1180c300;,/*core0发送IPC中断*/IpcGr0=(int*)0 x02620240;,for(i=1;i CORE_NUM_6678;i+)/core0 sent ip

15、c interrupt to*(IpcGr0+i)=(*(IpcGr0+i)|0 x00000001;,可在转换工具链spi_boot_suit_v2.3.1_r elease2_ledtestprj1.6 678src找到原版代码。,4.多核烧写文件生成过程,四核烧写文件的生成工具链选择:spi_boot_suit_v2.3.1_release1_utilities 1.6678 multicore_boot_4cores。把要处理的四个.out文件粘贴到该文件夹下,依次修改文件名为simple0simple3(必须为core序号一 一对应关系)。点击该文件夹下的批处理文件:spiboot_

16、multi_4cores.bat,生成镜像文件spirom_le.dat,即烧写文件。,4.多核烧写文件生成过程,两核烧写文件的生成修改批处理文件spiboot_multi_4cores.bat中内容如下。删掉多余的hex6x simple2.rmd 和hex6x simple3.rmd 以及第五行中 simple2.btbl 和 simple3.btbl,将修改后文件保存为文件名为 spiboot_multi_2cores.bat的批处理文件。点击该批处理文件就可以生成两核程序的.dat代码。,4.多核烧写文件生成过程,_c_int00入口地址的获得在编译链接之后的工程下有一个文件夹:Deb

17、ug。在此文件夹下有一个以工程名命名的.map文件,在此文件的开头可以看到_c_int00的入口地址。各core启动之前PC指令应该指向_c_int00的位置,即在执行main 函数之前应该先执行_c_int00开始的一段初始化过程,比如全局变 量赋初值、局部变量入栈等操作,之后才开始main函数。,5.多核烧写操作过程,5.多核烧写操作过程,烧写:将之前生成的烧写文件通过SPI的烧写工程my_spi_modify写到Nor Flash里1.运行SPI工程完成初始化部分,断点到ddr3测试结束,这样可以可以确认ddr3工作正常,程序工作正常。一般断点设到 Init_val=nor_init()

18、注意:在断点之前,设置系统工作环境并向DDR3起始地址空间写入09,若程序暂停到断点时DDR3起始地址空间为递增数,则说明DDR3时钟等配置正常。这一验证非常必要,因为镜像文件需要先镜像存储在 DDR3中,之后由SPI写入到外部Flash。,5.多核烧写操作过程,烧写:将之前生成的烧写文件通过SPI的烧写工程my_spi_modify写到Nor Flash里2.此时,从memory browser里将.dat文件load到程ddr3里,在 memory browser的范围右击,选择load memory。将之前生成的烧写文件通过SPI的烧写工程my_spi_modify写到Nor Flash

19、里 3.选择之前产生的.dat文件,勾选 use head imformation的选项,点击next。.dat文件路径不能有中文,否则不能导入到内存中!将之前生成的烧写文件通过SPI的烧写工程my_spi_modify写到Nor Flash里4.确定地址和长度填写正确(地址为0 x80000000 ddr3首地址,长度为.dat文件长度),点击finish。将之前生成的烧写文件通过SPI的工程my_spi_modify写到Nor Flash里5.让程序继续执行,清除掉flash里内容之后,将ddr3 0 x80000000开始的内容写入flash,最多可写入16MB(最大容量),目前程序也是

20、这么写的。写完再将SPI数据读出来,进行对比,检查是否错误。目前写入是按照16MB写入的,时间比较久,可以根据程序大小,将SPILENGTH 的宏定义改小,当然对比数据大小的时候,要做相应更改,不然会因为比较的数据多余实际读写的数据,而产生对比误报。将之前生成的烧写文件通过SPI的烧写工程my_spi_modify写到Nor Flash里 5.让程序继续执行,清除掉flash里内容之后,将DDR3 0 x80000000开始的内容写入flash,最多可写入16MB(最大容量),目前程序也是这么写的。将之前生成的烧写文件通过SPI的烧写工程my_spi_modify写到Nor Flash里6.断

21、电重新上电,等数秒,即可看到程序正常启动,此时如果仿真器处于连接状态,进行connect,CCSv5将暂停cpu,并可以看到暂停时刻的PC指针位置。,5.多核烧写操作过程,注意:如果PC指针在0 x20800000的范围内,即在Boot rom的范围内,则没有正常启动;Boot正常时,如果load symbol 对应的程序,则可以将CCS里的程序和DSP里运行的程序对应起来,进行在线调试。,6.参考文献,6.参考文献,Randal E.Bryant,David R.OHallaron著,龚奕利,雷迎春译.深入理解计算机系统(第二版).机械工业出版社.2010.(讲解计算机原理非常清晰明了,推荐

22、大家看一看)谢秀娟.C6000指令系统.DSP技术与应用_线性汇编语言简介.Texa Instruments.Keystone Architecture Bootloader User Guide(SPRUGY5B).2012.钱丰,林家儒.TI C66x系列DSP多核Boot的研究.中国科技论文在线.2012刘文章,等.基于TMS320C6678的多核DSP上电加载技术J.现代电子技术.2013Texas Instruments.TMS320C6678 Multicore Fixed and Floating-Point Digital Signal Processor.Texas Instruments,Dallas,Texas,2012.,

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2