hello.c文件首先包含了std.h和log.h两个头文件。程序如果想使用DSP/BIOS API那它必须包含std.h文件以及程序中用到的模块的对应头文件。log.h头文件中定义了LOG_Obj结构以及LOG模块用的API函数的声明。std.h文件必须在其它的DSP/BIOS模块头文件之前声明。其它模块的头文件声明顺序不重要。
代码接下来要包含hellocfg.h头文件,这个文件在创建并保存DSP/BIOS配置的时候创建的。下一个步骤我们就来创建这个文件。这个文件包含了配置文件夹里面的DSP/BIOS objects的外部声明。 hellocfg.h文件也包含了配置文件里定义的DSP/BIOS模块的头文件。既然std.h和log.h文件都会被hellocfg.h文件引用,那么hello.c文件的头两行时间上是冗余的。但是这样也不会有任何问题。 调用LOG_printf的代码实际上是传递LOG object对象(&trace)和 hello world消息的地址。
最后main()函数返回,这个函数导致程序进入DSP/BIOS的Idle循环。在这个循环中,DSP/BIOS等待线程,例如软件中断和硬件中断发生。在该例中,没有其它线程发生,所以会一直处于IDLE状态。 第四步:创建DSP/BIOS的配置文件 选择File->New->DSP/BIOS Config。
选择一个目标模板,根据芯片选择,我们选c64xx.cdb,然后按OK。观察configuration窗口,左边窗口是模块的列表,可以通过点击模块的“+”号打开下级目录,也可以按右键新建一个对象或查看一个建立好的对象的属性。
点击Instrumentation目录左侧的+号,显示模块的列表。 邮局选择LOG—Event Log Mannger然后右击选择Insert LOG。这个步骤是创建一个LOG对象,名称为LOG0。
右键选中LOG0对象,然后右击选择Rename。把LOG对象改名为trace.
如果你在使用软件仿真器,需要设置RTDX模式为Simulator。
选择RTDX—Real-Time Data Exchange Settings,右键,选择属性,打开对话框:
将RTDX Mode设定为Simulator即可。如果有目标板,可以选择JTAG。 选择
File->Save。保存到当前目录(通常是
C:\\ti\\myprojects\\hellobios)命名为hello.cdb,保存这个配置后,会生成以下6个文件:
Hello.cdb 保存配置的内容 Hellocfg.cmd 链接command文件
Hellocfg.h 包括DSP/BIOS模块头文件和配置文件中用到的外部对象、变量的声明
Hellocfg.s62 DSP/BIOS设置的汇编语言源文件 Hellocfg.h62 Hellocfg.s62引用到的汇编语言源文件 Hellocfg_c.c Chip Support Library(CSL)代码结构和设置 第五步:添加DSP/BIOS文件到工程项目
选择Project->Add Files to Project,在Files of type栏目里选择Configuration File(*.cdb),选中hello.cdb文件后,点Open。注意添加后,hello.cdb出现在Porject View窗格下目录DSP/BIOS Config里。此外,CCS自动添加Hellocfg.s62和Hellocfg_c.c文件到生成的目录下。
输出文件名必须和.cdb文件一致。可以通过Project->Build Options打开Linker标签查看,确认Output Filename内容是.\\Debug\\hello.out,按OK确定。
再次选择Project->Add Files to Project,选对Linker Command File(*.cmd)在Files of type下拉菜单,选择hellocfg.cmd文件,然后按Open。
如果看到警告,按Yes。Hello.cmd文件被hellocfg.cmd文件替代,hellocfg.cmd文件是保存DSP/BIOS时生成的。 若没有警告,直接将hello.cmd文件从项目中删除。
你可以自己创建独立的cmd文件,但文件中必须引用DSP/BIOS的生成的配置cmd文件。如: -1 hellocfg.cmd Your Code ......
从项目中删除vectors.asm源文件。因为硬件中断可以通过DSP/BIOS设置,不需要单独的处理。
从项目中删除rts6400.lib文件。这个库已经被hellocfg.cmd自动引用了。
选择Project->Save保存对项目的更改。建议在编译和运行项目前,先保存修改。
选择Project->Rebuild All。 经过以上修改,项目变化为:
第六步:在CCS的Simulator环境下测试工程 选择File->Load Program,选中hello.out,确定。 选择DSP/BIOS->Message Log,出现窗口:
在Log窗口按右键,选择属性,把输出文件指定到hello.txt,用来保存结果,便于以后查看。
选择Debug->Go Main,然后F10,单步运行。观察Log窗口的输出。
在Log窗口,按右键选择close,关闭窗口。 重新Load程序,按F4。
运行程序,等待一会儿,再按结束,中止程序运行。
File->Open,然后在Debug目录中选择hello.txt,打开查看,内容和窗口的输出是一样的,都是hello world!
第七步:评估DSP/BIOS输出函数LOG_printf()的执行时间(周期数) 在这个步骤中,我们利用CCS的Profiling工具来评估LOG_printf()函数需要的指令周期数目,并且和printf()和put()函数对比。 选择File->Reload Program。