基于TMS320C6678 的多核DSP 上电加载技术
3 二级Loader 程序和FLASH烧写程序
二级Loader 是一段小代码程序,其功能就是将FLASH 的根表数据如图1 中从0×70000400 开始按表2的格式保存的数据搬移到DSP的RAM中。该Loader比较简单,一般是一小段汇编代码,代码如下:
![基于TMS320C6678 的多核DSP 上电加载技术](http://editerupload.eepw.com.cn/fetch/20140213/226799_2_0.jpg)
需要注意的是,由于DDR 没有初始化,所以二级Loader不能加载DDR数据,DDR只作数据存储器用,确实要加载到DDR中,只能将DDR数据存在FLASH一指定段中,待Core0运行开始初始化DDR 后,将该数据读到RAM中。
对于FLASH 的烧写程序,主要任务就是把多核的合成文件烧写到外部Emif16 NOR-FLASH 存储器中。
由于TI大部分的Emif并口加载都是开放式的,开发者完全可以根据自己的思路和格式来产生和烧写映像文件,故烧写器TI公司是不提供的。其实,一旦合成根表文件产生后,烧写器也显得容易了。烧写器一般使用输出legacy COFF格式的CCS工程即可。从图1的加载过程看,要烧写的映像文件内容包括二级加载器Loader的代码和表2 的根表文件两部分。二级Loader可以放到烧写器的开头main()函数之前,也可以放到Core0的应用程序同样位置,本研究采用前者,将二级Loader代码映射到烧写工程中指定的存储器。boot_load段。烧写器的编程流程如图2所示。
![基于TMS320C6678 的多核DSP 上电加载技术](http://editerupload.eepw.com.cn/fetch/20140213/226799_2_1.jpg)
4 辅助核的触发
多核的加载,如果图1 中仅仅只是进入Core0 的_C_int00地址运行而其他核还未激活,加载仍然是失败的。辅助核的触发,必须两个条件,一是将各核工程的入口地址_C_int00 写到各核的Boot Magic Address 处;二是向各核的核间中断触发寄存器IPCx(1
一旦辅助核被触发,在辅助核应用程序中,须向各自核的Boot Magic Address 写入数据0xbabeface 替换各自的_C_int00.
5 结语
多核DSP加载是一项比较复杂但又很重要的过程,也是多核技术的应用难点之一,一个多核DSP开发人员,如果要成功走向应用,上电加载这一关是必须要过的。各核的应用工程可以是输出elf格式sysbios工程,也可以不是sysbios 工程。上面的多核Emif16NOR-FLASH 加载方法,在自研的C6678 图像信号处理系统中已成功加载。
评论