版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、DSP/BIOS 常用API总结,DSP/BIOS API使用目的 DSP/BIOS 内核提供大约150个API函数调用,而且几乎都可以使用C或C+语言直接调用。通过这些API,用户可以完成硬件中断的管理,软件中断的启动,任务的切换,各个线程之间的同步和数据通信。对DSP/BIOS的掌握,也就是熟练的使用这些API调用。,几种常见的模块的API调用 LOG 模块 SWI 模块 TSK 模块 SEM 模块,LOG模块 当目标程序执行时,可以使用LOG模块中的事件日志来记录实时的事件。运行程序后在CCS的DSP/BIOS选项的Message Log ,可以看到通过LOG_printf函数输出的信息
2、。 LOG模块常用的API函数包括 LOG_disable,LOG_enable,LOG_printf,LOG_disable(LOG_Obj *log) LOG_disable 将关闭指定对象的日志记录功能,这时日志缓冲区的内容将不会被更新 LOG_enable(LOG_Obj *log) 与LOG_disable函数相反,LOG_enable函数将允许日志可以记录事件。DSP/BIOS默认情况下日志记录功能是打开的。 LOG_printf(LOG_Obj log,String format, Int arg0) LOG_printf可以在指定的LOG窗口显示消息,等效于标准C语言中的pri
3、nt()函数。,SWI模块 SWI模块管理软件中断服务程序。这些软件服务程序与HWI硬件中断服务程序有密切的联系。一般情况下,会将日常的大多数处理函数放到这些软件中断中去处理。 所有的SWI共享一个堆栈,当SWI发生时,新的线程会加栈顶,系统执行一次任务的切换。 每个SWI对象都设置一个16位的邮箱可以利用这个邮箱有条件的启动这个软件中断。 所有的软件中断都是通过DSP/BIOS内核的API调用来启动,所有SWI中常用的API都是实现包括启动软件中断,改变软件中断的优先级等操作,SWI的API包括如下: SWI_disable, SWI_enable, SWI_create,SWI_getpr
4、i, SW_getmbox SWI_andn, SWI_or , SWI_dec, SWI_inc , SWI_post, SWI_raisepri , SWI_restorepri, SWI_self,SWI_disable(void) SWI_enable(void) SWI_create(SWI_attrs attrs) SWI_disabel调用后将禁止软件中断,SWI_enable调用后将开启软件中断,必须在已调用SWI_disable后才能调用,一般组合使用保护重要代码,如下: SWI_disable() /*需要禁止软件中断和线程切换的重要代码*/ SWI_enable() SW
5、I_create 是用于动态的创建一个软件中断,也可以在配置文件中静态创建。 SWI_getpri(SWI_Obj *swi) SWI_getmbox(Void) SWI_getpri用于获得SWI对象的优先级 SWI_getmbox用于获得当前SWI对象的邮箱值,SWI_andn(SWI_Obj *swi ,Uns mask) SWI_or(SWI_Obj *swi ,Uns mask) SWI_inc(SWI_Obj *swi ) SWI_dec(SWI_Obj *swi ) SWI_post(SWI_Obj *swi ) 其中SWI_Obj 软件中断句柄 ,Uns 无符号8位 启动软件中
6、断,其中SWI_andn和SWI_or分别是对邮箱值按位与和或操作。SWI_inc和SWI_dec分别是对邮箱值家园和减一操作,SWI_post忽略对邮箱进行操作。 在这5个API函数中,其中SWI_or, SWI_inc, SWI_post调用时就能启动软件中断,而SWI_dec和SWI_post 必须等邮箱变为0时启动软件中断。,SWI_raisepri(Umask) SWI_restorepri(Uns key) SWI_self(Void) SWI_raisepri 用于提高SWI软件中断的优先 SWI_restorepri 用于恢复软件中断的优先级。 SWI_self 返回当前软件中
7、断地址 使用举例如下: /* raise priority to the priority of swi_1*/ key= SWI_raisepri(SWI_getpri(,TSK模块 TSK模块中提供一系列可以使用的函数,这些函数通过TSK_Handle句柄访问和管理任务对象。各个任务对象可以独立运行,也可以并行运行。DSP/BIOS的任务管理模块根据各对象优先级安排运行,并通过切换函数完成一项任务到另一项任务的转换。 TSK的常用API函数包括如下: TSK_create,TSK_delete,TSK_disable,TSK_enable, TSK_getname,TSK_gepri,TS
8、K_self, TSK_setpri,TSK_sleep,TSK_stat,TSK_time, TSK_yield ,TSK_exit,,Tsk的工作状态,Tsk_yield 使另一相同优先级的任务进入Ready状态,TSK_create(fxn,attrs,arg) TSK_delete() fxn 指向任务的指针 attrs 任务参数指针 arg 任务参数 TSK_create用来动态创建一个新的任务对象,TSK_delete用来删除一个指针 。 如下: task=TSK_create(Fxn)myFxn,NULL); TSK_delete(task); TSK_disable(void)
9、 TSK_enable(void) 这两个函数用来关闭和开启任务调动机制。,TSK_getname(TSK_handle task) TSK_gepri(TSK_handle task) TSK_self(void) TSK_setpri(TSK_handle task, newpri) TSK_getname返回任务的名字 TSK_gepri返回指定任务的优先级 TSK_self返回当前任务句柄 TSK_setpri可以指定任务的优先级 举例: TSK_setpri(task,10) 把task的优先级设置为10,TSK_sleep(ntick) TSK_stat(TSK_handle ta
10、sk,TSK_Stat *statbuf) TSK_time(void) TSK_yield (void) TSK_exit(void) TSK_sleep 把当前任务从运行转变为暂停,延迟ntick个时钟后继续执行 TSK_stat 返回任务的属性参数和状态信息,返回到第二个参数 TSK_time 返回系统告警时钟的当前值 TSK_yield 强制实现任务切换,同优先级或更高等级的任务会执行 TSK_exit 中止当前任务的运行,SEM模块 使用一组旗语对象的句柄来管理任务间同步和通信,通常使用SEM_pend函数阻塞任务的运行,等待旗语post后,继续运行。 通常的API函数有如下: SEM_create,SEM_delete, SEM_pend, SEM_post sem=SEM_create(count,attrs) SEM_create实现动态创建一个新的旗语对象,当然也可以在配置文件中实现静态的配置 SEM_delete(sem) 删除指定的旗语,SEM_pend(sem,tim
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 初中七年级地理上学期期末知识点复习教学设计(湘教版)
- 超声波测距报警装置系统制作课程设计
- 高中化学必修第一册物质的分类教学设计
- 初中计算技巧课程设计
- 灰度化代码示例课程设计
- 钨极氩弧焊(TIG)模拟试题(新版)
- 电气工程师(供配电)历年真题(完整版)
- 播放太极拳教学课程设计
- AI换脸动画制作技巧课程设计
- 彩色气球思维课程设计
- 浙江健立化学有限公司年产2万吨六氟磷酸锂、5000吨双氟磺酰亚胺锂、2000吨碳酸亚乙烯酯、5万吨锂电池电解液新能源材料建设项目环评报告
- SCR脱硝工艺计算书
- 离婚登记申请受理回执单模板
- 商周服饰-课件
- 最新老年高血压及其治疗课件
- LabVIEW-编程思想(第2版)
- RITTAL威图空调中文说明书
- 雕塑工程预算报价参考表实用文档
- 《红楼梦》(教学讲解课件)
- 2022年泸州市兴泸水务(集团)股份有限公司招聘笔试试题及答案解析
- 中水回用深度处理系统操作规程
评论
0/150
提交评论