以文本方式查看主题 - 曙海教育集团论坛 (http://sun4.cn/bbs/index.asp) -- DSP6000系统开发 (http://sun4.cn/bbs/list.asp?boardid=29) ---- DSP/BIOS在TMS32OC6000编程中自举引导方法 (http://sun4.cn/bbs/dispbbs.asp?boardid=29&id=1632) |
-- 作者:wangxinxin -- 发布时间:2010-11-22 14:26:20 -- DSP/BIOS在TMS32OC6000编程中自举引导方法 1 DSP/BIOS的优点
(1)全局设置(system)— 包括内存配置、芯片支持库设置、endian模式设置等; (2)操作系统调度工具(scheduling)— 包括定时器、周期器、硬件中断管理、软件中断管理、任务调度、系统空载任务函数等; (3)同步机制(synchronization)一一提供一般操作系统都具有的信号灯、邮箱、队列、锁4个工具; (4)芯片支持库(chip support library)— 针对不同的DSP芯片帮助配置DSP的外设资源,最常用的有DMA,MCBSPEMIF,TIMER等的配置; (5)主机交互接口(input/output)— 提供DSP实时运行时与主机通过仿真口和CCS(集成开发系统)交互数据的机制; (6)调试工具(instrumentation)— 记录器(LOG)可以提供调试信息,但是特别针对实时操作优化;统计工具(STS)可以统计调试过程中的各种事件。
(1)使用多线程技术高效地管理DSP的运行,以提高运行效率; (2)使用标准接口的I/O和中断; (3)高效地定义和配置系统资源,如系统内存和中断向量表; (4)通过实时分析工具对用户应用程序的运行状况实时查看; (5)向用户的目标应用程序添加数据结构并围绕一组相关线程来加以组织: (6)几乎所有的初始化都可以通过图形化配置来完成,而不必详细了解各个寄存器的每一位所代表的意义;
2 DSP/BIOS的资源优化
3 程序的自举引导方法
对于 TMS320C6x1x,EDMA使用默认的ROM时序从CE1空间(C64x从EMIFB CE1空间)拷贝1KB数据到地址0处。
其中,用得最多的是ROM加载。为了生成可以从ROM中自举的代码,就要注意DSP/BIOS中的存储器设置。对于TMS320C6x0x,一般而言,64KB的代码就足够了,那样就只需选择好各个代码段的Load Address和Run Address就可以了。DSP/BIOS将自动生成cmd文件,而不需用户自己编写。如果64KB不够,则需自己编写boot程序。而对于TMS320C6x1x ,1KB的程序一般是不够用的,所以要自己编写boot程序。下面以TMS320C6711为例介绍DSP/BIOS中程序空间的配置以及boot程序的编写方法。 TMS320C6711内部含有64KB的RAM,既可以配置为L2Cache,也可以配置成SRAM。一般而言,在系统上电复位时配置为SRAM,将1KB的引导程序从ROM中拷贝到SRAM中,而在引导程序中将用户的程序从ROM中拷贝到SBSRAM中或SDRAM中去执行。在主程序的初始化部分将内部RAM配置为高速缓存,这样可以提高程序的运行速度。当然,也可以把内部RAM用作SRAM,把全部的用户程序都引导到其中来执行, 首先在 DSP/BIOS的存储器段管理器(Memory Section Manager)中指定如下几段:
在 BOOT 程序中,首先要初始化EMIF的相关寄存器,特别是有外接存储器时(如SDRAM或SBSRAM),一定要先初始化相关寄存器,主要是EMIF全局控制寄存器和CE空间控制寄存器。然后将加载地址位于ROM中而运行地址位于RAM中的段从ROM中复制到RAM中。具体的加载地址和运行地址可以在map文件中查到。最后,将程序指针跳转到主程序入口(c_int00)开始执行。BOOT程序如下: .sect " .myBootCode "
;*************** ;Configure EMIF
...... ...... ;***************
...... ...... ;*************** ;StartProgram
编写完 boot程序后,在cmd文件中加上一句:.my_boot_code: {} load=FLASH_BOOT,run=IRAM |