CCS开发DSP综合资料一 - 图文(6)

2019-05-18 22:10

图 54

Stack Size(最大堆栈大小)和Priority(优先级)需要根据任务的具体情况进行设置。在页面,填写任务实体函数名(C函数前面加一个下划线),如图 55:

图 55

1.3.8 Synchronization设置

DSP/BIOS中任务间的通信和同步可由SEM、MBX、QUE、LCK四个模块完成: ? SEM(信号量):用于任务同步和互斥,有计数功能,根据需要使用; ? MBX(邮箱):也用于任务同步,可以传递少量数据,根据需要使用; ? QUE(队列):可实现任务同步和资源的共享,根据需要使用; ? LCK(资源锁):实现对共享资源的互斥,根据需要使用。

四种同步模块对象都可以通过各自的右键菜单中“Insert …”来创建,并可对其属性作相应的设置。如图 56所示:

图 56

1.3.9 Input/Output设置

这里可以设置一些输入/输出相关的高级设置,具体可通过CCS的帮助项来了解。一般不需要进行设置。只有RTDX(实时数据交换),需要根据目标环境的情况对数据交换模式进行一下选择,用来在调试中主机和目标机进行数据交换。可以是仿真器环境的JTAG模式,或者是模拟器环境的Simulator模式。如图 57所示:

DSP/BIOS与main()函数关系

随着多线程技术的发展,原来委以重任的main()函数也逐渐的退化和冷落,现在变成了名不副实的“主函数”。在DSP/BIOS中也同样存在这样的问题,然而main()函数的作用依然不可忽略,其与DSP/BIOS的API函数的调用上存在一定的先后关系。

在DSP/BIOS应用程序中,main()函数用于实现用户的初始化操作,片内/片外外设的配置,以及势能单独的硬件中断等,然而,main()函数并不属于DSP/BIOS的任何线程类型,它仅仅是一个匆匆过客,在作完用户期望的初始化之后,也就寿终正寝了,甚至连一片云彩都不曾带走。

值得注意的一点是,应用程序在执行main函数时,并不是所有的DSP/BIOS API函数都可以调用,其间有着相应的先后关系,这是因为,main函数启动的时候,DSP/BIOS并没有完成最终的初始化,因此,main函数对于DSP/BIOS 有些API函数的调用是受限的。 这里不得不提起DSP/BIOS的启动过程(对于Bootload暂且不谈):

1、初始化DSP:复位中断向量指向c_int00地址,DSP/BIOS程序从入口点c_int00开始运行。对C6000,初试化堆栈指针(B15)和全局页指针(B14)分别指向堆栈底部与.bss段的开始,控制寄存器AMR、IER和CSR也被初始化; 2、用.cinit段中的记录来初始化.bss段;

3、 调用BIOS_init初始化DSP/BIOS模块:BIOS_init执行基本的模块初始化,然后调用MOD_init宏分别初始化每个用到的模块;

4、处理.pinit表:.pinit表包含了初始化函数的指针;

5、调用应用程序main函数:在所有DSP/BIOS模块初始化之后,调用main函数。

在main函数中添加了必要的初始化代码。Main函数初始化之后CPU的控制权交给DSP/BIOS。

6、调用BIOS_start启动DSP/BIOS: BIOS_start函数是由配置工具产生的,包含在XXXcfg.snn文件中(XXX与用户对工程的起名相关,nn与使用的DSP型号相关),它负责使能DSP/BIOS模块并为每个用到的模块调用MOD_startup宏使其开始工作。 在这些工作完成之后,DSP/BIOS调用IDL_loop引导程序进入DSP/BIOS空闲循环,此时硬件和软件中断可以抢先空闲循环的执行,主机也可以和目标系统之间开始数据传输。 从DSP启动的过程来看,DSP/BIOS的初始化是分为两大阶段的,一个是位于main函数前面的BIOS_init中,一个是在main函数后面的BIOS_start中。这点让人很是疑惑main函数出现的作用,究竟什么样的API函数可以在main函数中执行呢?

这点必须弄清楚main函数前后两初始化阶段的具体作用,具体的细节可以查阅相关的技术文档,但是总体来说,BIOS_init所主要完成的是MEM模块的初始化工作,而BIOS_start负责的是使能全局中断、配置和启动定时器、打开线程调度、启动DSP/BIOS线程等。因此,在main函数中,可以调用实现动态存储器分配的函数:MEM_alloc、MEM_free;以及动态创建对象的API 函数:XXX_create、XXX_delete等。对于“假设硬件中断和定时器都已经使能的API”、或者可能引起阻塞的API函数都不可以在main函数中调用,例如CLK_gethtim、CLK_getltime、HWI_enable、HWI_disable、SWI_enable、SWI_diaable、TSK_disable、TSK_enable、SEM_pend、MBX_pend等。特别需注意的是,main函数中一定不能存在无限循环,否则整个DSP/BIOS程序将瘫痪;

但是对于使DSP/BIOS线程就绪的调度函数却允许在main函数中调用,例如SEM_post、SWI_post等,其实质还是在等BIOS_start进行完所有的初始化后再执行如上的调度操作。

因此可以明白一点的是,main函数穿插在BIOS的初始化过程中,为人工干预DSP/BIOS的启动提供了机会,使得BIOS的运作更具“个性化”。其间CUP的控制权从DSP/BIOS提交给用户,然后在返回给DSP/BIOS。

通过CCS烧写FLASH的方法 求助:FLASH的烧写工具在CCS中无法显示!

答: 步骤:右击CCS2图标-----属性----查找目标---找到一个comp_mgr的文件(就是CCS图标类似,但是头上有个喇叭的)双击打开----Texas Instruments----把那个加号打开,在ON-chip flash programme,前面选中就好了

通过CCS烧写FLASH的方法

TI公司提供了一个烧写FLASH的软件,但是那需要将程序编译后生成的OUT文件再转换成ROM格式;或者是先将应用程序编译后导出到一个二进制文件中,再通过CCS编程序从这个二进制文件中一个一个的读入并写进FLASH。


CCS开发DSP综合资料一 - 图文(6).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:2015年生物试剂现状研究及发展趋势

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: