tms320c6678多核烧写研究v1,0.ppt
《tms320c6678多核烧写研究v1,0.ppt》由会员分享,可在线阅读,更多相关《tms320c6678多核烧写研究v1,0.ppt(41页珍藏版)》请在三一办公上搜索。
1、TMS320C6678多核烧写研究,樊文贵电子信息工程学院203教研室北京航空航天大学 2014年5月16日,主要内容,1.可执行文件生成过程,1.可执行文件生成过程,一个Demo程序的生命周期一般是从C语言程序开始的,因为这种形式编写最为方便。为了在系统上运行Demo程序,其每一条语句都需要被转化为低级的机器指令(machine language),并按照一定格式打包以二进制磁盘文件存放,该形式的程序称为可执行目标文件(executable file),被加载到内存后,由系统运行。在文本编辑器中编辑的源程序成为可执行目标文件需要经过四步处理:预处理(preprocesser)、编译(comp
2、iler)、汇编(assembler)以及链接(linker)。,1.可执行文件生成过程,预处理阶段:预处理器根据字符#开头的命令修改C源程序,例如main.c中第一行#include,告诉预处理器读取系统文件stdio.h中的内容并将其直接插入到程序文本中;而宏定义告诉预处理器将程序文本中对应的字符进行替换。附带演示程序Demo,基于CCSv5开发平台编辑生成。,1.可执行文件生成过程,编译阶段:编译器将预处理器输出的文件翻译成汇编语言程序(.asm)。汇编语言程序中的每一条语句都以一种标准的文本格式确切的描述了一条低级机器语言指令(参看参考文献2)。汇编语言为不同高级语言的不同编译器提供了
3、统一的输出语言。有时为提高程序的执行效率,程序员可以直接编写汇编程序文件(例如Demo程序中的sum.asm)。,1.可执行文件生成过程,汇编阶段:汇编器将输入的汇编文本(.asm)逐条翻译成二进制机器语言指令,并把这些指令打包成可重定位的目标程序(relocatable object program),保存到各自的目标文件(.obj)中。该目标文件是二进制文件,它的字节编码是机器语言指令而不是字符,如果用文本编辑器打开.obj文件,将看到一堆乱码.,1.可执行文件生成过程,链接阶段:通常,整个程序由多个.c文件组成,经过前面的处理生成各自对应的可重定位目标文件(.obj),程序调用了若干库函
4、数(例如printf()也保存在经过单独编译汇编过的目标文件库(.lib)里。链接器在.cmd文件的指导下将这些文件合成一个可在系统上运行的可执行文件。,1.可执行文件生成过程,链接阶段:编译器和汇编器生成从地址0开始的代码和数据节。链接器通过把每一个符号定义(在可重定位文件中,对程序外部文件的变量或函数的引用通过一个符号定义来表示)与存储位置联系起来(.cmd),然后修改这些符号的引用,使得他们指向这个存储器的位置(引用符号由引用变量或函数的具体存储器地址代替),从而实现重定义这些细节。最后链接器将经过重定位的各代码和数据节组成一个完整的可执行目标文件,加载到处理器中即可运行。(链接器的实现
5、细节参看文献1的第7章 链接),2.多核烧写文件生成原理,2.多核烧写文件生成原理,对于多核编程,各核源文件分别经CCS编译、汇编、链接为各自对应的.out文件,但该文件不能被直接烧写到外部Flash中,必须经过工具链处理为满足Bootloader的格式即如右图所示的镜像文件(.dat)。该文件经CCSv5自带的Flash烧写工程(my_SPI_modify)烧写到外部Flash,之后上电系统完成自举,程序正常运行。,2.多核烧写文件生成原理,镜像文件就是用户要烧写到外部Flash上的全部数据文件,它是由Boot参数表(在文件前部)和应用程序的根表数据(文件后部)的合成数据文件。单核和多核的B
6、oot参数表格式都一样,区别就是后部的根表数据。,2.多核烧写文件生成原理,Boot 参数表占用8个字(32Bytes),位于镜像文件的开头。不同的字段具有不同的意义,用于指导启动过程。下表列出了SPI启动模式下参数表的配置寄存器。由于 SPI boot 是寄存器的直接读写,因此配 置过程中不会涉及到EDMA 寄存器的配置(因此前12个字段被忽略)。这些参数部分可以通过读取管脚配置来填充(参看参考文献7,p.27-33),也可以被用户自定义修改。,注意:无论是管脚配置还是参数表的书写都是为了生成boot 参数表。在我们的系统中是通过DSP外部13个配置管脚配置Boot参数的,所以.dat文件中
7、的Boot参数表被忽略。,2.多核烧写文件生成原理,单核根表:根表是应用程序的所有代码和数据以在片上占用地址来分段存储的数据包,包的第一个4B是core0程序中main()函数的入口地址_C_int00,后面由若干数据段组成,每个段前4 B为该段数据的字节长度,接着4 B为该段在片上的存储地址,后面是具体代码和数据。所有数据段结束后是4个字节的0作为根表的结束标记。多核根表:把各辅核的代码数据段及入口地址值按照上述单核根表的格式续写在core0根表后,其中入口地址值的地址为各核的BOOT_MAGIC_ADDRESS地址。最后同样以4个字节的0作为根表的结束标志。,2.多核烧写文件生成原理,BO
8、OT 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 本地L2 R
9、AM的最后一个word里。由于多核DSP采用全局地址来区别不同核的RAM地址,因此每个核的Boot Magic地址是0 x1x87fffc(x为核号)。,2.多核烧写文件生成原理,工具链:将CCS生成的.out文件转化为Bootloader 可以“理解”的格式是c66x 启动至关重要的一步。与以前的DSP 启动相比,c66x 系列的工具链更加复杂和多样化。文件转换格式也呈现多态化。以.dat 文件格式为例,生成所需的镜像文件需要以下工具链做支持:,2.多核烧写文件生成原理,工具链:hex6x 文件需要和.rmd 文件配合使用,后者描述了boot 参数表模式,ROM 宽度,大小端模式等信息。由此
10、得到8 个核的.btbl 文件,该文件包含了大部分的内容信息,再经过两个小工具的转化可以得到有效数据信息。此时的.ccs 文件只包含各个段的内容,不包含 Boot 参数的内容,因此需要将一定格式的参数配置信息进行解析,作为boot 参数表头加在.ccs 文件上成为一个含有参数配置头的.ccs 文件。最后由于ROM bootloader 只识别大端(Big End)模式数据,所有需要进行一次大小端的转化。至此一个完整的可以被ROM Bootloader 识别的多核镜像文件就成功生成。,3.多核Boot原理,3.多核Boot原理,C66x芯片对典型C6000系列芯片做了改进,不需要由用户在外部Fl
11、ash起始的1K空间编写二级Bootloader。C66x DSP内部有一个固化的ROM存放着boot代码(ROM Bootloader)。每当DSP启动时,会自动从这里读取代码并执行。此代码是固化的不可更改的,其作用就是根据管脚配置方式对核进行初始化(比如PLL等)和完成不同模式的Boot处理(搬运程序和代码到指定的内部RAM中)。,3.多核Boot原理,CPU 执行Boot ROM 中的代码将外部flash中的程序和数据搬移到内部RAM中。之后core0启动初始化外设,此时其他core都会执行相关的代码映射IPC中断,并配置相应的寄存器,然后进入IDLE状态,等待core0的发起IPC(I
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- tms320c6678 多核 研究 v1

链接地址:https://www.31ppt.com/p-2934942.html