DSP

DSP/BIOS 常用API总结

2019-07-13 12:48发布

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函数输出的 信息。 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语言中的print()函数。

SWI模块
SWI模块管理软件中断服务程序。这些软件服务程序 与HWI硬件中断服务程序有密切的联系。一般情况下,会 将日常的大多数处理函数放到这些软件中断中去处理。 所有的SWI共享一个堆栈,当SWI发生时,新的线程 会加栈顶,系统执行一次任务的切换。 每个SWI对象都设置一个16位的邮箱可以利用这个邮 箱有条件的启动这个软件中断。 所有的软件中断都是通过DSP/BIOS内核的API调用 来启动,所有SWI中常用的API都是实现包括启动软件中 断,改变软件中断的优先级等操作,SWI的API包括如下: SWI_disable, SWI_enable, SWI_create,SWI_getpri, 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() SWI_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位 启动软件中断,其中SWI_andn和SWI_or分别是对邮 箱值按位与和或操作。SWI_inc和SWI_dec分别是对邮箱 值家园和减一操作,SWI_post忽略对邮箱进行操作。 在这5个API函数中,其中SWI_or, SW