TMS320C6678的EMIF16多核程序烧写的软件使用说明.doc_第1页
TMS320C6678的EMIF16多核程序烧写的软件使用说明.doc_第2页
TMS320C6678的EMIF16多核程序烧写的软件使用说明.doc_第3页
TMS320C6678的EMIF16多核程序烧写的软件使用说明.doc_第4页
TMS320C6678的EMIF16多核程序烧写的软件使用说明.doc_第5页
免费预览已结束,剩余9页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

I TMS320C6678 的的 EMIF16 多核程序烧写多核程序烧写 软件使用说明软件使用说明 II 目 录 1概述 6 1 1 范围 6 1 2 目的 6 1 3 设计依据 6 1 4 背景 6 1 5 开发环境和运行环境 6 2任务概述 6 3多核的待烧写工程说明 7 3 1 core0 待烧写工程说明 7 3 1 1 工程文件说明 7 3 1 2 程序流程图 8 3 1 3 操作步骤 8 3 2 core1 core7 待烧写工程说明 9 4EMIF16 加载转换工具说明 10 4 1 使用说明 10 4 2 生成文件格式说明 10 4 2 1 core0 的 dat 文件的格式 10 4 2 2 core1 core7 的 dat 文件的格式 11 5烧写工程说明 11 5 1 工程文件说明 11 5 2 程序流程图 12 6Boot Mode 设定 13 7加载成功检验 13 3 图表目录 图 1 TMS320C6678 的 EMIF16 多核加载总体框图 6 图 2 core0 待烧写程序的执行过程 8 图 3 core0 的 dat 文件格式 10 图 4 core1 core7 的 dat 文件格式 11 图 5 core0 代码烧写流程图 12 表 1 八个核的代码在 Flash 中的空间分配 9 表 2 烧写工程文件的函数说明 11 表 3 Boot Mode pins 定义 13 4 符号和缩略词说明 DSP 数字信号处理器 Digital Signal Processor SPI 串行设备接口 Serial Peripheral Interface EMIF16 外部存储器接口 External Memory Interface DDR3 外部存储器 PLL 锁相环 L2 SRAM 二级静态存储器 IPC 核间通信 Interprocessor Communications 5 TMS320C6678 的的 EMIF16 多核程序烧写软件使用说明多核程序烧写软件使用说明 1概述概述 1 1范围范围 本文档包括 TMS320C6678 的 EMIF16 多核程序烧写软件使用说明 1 2目的目的 指导 C6678 的 EMIF16 多核程序烧写过程 1 3设计依据设计依据 1 TMS320C6678 Multicore Fixed and Floating Point Digital Signal Processor data manual 德州仪 器 2 KeyStone Architecture Bootloader User Guide 德州仪器 1 4背景背景 a 本项目的任务提出者 雷达所 9 号楼课题组 b 开发者 边小艳 c 用户 课题组内部 1 5开发环境开发环境和运行环境和运行环境 开发工具 CCStudio v5 1 运行的硬件环境 TMS320C6678 芯片 EMIF16 外挂并行 Nor Flash Nor Flash 容量为 32MB 可选型号如 Numonyx 生产的 JS28F256P Spansion 生产的 S29NS256 等 2任务概述任务概述 TMS320C6678 的 EMIF16 多核程序烧写主要包括三个部分 多核的待烧写工程 烧写转换工具 以及烧写工程 三个部分之间的联系如下图所示 NOR Flash out bin 多核的待烧写工程 core0 的待烧写工程除了完成自身的处理任务外 还要实现加载其它待加 载的核 因此需要在 core0 的待烧写工程中增添加载这部分程序 其它核的待烧写工程不需要添加 若多核是同一个工程 则需要在 core0 的处理程序中添加加载程序 具体请看第 3 节 烧写转换工具 在路径 EMIFBootUtility hex ge6678 EMIFBoot 中的 EMIFboot out2bin bat 是各 核的代码转换工具 实现将各核的 out 文件转换成 bin 文件 八个核使用同一个转换工具 但是在 转换之前需要将 out 文件重命名 具体使用方法请参看第 4 节 图 1 TMS320C6678 的 EMIF16 多核加载总体框图 6 烧写工程 将待烧写的核的 bin 文件通过 EMIF16 接口烧写到外接 Nor Flash 中去 具体请看第 5 节 3多核的待烧写工程说明多核的待烧写工程说明 3 1core0 待待烧写工程说明烧写工程说明 在 core0 的待烧写工程中 除了完成自身的任务之外 还要作为主核去加载其他的核 因此 加载这部分作为一个单独的模块整理在一个文件夹 core0 Pjt Use 中 对于 core0 的待烧写工程 只 要把这个文件夹放到此工程中 并调用加载函数Core0 EMIF16 BOOT 即可 3 1 1工程文件说明工程文件说明 在 core0 Pjt Use 文件夹主要有如下文件 表 1 core0 Pjt Use 文件函数说明 文件名功能 用途包含的函数函数功能 EMIFboot c包含加载多核的函数Core0 EMIF16 BOOT 初始化 EMIF16 接口 加载其它需要加载的 核 在主函数中直接 被调用 Init DDR3 C6678 c 包含 DDR3 接口初始 化函数 Init DDR3 初始化 DDR3 接口 InitPLL C6678 c 包含 PLL 的初始化函 数 InitMainPLL 初始化 PLL Core0 Boot Secondarycore Core0 从 Flash 中读 出某个核的代码并按 段加载core0 boot c包含加载单核的函数 core0 boot othercores 将 Flash 中的数据写 到其他核的 L2 中 NOR init 初始化 Nor Flash NOR erase 擦除一定长度的 NOR Flashflash nor c 包含对 flash 的擦除 烧写的基本函数 NOR writeBytes 向 Nor Flash 中写入 一定长度的数据 EMIF init 配置 EMIF16 接口的 寄存器KeyStone EMIF16 Init c 包含 EMIF16 接口的 初始化函数 KeyStone EMIF16 init 初始化 EMIF16 接口 NOR FLASH erase blocks 擦除 flash 的某块区 域 NOR FLASH write block 烧写 flash 的某块区 域 EMIF NOR FLASH test c 包含对 flash 擦除 烧写的用户可调用函 数 NOR FLASH read block 读取 flash 的某块区 域 7 文件名功能 用途包含的函数函数功能 bootload asm 包含 core0 自身加载 的汇编函数 boot 从 flash 中读取 core0 的代码按段加载 并 跳到入口地址 C6678 cmd链接命令文件 存储器空间配置和段 的配置 主要是为 bootload 段的分配 3 1 2程序流程图程序流程图 上电后 core0 待烧写程序的执行过程如下 上电 在 main 入口地址处开始执行 初始化 外设 3 结束 core0 加载其他待加载的核 4 其他处理模块 5 core0 执行 Rom code 初始化 EMFI16 接 口 并跳到 Nor Flash 起始地址执行 1 core0 在 Nor Flash 中执行 bootload 将代 码按段从 Nor Flash 搬到内存 2 注 如上图所示 1 中的 Rom code 是 C6678 出厂时固化在 Rom 从 0 x20B00000 到 0 x20B1FFFF 中的一段代码 不是由用户编的 用户不能改变 下面的 2 3 4 5 过程是 由用户编的 3 1 3操作步骤操作步骤 当 core0 需要加载其他核时 需要做的步骤是 1 将 core0 Pjt Use 文件夹放到待烧写工程的文件夹中 2 在 CCSv5 1 环境下 将 core0 Pjt Use 文件夹中的 inc 的绝对路径添加到 properties C C 图 2 core0 待烧写程序的执行过程 8 Build Setting Include Option 的搜寻路径中 3 在待烧写主程序 main 中调用 EMIFboot c 中的加载函数 Core0 EMIF16 BOOT 4 在 EMIFboot c 中定义各核的代码烧写到 Nor Flash 中的地址 加载时的源地址 在 7 个核的工 程全不相同的情况下 需要将 7 个核的代码烧到 7 块不同的空间 这里为每个核预定义的 Flash 空 间分配如下 表 1 预定义的八个核的 Flash 空间分配 若某些核的代码相同 则需要烧写到 Flash 的同一块空间 为了统一 这里规定 相同代码都 烧到核号小的 Flash 空间 由表一分配的 例如 core1 core5 core7 的代码相同 则它们三个的烧 写地址是 0 x70200000 若某些核不需要加载 则定义加载地址无效 无效值为 0 x5a5a5a5a 5 core0 Pjt Use 文件夹中有加载时用到的 bootload asm 文件和 c6678 cmd 文件 可以将 C6678 cmd 替代原工程中的 cmd 文件 但若想用自己的 cmd 文件 则可以按照 c6678 cmd 文件进 行改正 需要注意的几点是 a 在待烧写工程的 cmd 文件中需要加上下面两句 作用是将汇编函数所在的段 bootload 段 放在内存的起始地址处 BOOT RWX org 0 x00800000 len 0 x00000400 bootload BOOT bootload 是在是在 bootload asm 文件中定义的段文件中定义的段 b 若工程的输出文件格式是 ELF 格式 在工程的 Properties CCS General Output format 下 则需要在 cmd 文件开始处加上 export boot 此句的作用是说明被 ELF 的 obj 文件输出的符号 若不加此句 则 bootload asm 中的汇编函数 不会输出 即在 map 文件中看到的 BOOT 空间没有被用到 若输出文件格式是 COFF 格式 则不 需要加此句 否则编译出错 c 若工程是用 SYS BIOS 进行存储空间的配置 则需要在 SYS BIOS 自动生成的 cmd 中加 上下面三句 可以参看 example pjt C6678 EMIFboot 8cores sysbios Debug configPkg linker cmd export boot 放到 MEMORY 伪指令上面 BOOT RWX org 0 x00800000 len 0 x00000400 放到 MEMORY 伪指令里 面 bootload BOOT 放到 SECTION 伪指令里 核名 Nor Flash 起始地址 Nor Flash 结束地址 预留空间大小 Core10 x702000000 x703FFFFF2MB Core20 x704000000 x705FFFFF2MB Core30 x706000000 x707FFFFF2MB Core40 x708000000 x709FFFFF2MB Core50 x70A000000 x70BFFFFF2MB Core60 x70C000000 x70DFFFFF2MB Core70 x70E000000 x70FFFFFF2MB 9 3 2core1 core7 待烧写工程说明待烧写工程说明 对于 core1 到 core7 的待烧写工程 若想正确加载 只需编写正确的 cmd 文件 不管 7 个核是 同一个工程还是不同工程 L2 SRAM 不要用 Global L2 需要用 Local L2 比如 0 x11800000 需改成 0 x00800000 4EMIF16 加载转换工具说明加载转换工具说明 4 1使用说明使用说明 在路径 EMIFBootUtility hex ge6678 EMIFBoot 中的 EMIFboot out2bin bat 是各核的代码转换工 具 它的作用是将各核的待烧写工程的 out 文件转换为 bin 文件 在转换之前 需要将 out 文件重命名 对于 core0 的 out 文件 命名为 core0 out 对于其它 7 个核的 out 文件 命名的规则是 若 core1 core7 的待烧写工程全不相同 即有 7 个不同的 out 文件 则将各核的 out 文件命名为 corex out x 1 7 即 core1 out core2 out core7 out 若有些核 的工程相同 即共同拥有一个 out 文件 则将 out 文件命名成其中核号小的名字 即若 core1 core2 core4 的 out 相同 则将 out 命名为 core1 out 重命名后 双击 EMIFboot out2bin bat 按照 DOS 窗口的提示 依次点任意键 最后生成的 bin 文件名字同 out 文件名是对应的 最后将 core0 和其它核的 bin 文件复制到烧写工程的文件夹中 注 此工具所使用的十六进制转换工具 C66x hex6x exe 同 C6455 的加载所用的 hex6x exe 不一 样 前者即可以转换 ELF 格式的 out 文件 又可以转换 COFF 格式的 out 文件 但是后者的 hex6x exe 只能转换 COFF 格式的 out 文件 鉴于最新的编译器都是默认 ELF 格式的输出文件 因 此一律使用最新的 C66x hex6x exe 4 2生成文件格式说明生成文件格式说明 由于 bin 文件不便于用户查看代码格式 因此为了方便用户更清楚的了解各核的代码经过转换 后的格式 在工具中同时生成了 dat 文件 可以参看 EMIFBootUtility hex ge6678 EMIFBoot 中生成 的 core0 dat 和 coreN dat 4 2 1core0 的的 dat 文件的格式文件的格式 dat 文件头信息 1KB 引导代码 bootload 段 入口地址 Section 1 size Section 1 addr Section 1 data Section 2 size Section 2 addr Section 2 data 行数行数 1 D 10 图 3 core0 的 dat 文件格式 如上图所示 A 代表 dat 的头信息 一般格式是 1651 1 80000000 0 8001 B 代表 1KB 引导代码 由待烧写工程中的 bootload asm 文件中的汇编函数转换而来 C 待烧写工程开始运行时的入口地址 D 待烧写工程的各个段的格式 主要有 text cinit const switch 等初始化段 initialized 没有未初始化段 uninitialized 具体跟工程有关 可以参看 EMIFBootUtility 中的 core0 map 文件或 待烧写工程的 map 文件 它们都是相互对应的 注 此文件限定 core0 的实际代码量在 128KB 以内 小于 128KB 时此工具自动在 dat 后补 0 若实际代码量超过 128KB 可以修改此工具中 EMIFboot COFF2hex core0 cmd 中的 len 项 把它改 到大于实际的代码量 4 2 2core1 core7 的的 dat 文件的格式文件的格式 dat 文件头信息 D 部分总的代码字数 行数 程序入口地址 Section 1 size Section 1 addr Section 1 data Section 2 size Section 2 addr Section 2 data Last Section size Last Section addr Last Section data A B E C 2 258 259 261 260 A B C D 11 Last Section size Last Section addr Last Section data 图 4 core1 core7 的 dat 文件格式 如上图所示 A 代表 dat 的头信息 一般格式是 1651 1 80000000 0 1fb4 B 代表 D 部分总的字数 行数 即代码所有段的总大小 不包括入口地址 这个信息主要用 于判断加载是否结束 C 待烧写工程开始运行时的入口地址 D 待烧写工程的各个段的格式 主要有 text cinit const switch 等初始化段 initialized 没有未初始化段 uninitialized 具体跟工程有关 可以参看 EMIFbootUtility hex ge6678 EMIFBoot 中的 coreN map 文件或待烧写工程的 map 文件 它们都是相互对应的 注 此文件对代码量没有限定 最后生成的 dat 文件的数据长度就是实际的代码量 5烧写工程说明烧写工程说明 5 1工程文件说明工程文件说明 文件夹 c6678 EMIF IntelNorFlash Burn 是将 8 个核的代码烧写到 Nor Flash 的工程 此工程只 需要 core0 执行即可 其中的各个文件说明如下 表 2 烧写工程文件的函数说明 文件名功能 用途包含的函数函数功能 EMIF main c包含主函数main 初始化外设 烧写 8 个核的代码 InitPLL C6678 c 包含 PLL 的初始化函 数 InitMainPLL 初始化 PLL NOR init 初始化 Nor Flash NOR erase 擦除一定长度的 NOR Flashflash nor c 包含对 flash 的擦除 烧写的基本函数 NOR writeBytes 向 Nor Flash 中写入 一定长度的数据 EMIF init 配置 EMIF16 接口的 寄存器KeyStone EMIF16 Init c 包含 EMIF16 接口的 初始化函数 KeyStone EMIF16 init 初始化 EMIF16 接口 NOR FLASH erase blocks 擦除 flash 的某块区 域 NOR FLASH write block 烧写 flash 的某块区 域 EMIF NOR FLASH test c 包含对 flash 擦除 烧写的用户可调用函 数 NOR FLASH read block 读取 flash 的某块区 12 文件名功能 用途包含的函数函数功能 域 5 2程序流程图程序流程图 此烧写工程是将各核的 bin 文件的数据烧写到 Nor Flash 中去 对于 core0 来说 其 bin 文件是 必须要烧写的 而且烧写地址固定为 0 x70000000 对于其它核 core1 core7 由于它们的待烧写代码 的情况很多 比如有些核的代码相同 有些核的代码不同 相同代码就烧到同一块空间 不同代码 烧到不同空间 因此预定义 core1 core7 的 Flash 烧写地址 即为每个核的代码都分配一块 Flash 存 储空间 见表 1 预定义的八个核的 Flash 空间分配 然后由用户决定实际的烧写地址 为了统一 这里 规定 相同代码都烧到预定义的核号小的 Flash 空间 由表 1 分配的 不包括 core0 例如 core1 core5 core7 的代码相同 则它们三个的烧写地址是 core1 的 flash 空间 0 x70200000 注意 不管 core1 core7 的待烧写工程跟 core0 的是不是同一个 core1 core7 的代码不能烧到 core0 的预定 义空间 为了避免相同代码烧写多次 这里加入判断 若用户定义的某个核的实际烧写地址不是 预定义的地址 则不烧写 比如 core1 和 core4 的代码相同 则用户定义 core1 和 core4 的 Flash 烧 写地址是 core1 的 Flash 空间 0 x70200000 则执行 core1 的代码烧写 由于 core4 的跟预定义的不相 同 则不执行 core4 的烧写 因此只烧写一次 以烧写 core1 的代码为例 流程图如下 13

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论